Схемотехника и программный код системы Водный страж версия 2023.09

Схемотехника одноканального устройства Водный страж

Программный код устройства Водный страж

#include <SoftwareSerial.h>
char c1,c2,c3;
int analogPinA7= 7;
int analogPinA1;
int raw= 0;
int Vin= 5;
float Vout= 0;
float R1= 1000;
float R2= 0;
float buffer= 0;
int A=0;
// Создать объект программного последовательного порта для связи с SIM900
// Tx и Rx SIM900 подключены к выводам 7 и 8 Arduino
SoftwareSerial mySerial(2, 3);

void setup()
{
digitalWrite (A1, LOW);
// Начать последовательную связь Arduino и Arduino IDE (монитор последовательного порта)
Serial.begin(19200);
// Начать последовательную связь Arduino и SIM900
mySerial.begin(19200);

Serial.println("Initializing...");
pinMode(4, OUTPUT);
digitalWrite(4,LOW);
delay(3000);
digitalWrite(4,HIGH);
delay(2000);
digitalWrite(4,LOW);
delay(10000);
Serial.println("Done...");
// Рукопожатие с SIM900
mySerial.println("AT");
updateSerial();
mySerial.println("AT+CMGF=1");
updateSerial();
mySerial.println("AT+CMGS=\"+79608082756\"");
updateSerial();
mySerial.print("Gotov (Ready)");
updateSerial();
mySerial.write(26);
A=10;
}

void loop()
{
raw= analogRead(analogPinA7);
if(raw)
{
buffer= raw * Vin;
Vout= (buffer)/1024.0;
buffer= (Vin/Vout) -1;
R2= R1 * buffer;
Serial.print("Vout: ");
Serial.println(Vout);
Serial.print("R2: ");
Serial.println(R2);
Serial.print("A: ");
Serial.println(A);
if(R2 < 2200 or R2 > 4200)
{
if (A == 4)
{
mySerial.println("AT+CMGS=\"+79608082756\"");
updateSerial();
mySerial.print("Trevoga (Alarm)");
updateSerial();
mySerial.write(26);
Serial.print("A: ");
Serial.println(A);
goto s96;
}
if (A > 4)
{
goto s96;
}
digitalWrite(A1, HIGH);
mySerial.println("ATD+ +79608082756;");
updateSerial();
delay(20000); // ждать 20 секунд...
A=(A+1);
Serial.print("A: ");
Serial.println(A);
mySerial.println("ATH"); // повесить трубку
updateSerial();
}
else {digitalWrite(A1, LOW);}
delay(500);
}

 

 

s96:
if(R2 < 2200 or R2 > 4200){A=A+1;}
if(A>200){A=6;}
updateSerial();
}
void updateSerial()
{
delay(500);
while (mySerial.available())
{


c3=c2;c2=c1;
c1=mySerial.read();
if ((c3=='1')&&(c2=='_')&&(c1=='1'))
{
Serial.println("Ohrana (Armed)");
mySerial.println("AT+CMGS=\"+79608082756\"");
updateSerial();
mySerial.print("Ohrana (Armed)");
updateSerial();
mySerial.write(26);
A=0;
digitalWrite(A1, HIGH);
delay(50);
digitalWrite(A1, LOW);
}
if ((c3=='1')&&(c2=='_')&&(c1=='2'))
{
Serial.println("Snyat s Ohrany (Disarmed)");
mySerial.println("AT+CMGS=\"+79608082756\"");
updateSerial();
mySerial.print("Snyat s Ohrany (Disarmed)");
updateSerial();
mySerial.write(26);

A=6;
digitalWrite(A1, HIGH);
delay(50);
digitalWrite(A1, LOW);
delay(500);
digitalWrite(A1, HIGH);
delay(50);
digitalWrite(A1, LOW);
}
if ((c3=='1')&&(c2=='_')&&(c1=='3'))
{
Serial.println("Status");
if ((A==6)||(A==10))
{
mySerial.println("AT+CMGS=\"+79608082756\"");
updateSerial();
mySerial.print("Snyat s Ohrany (Disarmed)");
updateSerial();
mySerial.write(26);
}
if (A==0)
{
mySerial.println("AT+CMGS=\"+79608082756\"");
updateSerial();
mySerial.print("Ohrana (Armed)");
updateSerial();
mySerial.write(26);
}
if ((A!=6)||(A!=10)||(A!=0))
{
mySerial.println("AT+CMGS=\"+79608082756\"");
updateSerial();
mySerial.print("Trevoga (Alarm)");
updateSerial();
mySerial.write(26);
}
}
}
}