pokúšam sa zostaviť GSM alarm k jazierku, ktorý sa upozorní keď dôjde v výpadku napájania elektrickej energie so sieti. Inšpiroval som sa týmto článkom: https://www.hackster.io/mbraccagni/main ... tor-7e8b2c.
Všetko funguje ako má keď je to zapojenie na zdroji. Keď odpojím drôt z D2 tak mi pošle SMS že došlo k výpadku napájania a keď ho naspať pripojím tak mi pošle ďalšiu, že napájanie opäť v prevádzke. Problém nastane keď to beži na 9V baterku. Zapojil som to podľa schémy na priloženom linku, ale keď odpojím napájanie a obvod napája 9V baterka tak pri poslaní SMS sa GSM shield vypne. Skúšal som dať aj dve 9V baterky paralelne ale ani to nepomohlo.
Vedeli by ste mi poradiť co mám robiť aby som to rozchodil?
Toto je môj zdrojový kód:
Kód: Vybrat vše
#include <SoftwareSerial.h>
SoftwareSerial mySerial(7, 8);
char incoming_char=0;
byte allarmSent = LOW;
void setup()
{
Serial.begin(9600);
pinMode(9,OUTPUT);
digitalWrite(9, HIGH);
delay(2000);
digitalWrite(9, LOW);
delay(5000);
pinMode(2,INPUT);
mySerial.begin(9600);
delay(30000);
mySerial.println("AT");
updateSerial();
mySerial.println("AT+CMGF=1");
updateSerial();
//SMSpripraveny();
}
void loop()
{
if(mySerial.available() >0)
{
incoming_char=mySerial.read();
Serial.print(incoming_char);
}
while (digitalRead(2) == HIGH) {}
if(digitalRead(2) == LOW && allarmSent == LOW) {
delay(1000);
if(digitalRead(2) == LOW) SMSallarm();
}
while (digitalRead(2) == LOW) {}
if(digitalRead(2) == HIGH && allarmSent == HIGH) SMSallarmOFF();
}
void SMSpripraveny()
{
mySerial.println("AT+CMGS=\"+421950598435\"");
updateSerial();
mySerial.print("Alarm je v prevadzke.");
updateSerial();
mySerial.write(26);
}
void SMSallarmOFF()
{
mySerial.println("AT+CMGS=\"+421950598435\"");
updateSerial();
mySerial.print("Napajanie zapnute, jazierko je opat v prevadzke.");
updateSerial();
mySerial.write(26);
allarmSent = LOW;
}
void SMSallarm()
{
mySerial.println("AT+CMGS=\"+421950598435\"");
updateSerial();
mySerial.print("vypadok el. napajania.");
updateSerial();
mySerial.write(26);
allarmSent = HIGH;
}
void updateSerial()
{
delay(500);
while (Serial.available())
{
mySerial.write(Serial.read());
}
while(mySerial.available())
{
Serial.write(mySerial.read());
} }