Поковырял пример
Sleep WiFi Idle
Выходит, что просыпается из sleep на прием beacon каждые 400 мс (поставил LPS DTIM(4)), иногда переговаривается с AP на 1..2 сек (частота таких переговоров зависит от роутера и обстановки в местной WiFi сети).
Потребление в sleep у всех измеренных модулей около 2.5 мА (средние).
При просыпании на обработку каких-либо действий (активное состояние) около 62 мА (средние).
Лог показывает соотношение проведенного модулем времени в sleep и активном режиме:
Пример лога, выдаваемого каждые 10 сек (см. скетч):
Код:
SSID: HOME_AP
BSSID: 90:9:EB:C5:12:34
signal strength (RSSI):-27
Encryption Type:4
wakelock_id holdtime
0 43883662
1 7364455
time passed: 43883662 ms, system sleep 35930238 ms
Итого, со старта, после 12+ часов работы:
35930238 ms потребление составляло 2.5 мА, 43883662-35930238 = 7953424 ms потребление составляло 62 мА.
Т.е. среднее должно выйти (7953424*62+35930238*2.5)/43883662 =
13.283711 мА
7953424/43883662=0.181239 = 18% в активном режиме с ~60 мА.
Почти согласуется с замерами...
(за время 12 часового замера у измерителя на ESP8266 2 раза отвалилась Station и измерить реальное потребление не вышло)
Выглядит график потребления примерно так:
(клетка 2000 мс, минимальное 1.73мА, максимум выскакивал до 100 мА, нижняя полка 1.83 мА - прямая, если растянуть график, средняя полка 61.5)
Среднее потребление зависит от погоды в WiFi, сколько сидит устройств на данном канале AP и т.д. (но средние 14..15 мА выходят):
(клетка 10 сек)
В BLE стандарт влезает (там норма до 15 мА), но у нас WiFi (если надо, то скорости за 1 мегабайт в сек)
Это активный режим - всё работает и все сервисы активны, но можно ещё сделать типа deep_sleep, но с периодическими просыпаниями для поддержки связи без перезагрузки (полностью неактивным в периоды c DTIM(1..10) = 100..1000 мс), тогда потребление будет совсем малое... Но пока не знаю, насколько сложно и затратно это вписать в Arduino.
Пока и так по эффективности и гибкости режимов энерго-экономии RTL-ки побеждают все другие обсуждаемые модули на форуме.
Без команды активации засыпаний системы при неактивности [inline]PowerManagement.sleep(5)[/inline] (BIT(PMU_OS)|BIT(PMU_LOGUART_DEVICE))
потребление между приемами beacon от роутера выходит 21.8 мА:
Система с выключенным WiFi в режиме экономии (sleep5) - 1.63..2 мА:
При sleep5, во время активации для вывода сообщения в LogUART (на графике это через delay(10000)) - 16.32 мА:
Т.е. процессор на 83 МГц жрет где-то вокруг 17 мА.
(Опыты с картинками поставлены на модуле RTL00 с 83 МГц, RTL8711AM имеет меньшее потребления в активном режиме при том-же CLK. C чем это связано - не знаю, т.к. у его ещё надо регенерировать SDRAM, а всё равно выходит меньше.)