• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

SIM800L перезагружает ESP12

MihaNN52

Member
Такая проблема. Подключаю ESP12 b SIM800L
SIM800L подключен к пинам 13 15 SoftwareSerial
После отправки СМС ESP перезагружается.
Думал что дело в кривой библиотеке sim800l.h
Перешел на АТ команды и ситуация не изменилась.
Для отправки использую такой пример

Код:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); // RX, TX
void setup() {
  Serial.begin(19200);  //Скорость порта для связи Arduino с компьютером
  Serial.println("Goodnight moon!");
  mySerial.begin(19200);  //Скорость порта для связи Arduino с GSM модулем
  mySerial.println("AT");
}

void loop() {
  if (mySerial.available())
    Serial.write(mySerial.read());
  if (Serial.available())
    mySerial.write(Serial.read());
}

void sms(String text, String phone) {
  Serial.println("SMS send started");
  mySerial.println("AT+CMGS=\"" + phone + "\"");
  delay(30;
  mySerial.print(text);
  delay(30);
  mySerial.print((char)26);
  delay(30);
  Serial.println("SMS send finish");
  delay(30);
}
Как думаете в чем может быть причина?
Пишу в ардуино ide
 

MihaNN52

Member
Виктор, ESP ведет себя странно)
Питание в норме. Питаю от лабораторного блока питания.
Падение происходит уже после отправки смс.
Сразу после подтверждения отправки.
приходит
текст смс
+GMSG: 104

ОК

После этого идет перезагрузка
смс доходят.
 

Victor

Administrator
Команда форума
ESP ведет себя странно)
А как вы парсите ответ от SIM800?
[inline]String[/inline] в Arduino часто приводит к утечкам памяти. Повставляйте в код вывод информации о свободной памяти [inline]ESP.getFreeHeap()[/inline]
Попробуйте вообще не парсить ответ от модуля.
Если проблема останется, то настройте отладчик и посмотрите что происходит
 

MihaNN52

Member
[00][00][00]
ets Jan 8 2013,rst cause:4, boot mode:(3,6)

wdt reset
load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
v180000ca
~ld
ьФл‹№ҐќЎСЃmoon!
[00][00][00][00][00][00][00][00]
ets Jan 8 2013,rst cause:4, boot mode:(3,6)

wdt reset
load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
v180000ca
~ld
ьФл‹№ҐќЎСЃmoon!
[00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00]


вот такие сообщения получаю с таким вот скетчем... ни чего не отправляю и не получаю
#include <SoftwareSerial.h>
SoftwareSerial mySerial(13, 15); // RX, TX
void setup() {
Serial.begin(115200); //Скорость порта для связи Arduino с компьютером
Serial.println("Goodnight moon!");
mySerial.begin(115200); //Скорость порта для связи Arduino с GSM модулем
mySerial.println("AT");
}

void loop() {
if (mySerial.available())
Serial.write(mySerial.read());
if (Serial.available())
mySerial.write(Serial.read());

}
 

Victor

Administrator
Команда форума
Везде вроде уже написано, что [inline]SoftwareSerial[/inline] не работает со скоростями выше 57600. Рекомендовано 9600. А вы его на 115200 пытаетесь заставить стабильно работать, но это невозможно.
 

MihaNN52

Member
Точно.
Тут дело в чем я делаю проект уже пару месяцев. Все работало на столе и отправляло нормально смс. Потом в один момент симка теле 2 перестала ловить сеть, при этом в телефоне она работает. Поменял на мегафон, сеть находит сразу, все норм. Но появился такой вот баг с падением после отправки смс.
В итоге по ошибке я нашел тему на этом форуме про сторожевые таймеры и я взял от туда две функции, ни черта не понимая что они делают.
ESP.wdtDisable(); в сетап и ESP.wdtFeed(); в цикл. И все заработало. Причем я не нашел что то что бы не работало, и веб сервер работает и MQTT , все принимает и отправляет. Виктор, что это за функции и зачем они нужны и как думаешь почему с ними все заработало? На сколько мне хватило мозгов понять это некий режим перезагрузки когда контроллер зависает. Получается в случае зависона он сам уже не перезагрузится.
 

Victor

Administrator
Команда форума
Получается в случае зависона он сам уже не перезагрузится.
не, watchdog кривой, не работает нормально.
похоже SMS стали дольше отправляться, поэтому wdt и срабатывает.
не ждите ответа от модуля в бесконечном цикле
 

MihaNN52

Member
Пробовал не ждать ответа.
Пробовал делать так чтоб наоборот ждал больше чем надо, загонял в цикл и нормально он там себя чувствовал секунд по 40-50 при этом ничего не падало. Но стоит придти ответу - все хана.)
Т.е если ответ приходит за 2 сек падение на второй секунде, если ответ на 10 то упадет на 10-й. Надо бланком попробовать прошить наверное.
 
Сверху Снизу