Leo + SIM800 - не приходят SMS
- Войдите на сайт для отправки комментариев
Вс, 11/11/2018 - 11:31
Здравствуйте
Использую GPRS шилд от Амперки с платой Leonardo.
Режим работы такой, что большую часть времени модем выключен и включается раз в 5-7 минут примерно на 1-2 минуты.
SMS, которые отправлены на модем когда он включен - доходят. Другие - теряются.
SMS получаю командой "AT+CMGL=ALL", т.е. уже из хранилища, а не в прямом эфире. Постоянно слушать модем не могу - устройство много чего делает параллельно. Также установлена настройка уведомления об SMS - AT+CNMI=2,0,0,0,0. И выставлен текстовый формат SMS (не PDU).
Подскажите пожалуйста, в чем может быть дело.
Код процедуры по разбору SMS:
void CheckSMS() { Serial.println(F("Start checking SMS")); // Serial1.println("AT+CMGL=\"REC UNREAD\""); Serial1.println("AT+CMGL=\"ALL\""); long ts_temp = millis(); String str = ""; Serial.println(F("Waiting for answer")); bool fl1 = false; // в течение 15 секунд ждем ответа от модема и разбираем этот ответ построчно while (millis() - ts_temp < 15000) { while (Serial1.available()) { char c = Serial1.read(); Serial.write(c); str += c; if (c == '\n') { // отправляем строчку на парсинг, ищем управляющую команду, если она есть, то выставляем флаг, что получили хоть одну команду (для дальнейшегшо удаления всех смс) if (ParseSMS(str) == true) { fl1 = true; }; str = ""; } } } delay(100); Serial.println(F("End checking SMS")); // если получена хоть одна смс с управляющей командой - удаляем все if (fl1 == true) { DebugOut(F("Deleting SMS")); // удаляем все смс Serial1.println(F("AT+CMGD=1,4")); long ts_t = millis(); while (millis() - ts_t < 5000) { while (Serial1.available()) { char c = Serial1.read(); Serial.write(c); } } } }
Питание нормальное - от внешнего БП до 2 А.
Отправка SMS, получение в период включенного состояния и периодическая отправка информации по HTTP проходит четко без сбоев (пока пробовал длительную работу до 10 часов).
Попробуйте на простейшем примере, выводчщим все из модема в консоль получить все смс - выводятся?
Думаю дело в настройке сохранения смс, но далеко от компа - работающие параметры не посмотрю.
Да, спасибо. Сейчас попробую на элементарных скетчах.
Напишу.
Кажется, проблема решилась.
Основных причины две:
1) GSM во включенном состоянии надо держать дольше (более 30-40 секунд). СМС приходят с задержкой, когда шилд выключен во время отправки СМС.
2) "AT+CNMI=2,0,0,0,0" - настройка не сохраняется. Надо каждый раз устанавливать при включении шилда.
Всем спасибо :)