• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

SIM800L не уходит в сон

Vypra

Member
Я пользовался на SIM800L режимом сна AT+CSCKL=2 . Но модуль периодически на секунду искал сеть и жрал 60 мА в эту секунду. Не экономно.
Решил сделать сон через AT+CSCKL=1, на пин DTR подаю высокий уровень с GPIO 16 Node MCU (pinMode(16, OUTPUT); digitalWrite(16, HIGH);)
После модуль как-бы снижает потребление, на AT команды не отвечает, но на него можно позвонить и в покое жрет 17мА.
По даташиту во сне должно быть 1мА.
Как его заставить заснуть?
 

nikolz

Well-known member
Я пользовался на SIM800L режимом сна AT+CSCKL=2 . Но модуль периодически на секунду искал сеть и жрал 60 мА в эту секунду. Не экономно.
Решил сделать сон через AT+CSCKL=1, на пин DTR подаю высокий уровень с GPIO 16 Node MCU (pinMode(16, OUTPUT); digitalWrite(16, HIGH);)
После модуль как-бы снижает потребление, на AT команды не отвечает, но на него можно позвонить и в покое жрет 17мА.
По даташиту во сне должно быть 1мА.
Как его заставить заснуть?
недавно игрался с этим модулем.
Если модуль ищет сеть каждую секунду, то это указывает на слабый источник питания (просадку напряжения)
Режим работы должен быть таким:
светодиод мигает 1 раз в секунду и модуль ищет сеть
Когда найдет то сообщит что готов, sms готов,
После этого модуль будет мигать 1 раз в две секунды и оставаться в ожидании команд.
Если команд не будет то через 5 секунд пойдет спать.
 

Vypra

Member
Собственно схема и тестовый код.
Модуль команды принимает и отвечает.
Что заметил:
1. Если отключить СИМ800, ESP8266 в режиме сна ест у меня 2-3мА. Показывает по разному при нескольких замерах.
2. Если замерить ток только на СИМ800 во сне - 10-17 мА. Хотя должно быть 1мА.
3. Если включить все и замерить потребление всего в режиме сна - 22 мА.
Нестыковочка по потреблению. Такое чувство, что СИМ800 что-то коротит. пин DTR на SIM800 может коротить? Может я не так подключил? Или что-то подгорело уже?


Shema.jpg

//***************************************************************************************************************
String _response = ""; // Переменная для хранения ответа модуля
//***************************************************************************************************************

void setup()
{
pinMode(16, OUTPUT);
digitalWrite(16, LOW);
}

void loop()
{
delay (15000); // время для поиска сети SIM800
sendATCommand("AT+CSCLK=1", true); // режим сна SIM800
sendATCommand("AT&W", true); // запись режима сна SIM800
digitalWrite(16, HIGH); // DTR высокий, SIM800 в сон.
ESP.deepSleep(0); // ESP8266 в сон
}

String sendATCommand(String cmd, bool waiting)
{
Serial.println(cmd); // Пишем команду в монитор порта ПК для себя
delay (300);
Serial.swap(); // Переключаемся на пины SIM800
Serial.flush();
delay (300);
String _resp = ""; // Переменная для хранения результата
Serial.println(cmd); // Даем команду SIM800
if (waiting) // Если необходимо дождаться ответа...
{
_resp = waitResponse(); // ... ждем, когда будет передан ответ
}
else
{
Serial.swap();
Serial.flush();
delay (300);
}
return _resp; // Возвращаем результат.
}

//***************************************************************************************************************
String waitResponse() // Функция ожидания ответа и возврата полученного результата
{
String _resp = ""; // Переменная для хранения результата
unsigned long _timeout = millis() + 10000; // Переменная для отслеживания таймаута (10 секунд)
do
{ delay(0);

if (millis() > _timeout )
{
Serial.swap(); // Переключаемся на монитор порта ПК
Serial.flush();
delay (300);
Serial.println("Timeout..."); // печатаем Timeout... в монитор порта ПК
break;
}

if (Serial.available())
{
_resp = Serial.readString(); // читаем ответ SIM 800
_response = _resp;
Serial.swap(); // Переключаемся на монитор порта ПК
Serial.flush();
delay (300);
Serial.println(_resp); // печатаем ответ SIM 800 в монитор порта ПК
break;
}
}
while (1) ; // Просто событие, которое не наступит
return _resp; // ... возвращаем результат. Пусто, если проблема
}
 

Vypra

Member
Странно себя ведет. Только что потребление всей системы было 5-6 мА во сне. Я обрадовался. Перезагрузил пару раз для закрепления и снова 22 мА. Не пойму что не дает спать.
 

nikolz

Well-known member
Странно себя ведет. Только что потребление всей системы было 5-6 мА во сне. Я обрадовался. Перезагрузил пару раз для закрепления и снова 22 мА. Не пойму что не дает спать.
1)для тестирования лучше подключить к PC
2) попробуйте включить без ESP
3) включите сначала Sim, а потом ESP
------------
режим надо запомнить иначе будет сброшен при выключении
 

nikolz

Well-known member
и еще. NODEMCU много кушает во сне так как включен CH340. Чтобы кушал мало надо его отключать
либо взять ESP-12
 

Vypra

Member
и еще. NODEMCU много кушает во сне так как включен CH340. Чтобы кушал мало надо его отключать
либо взять ESP-12
Отсоединил все и загнал в сон саму Node MCU V3. Да, жрет на CH340 6мА, на СР2102 9мА.
Хорошо, согласен. В будущем сделаю на самой ESP-12.
Это половина от общего потребления.
Еще половина SIM800. Ну никак меньше 10-11 мА не получается.
Делаю режим CSCLK=2, сохраняю. Отсоединяю от Node MCU, перезагружаю. По идее если режим сна записан, нет звонков и команд, он после 5 сек сам в сон уходит. После включения питания запускается, ищет сеть - 40-50мА, а потом 10-11 мА сам SIM800. Сдаюсь.
 

nikolz

Well-known member
Отсоединил все и загнал в сон саму Node MCU V3. Да, жрет на CH340 6мА, на СР2102 9мА.
Хорошо, согласен. В будущем сделаю на самой ESP-12.
Это половина от общего потребления.
Еще половина SIM800. Ну никак меньше 10-11 мА не получается.
Делаю режим CSCLK=2, сохраняю. Отсоединяю от Node MCU, перезагружаю. По идее если режим сна записан, нет звонков и команд, он после 5 сек сам в сон уходит. После включения питания запускается, ищет сеть - 40-50мА, а потом 10-11 мА сам SIM800. Сдаюсь.
В момент соединения SIM800 может потреблять до 2А.
Для решения проблемы лучше сначала подключить его к компьютеру и проверить управление режимом.
У вас используется аккумулятор. Попробуйте зарядить его полностью и если возможно добавить параллельно второй.
 
Сверху Снизу