Arduino SIM800l проблема отправки СМС
- Войдите на сайт для отправки комментариев
Ср, 27/02/2019 - 10:09
Добрый день. Пытаюсь написать код, в котором по смс включаются реле. Управление работает, но при запросе - ошибка при отправке СМС со статусом.
#include <SoftwareSerial.h> SoftwareSerial SIM800(12, 13); String textMessage; String SistemaState = "LOW"; String ObogrevState = "LOW"; String NasosState = "LOW"; const int sistema = 16; const int obogrev = 9; const int nasos = 10; void setup() { pinMode(sistema, OUTPUT); pinMode(obogrev, OUTPUT); pinMode(nasos, OUTPUT); digitalWrite(sistema, LOW); digitalWrite(obogrev, LOW); digitalWrite(nasos, LOW); Serial.begin(19200); SIM800.begin(19200); delay(20000); Serial.print("SIM800 ready..."); SIM800.print("AT+CMGF=1\r"); delay(100); SIM800.print("AT+CNMI=2,2,0,0,0\r"); delay(100); } void loop(){ if(SIM800.available()>0){ textMessage = SIM800.readString(); Serial.print(textMessage); delay(10); } if(textMessage.indexOf("ON")>=0){ // Turn on relay and save current state digitalWrite(sistema, HIGH); SistemaState = "on"; Serial.println("Sistema set to ON"); textMessage = ""; } if(textMessage.indexOf("OFF")>=0) { digitalWrite(sistema, LOW); SistemaState = "off"; Serial.println("Sistema set to OFF"); textMessage = ""; } if(textMessage.indexOf("STATUS")>=0){ String message = "System is " + SistemaState; sendSMS(message); Serial.println("System state resquest"); textMessage = ""; } } void sendSMS(String message){ SIM800.print("AT+CMGF=1\r"); delay(100); SIM800.println("AT + CMGS = \"+79026218696\""); delay(100); SIM800.println(message); delay(100); SIM800.println((char)26); delay(100); SIM800.println(); delay(5000); }
Ответ от системы такой:
+CMT: "+79026218696","","19/02/27,08:17:23+12"
STATUS
System state resquest
AT+CMGF=1
OK
AT + CMGS = "+79026218696"
ERROR
System is on
Подскажите, пожалуйста, где накосячил. Спасибо
попробуйте убрать 34 и 72 строки
вместо 31ой строки
попробуйте убрать 34 и 72 строки
вместо 31ой строки
Так даже управление не работает
ошибка в строке отправки СМС 75 уберите все лишние пробелы
скетч первоначальный возьмите
Здравствуйте... пробелы тут не при чем, у себя проверил.. работает если задержки увеличить после SIM800.println(...) до 300, 100 - не работает!!!
И ещё, сталкивался с проблемами работы модемов (SIM900, SIM800) на SoftSerial на скорости больше 9600... Отправка куда нигде, прием сообщений сплошные глюки 1раз нормально примерно из 10...
Ошибка в 62 строке: String(SistemaState). И все заработало. Спасибо за подсказки.
Может подскажите почему в ответном смс, после состояния, идет пустая строка?
Загружаю ваш код, ничего не меняю кроме delay-ев, все работает, в ответ на STATUS приходит System is LOW(on) ,без всяких пустых строк.. и скорость порта модема у меня 9600
Завтра проверю. Спасибо
Работает и так и так