Kod:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(11,12); // (Rx,Tx > Tx,Rx)
char incomingByte;
String inputString;
int relay = 5;// Wyjście do sterowania przekaźnikiem
int relaya = 4;
void setup()
{
pinMode(2,INPUT);
pinMode(relay, OUTPUT);
pinMode(relaya,OUTPUT);
digitalWrite(relay, LOW); // Stan wyjścia przekaźnikowego po uruchomieniu układu
digitalWrite(relaya,LOW);
Serial.begin(9600);
mySerial.begin(9600);
attachInterrupt(digitalPinToInterrupt(2),alarm,RISING);
while(!mySerial.available()){
mySerial.println("AT");
delay(1000);
Serial.println("Connecting...");
}
Serial.println("Connected!");
mySerial.write("AT+CMGF=1\r\n");
delay(100);
mySerial.write("AT+CMGS=\"+48xxxxxxxx[attachment=3]20180517_163038.jpg[/attachment]\"\r\n");
delay(100);
mySerial.write("START SYSTEMU");
delay(100);
mySerial.write((char)26);
delay(100);
mySerial.println("AT+CMGF=1"); //Ustawiamy SMSy w tryb tekstowy
delay(1000);
mySerial.println("AT+CNMI=1,2,0,0,0"); //Procedura, która obsługuje nadchodzące wiadomości
delay(1000);
mySerial.println("AT+CMGL=\"REC UNREAD\""); // Komdenda odczytu nowych wiadomości
}
void alarm(){
mySerial.write("AT+CMGF=1\r\n");
delay(1000);
//wpisujemy numer telefonu pod który nasze urządzenie ma wysyłaś SMS
mySerial.write("AT+CMGS=\"+485xxxxxxxx\"\r\n");
delay(1000);
//treść wiadomości w przypadku alarmu
mySerial.write("ALARM");
delay(1000);
mySerial.write((char)26);
delay(1000);
}
void loop()
{
if(mySerial.available()){
delay(100);
// Serial Buffer
while(mySerial.available()){
incomingByte = mySerial.read();
inputString += incomingByte;
}
delay(10);
Serial.println(inputString);
inputString.toUpperCase(); // Zmiana wszystkich liter na wielkie w odebranej wiadomości
//turn RELAY ON or OFF
if (inputString.indexOf("LON") > -1){
digitalWrite(relay, HIGH);
}
if (inputString.indexOf("LOFF") > -1){
digitalWrite(relay, LOW);
}
delay(50);
if (inputString.indexOf("WLA") > -1){
digitalWrite(relaya, HIGH);
}
if (inputString.indexOf("WYA") > -1){
digitalWrite(relaya, LOW);
}
delay(50);
// Tutaj kasujemy wiadomości w modemie, aby oszczędzać pamięć
if (inputString.indexOf("OK") == -1){
mySerial.println("AT+CMGDA=\"DEL ALL\"");
delay(1000);}
inputString = "";
}
}
Witam.
Mam złożony układ na podstawie tego tematu
https://majsterkowo.pl/alarm-z-powiadom ... s-arduino/
dodatkowo "dorzuciłem" sterowanie smsem 2 wyjściami z arduino D4 i D5.Za pomocą komend
"WLA" stan wysoki dla D4
"WYL" stan niski dla D4
"LON" stan wysoki dla D5
"LOFF" stan niski dla
Wyjście D4 daje napięcie zasilające na czujnik PIR ma to być taki wyłącz/włącz tego "alarmu"
Wiem ,że kod jest słabiutki bo już były takie opinie ale jak na moje możliwości .....
Układ składa się z SIM800l ,konwerter poziomów logicznych,arduino nano,2 regulatory napięcia i to wszystko zasilane 2 aku Li-Ion.
Problem polega na tym ,że nie zawsze ten układ działa a ja nie wiem o co chodzi.Wgrywam w/w kod do arduino i po chwili otzrymuje smsa "START SYSTEMU
Wysyłam komendę np. "WLA" i nic się nie dzieje
Ale kiedy np. na arduino wgram jakiś tam inny kod a potem znowu wgram ten w/w no to za którymś tam razem układ DZIALA