Sim800l: как достоверно узнать состояние сети - PullRequest
0 голосов
/ 22 марта 2020

В Sim-800L AT-Commands Guide есть много различных команд состояния, которые должны сказать, какое состояние имеет.

Например:

AT+CPAS - check if device is ready
AT+CGREG? - check registration status in network
AT+CGATT? - check if device "attached to network"
AT+CSQ - get signal level

Но в некоторых В случаях, когда ответы на эти команды могут быть «ОШИБКА» или вообще не отвечать Я использовал мигающий светодиод на Sim800L для определения его состояния.

Светодиод имеет три частоты мигания:

  1. Быстрое мигание - соединение GPRS активно
  2. Средняя скорость мигает - сетевое соединение еще не установлено
  3. Медленный блинг - Устройство подключено к сети (но не GPRS)

Я могу использовать фотодиод и "чтение" блинга светодиода, или Я могу подключить вывод питания светодиода к аналоговому выводу Arduino и прочитать его напряжение. Затем я могу подсчитать, насколько быстро мигает светодиод, и определить, в каком состоянии находится Sim800L.

Но как мне получить этот уровень надежности без использования такого костыля?

1 Ответ

0 голосов
/ 22 марта 2020

При быстром значении означает 1 se c, вы можете отправить команду AT, например, пять раз и принять 3 ответа без ошибок в качестве правильного результата. См. Псевдокод

uint8_t  errorCount = 0;
for (uint8_t i=0;i<5;i++){
 .... send AT command ... 
if (response == "error")  errorCount++;
if (errorCount >=3) errorHandling();
}
 ... process successful AT command ...

или ваш подход HW со светодиодом к аналоговому выводу

...