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ой строки
SIM800.print("AT+CMGF=1\r\n");попробуйте убрать 34 и 72 строки
вместо 31ой строки
SIM800.print("AT+CMGF=1\r\n");Так даже управление не работает
ошибка в строке отправки СМС 75 уберите все лишние пробелы
скетч первоначальный возьмите
SIM800.println("AT+CMGS=\"+79026218696\"");Здравствуйте... пробелы тут не при чем, у себя проверил.. работает если задержки увеличить после SIM800.println(...) до 300, 100 - не работает!!!
И ещё, сталкивался с проблемами работы модемов (SIM900, SIM800) на SoftSerial на скорости больше 9600... Отправка куда нигде, прием сообщений сплошные глюки 1раз нормально примерно из 10...
Ошибка в 62 строке: String(SistemaState). И все заработало. Спасибо за подсказки.
Может подскажите почему в ответном смс, после состояния, идет пустая строка?
Загружаю ваш код, ничего не меняю кроме delay-ев, все работает, в ответ на STATUS приходит System is LOW(on) ,без всяких пустых строк.. и скорость порта модема у меня 9600
Завтра проверю. Спасибо
Работает и так и так