прблемы с режимом сна в sim800L

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить
Открыл глаза
Сообщения: 43
Зарегистрирован: Вт июн 11, 2019 17:08:25

Сообщение ickatel »

Друзья.
Вот так вот выясняешь одну проблему, как появляется другой и куда же обратится если не к форуму.
Нужно перевести gsm модуль sim800L в режим сна.
Естественно, прошолся по материалам и узнал ,что управлять сном и бодрствованием можно через контакт DTR. Для активации этого режима необходимо однократно отправить АТ команду "AT+CSCLK=1" на ножку Rx и для усыпления модуля - подать высокий уровень (около +3В) на контакт DTR.
Вроде как, написано черным по белому.
Сделал все на совесть ,но как был ток 11мА так он и остался.
Как тут ,быть куда поддатся?Нужен совет.
Заранее благодарен.
Реклама
Открыл глаза
Сообщения: 43
Зарегистрирован: Вт июн 11, 2019 17:08:25

Сообщение ickatel »

Может есть какие то нюансы?
Реклама
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

нюансы написаны там же: никаких прерываний, ни по воздуху, ни по линиям. Только неактивный модуль переходит в спящий режим. Есть соединение по GSM/GPRS - нет спящего режима. Есть дерганье микроконтроллером - нет спящего режима.
Контактная информация:
AAX
Опытный кот
Сообщения: 721
Зарегистрирован: Сб ноя 16, 2013 23:34:34

Сообщение AAX »

[uquote="ickatel",url="/forum/viewtopic.php?p=4411389#p4411389"]Для активации этого режима необходимо однократно отправить АТ команду "AT+CSCLK=1" на ножку Rx и для усыпления модуля - подать высокий уровень (около +3В) на контакт DTR.[/uquote]Всё верно, только сначала высокий уровень на DTR, потом убедиться, что модуль в IDLE (нет никаких не завершённых действий), потом AT+CSCLK=1
Ну, и этих модулей китайцы наделали миллион вариаций, не факт, что у Вас функциональность сна по DTR вообще реализована. Через AT+CSCLK=2 работает сон?
Реклама
Эиком - электронные компоненты и радиодетали
Открыл глаза
Сообщения: 43
Зарегистрирован: Вт июн 11, 2019 17:08:25

Сообщение ickatel »

Друзья ,примите мою искренную благодарность за желание помочь.

Martian
Вы пишете; "Есть дерганье микроконтроллером - нет спящего режима"
Как же тогда подавать команду "AT+CSCLK=1" ,
Вот я беру модуль и даю питание(больше ничего)
потом посылаю "AT+CSCLK=1" на Tx и после DTR +3в
Во время подачи усыпляющих сигналов модуль обсолютно спокоен.

AAX
А как определить что модуль в IDLE?
AT+CSCLK=2 не пробовал ,но сделаю тоже ,раз вы упомянули об этом.
Реклама
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

Ну может там в микроконтроллере кто-то написал постоянное дерганье 800, типа "эй, ты там как? есть для меня че? может отправишь че? а, ты спишь? а, уже не спишь?", может. по другим ногам его дергает. фиг знает.

Sleep Mode 1 (AT+CSCLK=1)
Customer can control SIM800H&SIM800L module to enter or exit the sleep mode (AT+CSCLK=1) by DTR signal. When DTR is in high level and without interrupt (on air and hardware such as GPIO interrupt or data in serial port), SIM800H&SIM800L will enter sleep mode automatically. In this mode, SIM800H&SIM800L can still receive paging or SMS from network but the serial port is not accessible.
Контактная информация:
Реклама
Открыл глаза
Сообщения: 43
Зарегистрирован: Вт июн 11, 2019 17:08:25

Сообщение ickatel »

Дорогие Martian и AAX
Разрешите отчитатся по результатом проверки.
И так ,включаю адаптер 220-12в 3А и даю модуле 4в через китайский 3-х амперный регулятор.
Контроллирую общий ток потребления от 12в ,который в месте смодулем( который уже зарегистрировался в сеть )составил 12,8мА.
Без модуля китайский преобразователь потребляет 6мА от 12в, значит модуль потребляет 6,8мА в спокойном режиме.
Теперь руководствуясь советом AAX с перва подаю +3в на вывод DTR и затем посылаю команду (AT+CSCLK=1) на Tx без надежды ,что что то произайдет(ведь в даташите вроде наоборот).
Ну вот чудо!!!!!!!!!!!!!!!!!потребление сразу уменьшилось до 6,8мА (до потребления преобразователя 12-4в) и значит потребление модуля ументшилось до нуля.
Пока не могу придти в себя. Буду пробовать и пробовать усыплять и пробуждать.
Спасибо огромное.

Добавлено after 1 hour 29 minutes 52 seconds:
Да ,я многократно проделал это и все работает.
И так по AAX вход и выход в режим сна выглядит так;
-вход в сон.
-подаем +3в на вывод DTR и затем посылаем команду (AT+CSCLK=1) на Tx.
-снимаем +3 с DTR.
--------------------------------------------------------------------------------------------
-выход из сна.
-подаем землю на вывод DTR и затем посылаем команду (AT+CSCLK=0) на Tx.
-снимаем землю с DTR.
------------------------------------------------------------
Я бы с удовольствием назвал эту процедуру ,процедурой AAX.
Спасибо ему от имени всех любителей sim.
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

ну так и назвать

Код: Выделить всё

unsigned char function Aax (unsigned char sleep)
{

}
:wink:
Контактная информация:
AAX
Опытный кот
Сообщения: 721
Зарегистрирован: Сб ноя 16, 2013 23:34:34

Сообщение AAX »

Martian, я бы предпочёл ростовой памятник в бронзе. И табличку: "AAX vs долб*бизм. 0:1"
[uquote="ickatel",url="/forum/viewtopic.php?p=4411917#p4411917"]А как определить что модуль в IDLE?[/uquote]У Вас должна быть реализована машина состояний, и должен быть способ получить текущее состояние. Соответственно, если модуль не занят выполнением Ваших команд, нет активной сессии голосовой или передачи данных - это состояние простоя, IDLE.
ickatel писал(а):И так по AAX вход и выход в режим сна выглядит так;
нет, не придумывайте.
Я бы описал процесс примерно так:
1. Подаём на DTR высокий уровень.
2. Проверяем, что модуль ничем не занят. Если мы в своём уме, и идём спать, а модуль занят - это какая-то активность со стороны сети. Входящий звонок, или СМС. Нужно дождаться окончания этой активности. Сбросить звонок. Прочитать СМС, если это важно :) Для этого опускаем DTR в низкий уровень, и возвращаемся без сна.
3. Если модуль в IDLE, отправляем AT+CSCLK=1
4. Если вернулось OK - делаем своё ничего. Выключаем остальную периферию, усыпляем мк и т.д по потребностям.
Пока мы держим DTR высоким, модуль спит.
Если от модуля нужна только неторопливая передача - СМС, данных, исходящие звонки - можно в начале процедуры засыпания скомандовать AT+CFUN=0, это выключит радио-часть, и позволит сэкономить батарейку.
Чтобы проснуться, делаем следующее:
1. Опускаем DTR в низкий уровень
2. Не допуская пауз длиннее 50-ти мс отправляем нужные AT-команды
3. Когда вся нужная работа проделана, поднимаем DTR снова.
Чтобы проснуться основательно, например для какой-то двусторонней коммуникации, когда нужно что-то передать, и понятно, что должен прийти ответ, подаём на DTR низкий уровень, и не позже, чем через 50 мс передаём AT+CSCLK=0. После "OK" пофиг, что будет на DTR, режим сна модуля отключён.
Если отключали коммуникации по AT+CFUN=0, не забываем поднять радио-часть при помощи AT+CFUN=1. Тут нужно включать ещё и голову, т.к. поиск сетей и регистрация достаточно энергоёмкий процесс. И если Вам нужно часто засыпать/просыпаться, отключением функциональности радио Вы только высадите батарею сильнее. А цена вопроса около 1 мА потребления :) Но если у Вас модуль раз в сутки выходит на связь - это позволит сэкономить 24 мА/ч батарейки. Ну, и нужно помнить, что поиск сетей и регистрация - процесс не мгновенный, по этому если Вам нужно ASAP передавать что-то - лучше радио не выключать.
Судя по тому, что Вы пишете, Вам подойдёт режим сна AT+CSCLK=2, он чисто программный, DTR не задействуется.
ickatel писал(а):Я бы с удовольствием назвал эту процедуру ,процедурой AAX.
Обычная история: сеешь разумное, доброе, вечное. Потом смотришь, что за концепции тебе приписывают - и охреневаешь :)
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

AT+CSCLK=2 оставляет UART активным, возможно, несущественно, а возможно, за год на лишнюю недельку батарейки наберется...
Контактная информация:
AAX
Опытный кот
Сообщения: 721
Зарегистрирован: Сб ноя 16, 2013 23:34:34

Сообщение AAX »

Так и режим AT+CSCLK=1 не выключает UART. Разницы потребления я не замечал. ТС так и подавно не заметит - модуль с включенным радио ест примерно миллиампера 2 с периодическими всплесками до примерно 0,2 А в момент перерегистрации в сети. А ТС видит ноль потребления :) Впрочем, как говорилось выше, китайцы штампуют эти модули кто во что горазд :( и что там будет работать, что не будет - большая китайская загадка. Разгадать которую можно только экспериментально.
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

вроде, в даташите упоминалось, что в первом случае UART отключается, благодаря управлению DTR. Точнее, там было написано, что он перестает быт активным. Возможно, они имели ввиду, что просто игнорирует команды, тогда да, вообще разницы нет.
Контактная информация:
AAX
Опытный кот
Сообщения: 721
Зарегистрирован: Сб ноя 16, 2013 23:34:34

Сообщение AAX »

А Вы этот модуль использовали? Или только даташит? ;-)
Просто в даташите там действительно написано, что нужно сперва передать AT+CSCLK=1, а потом подавать высокий уровень на ногу DTS. Но суть топика в том, что оно нихрина так не работает ;-)
И этот модуль шо в одном, шо в другом режиме сна, если не отключить радиотракт продолжает принимать входящие звонки и СМС. И передавать в UART так называемые Непрошенные Сообщения ;-), если они не отключены. Когда сеть теряется/находится. Когда звонок приходит, или СМС.
Мудрый кот
Аватара пользователя
Сообщения: 1840
Зарегистрирован: Вт мар 28, 2023 21:17:15
Откуда: Universe

Сообщение Mursik »

Если звонки и смс не нужны, тогда AT+CFUN=2 поможет. Будет спать как убитый :tea:
I have a dream...¯\_(ツ)_/¯
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

AAX, я давно использовал и без L, сейчас по даташиту смотрел. На различие в очередности да, обратил внимание.
Контактная информация:
Ответить

Вернуться в «Периферия»