• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

ESP32-C3 light sleep

pvvx

Активный участник сообщества
Опять Espressif всех хочет надуть в документации.
Для теста берем example light_sleep из esp/dif и с установками по умолчанию собираем, заменив для измерения время с 2 секунды на 20 сек esp_sleep_enable_timer_wakeup(20000000);
и убираем лишнее - строку esp_sleep_enable_gpio_wakeup(); вдруг оно будет потреблять лишнее(?!).
Смотрим, что там, вместе с шумами:
1642310387803.png
При усреднении выходит ровно 130.0 мкА.
Теперь наблюдаем как оно устанавливалось:
1642310501303.png
и видим, что Espressif опять халтурит в своих PDF, т.к. потребление в light_sleep убегает за больше 0.8 мА, а итого в 130 мкА устанавливается только спустя 300 мс!
 

pvvx

Активный участник сообщества
Заодно глянем как там BLE sleep (пример ble_ibeacon)...
Что только не делал с конфигами в ESP/IDF, даже кварц на 32кГц припаял, но всё равно выходит BluetoothHiEnergy.
Со старта, все сообщения выключены, а включены всё, что дает максимально малый ток между передачами рекламы:
1642312524137.png
Только загрузка кода - 110 ms, потом наверно калибровка по кварцу 32кГц (но зачем?) и далее что-то ворочается в коде - 150 ms.
Т.е. первый RF TX спустя 260 ms от старта(!). О потреблении и говорить нечего - это надо уже большой Li АКБ, а не пальчиковые батарейки (такого току они не дадут).
И великий modem sleep в паузах для BLE дает 10 мА!

Время старта из sleep для передачи BLE рекламы 3-х каналах:
1642312852218.png
Неясно чем занят SoC первые 2.87 ms - мается дурью - жрет питание :)
Затем передает на 210 мА! Это BLE от Espressif! :) :)
 

Evgeny D

Member
@pvvx кажется вы нам нужны! Нужно обновлять данные с http сервера (ну можно tcp/udp) раз в 4 секунды. Какие нибудь из старых или новых ESP могут делать это со средним потреблением 10-20мА?
 

rkit

New member
Напряжение питания какое? Между 3.3 и 2.5 разница колоссальная по моим замерам.
 

pvvx

Активный участник сообщества
@pvvx кажется вы нам нужны! Нужно обновлять данные с http сервера (ну можно tcp/udp) раз в 4 секунды. Какие нибудь из старых или новых ESP могут делать это со средним потреблением 10-20мА?
WiFi на ESP32-C3 я ещё не проверял.
Но RT8720D на WiFi 2&5GHz сможет уложится в 10-20 мА, хотя у него ток RF TX (передачи) одинаков c ESP.
 

pvvx

Активный участник сообщества
Напряжение питания какое? Между 3.3 и 2.5 разница колоссальная по моим замерам.
Я измеряю на 3.3В.
2.5В ESP32-C3 не работает - у него ограничение
1642351881310.png
В чем разница? В том что DC-DC не встроен в чип? (и это в 2022 году)
На всех других SoC ныне чем больше напряжение, тем меньше ток.

В настройках сборки IDF есть:
для BT (bluedroid):
1642351956051.png
Потом есть Sleep Config
1642352045860.png
Далее Power Managment
1642352109853.png
И в FreeRTOS
1642352163125.png
Но это всё мало влияет на BT.
На примеры с BT от Espressif влияет только:
"Bluetooth modem sleep"
"Bluetooth Modem sleep Mode 1"
"Enable dynamic frequency scaling (DFS) at startup"


Остальные пункты конфигурации - какая-то глупость, не влияющая на потребление в BT.
 

rkit

New member

pvvx

Активный участник сообщества
Уже научились закон Ома обманывать? На других версиях esp32 разница значительная. Что с этой - не знаю, поэтому и спросил.
У DC-DC такой закон. Это не LDO.
И я тоже не знаю что там натворили, что на менее 10 мА sleep в BLE не включается.
И в IDF две реализации BLE, судя по config опциям
 

pvvx

Активный участник сообщества
По картинке просыпания для выдачи BLE рекламы из поста, можно сразу сказать:
Время очухивания SoC из сна - не менее 1 ms
И далее зачем-то почти 2 ms включен RF на RX, т.к. кушает 70+ мА, что для него характерно. Но зачем это действие - науке не известно :)
Возможно это просто вредительство.
Ну а потребление при RF TX с учетом отдачи в +9дБ выставленных к конфиге для примера и составляющем 210 мА, равно ровно в 10 раз более чем у любых SoC с технологиями для SoC, массово выпущенных другими китайцами уже более пару лет назад (именно 21 мА и менее на +9дБ).
В итого получаем такой "подарок" в виде ESP32-C3 от Espressif на 2022 год :) Кушайте и не подавитесь :)
 

pvvx

Активный участник сообщества
Пример Espressif\esp-idf\examples\system\deep_sleep
Всё по умолчанию:
1642361348085.png
Совсем не ясно зачем туда вставили delay(1000)?
Одно счастье с ESP32-C3 по сравнению с ESP8266 - можно отключить сообщения загрузчика, что ускоряет время выполнения цикла активности (пробуждение-засыпание) и уменьшает потребление. И то по причине кривописателей - UART в современных SoC может работать без CPU и типичное потребление при выводе в него менее 1 мА.
Но на данной диаграмме ничего не отключено - всё по умолчанию. Таковы примеры от Espressif для режимов "малого потребления" :)
 

pvvx

Активный участник сообщества
Отключим отладку и оптимизацию на –O2, отключим все сообщения и выводы логов, сократим код примера до:
C++:
void app_main(void) {
    const int wakeup_time_sec = 20;
    // printf("Enabling timer wakeup, %ds\n", wakeup_time_sec);
    esp_sleep_enable_timer_wakeup(wakeup_time_sec * 1000000);
    esp_deep_sleep_start();
}
И вместо программы в сотню байт, после достаточно длительного перелопачивания сборщиком тысячи файлов си получим:
Код:
Total sizes:
Used stat D/IRAM:   48680 bytes ( 279000 remain, 14.9% used)
      .data size:    4456 bytes
      .bss  size:    3776 bytes
      .text size:   40448 bytes
Used Flash size :  223892 bytes
      .text     :   69460 bytes
      .rodata   :   23104 bytes
Total image size:  268796 bytes (.bin may be padded larger)
Зальем и посмотрим на минимальный цикл активности для IDF с ESP32-C3:
1642363705723.png
Всего в два раза лучше, чем у ESP8266 вышедшего за 7 лет до ESP32-C3. Виват Espressif! :)
CR2032 такого "удара" током не выдержит - просядет.
 

pvvx

Активный участник сообщества
@pvvx кажется вы нам нужны! Нужно обновлять данные с http сервера (ну можно tcp/udp) раз в 4 секунды. Какие нибудь из старых или новых ESP могут делать это со средним потреблением 10-20мА?
Espressif\esp-idf\examples\wifi\power_save

Всё по умолчанию, но вписываем SSID и password.

Время старта и соединения зависит от AP и сильно рассматривать не стоит. В данном случае активен был “Keenetic HERO 4G” и с ним происходит соединение.
1642368306520.png

Далее примерно так, если никаких пакетов для устройства в сети нет:
1642368314369.png
И если пинговать устройство:
Код:
ping -n 50 192.168.2.67                                                                                                                                                                                                                          Обмен пакетами с 192.168.2.67 по с 32 байтами данных:
Ответ от 192.168.2.67: число байт=32 время=85мс TTL=255
Ответ от 192.168.2.67: число байт=32 время=98мс TTL=255
Ответ от 192.168.2.67: число байт=32 время=110мс TTL=255
Ответ от 192.168.2.67: число байт=32 время=118мс TTL=255
Ответ от 192.168.2.67: число байт=32 время=125мс TTL=255
Ответ от 192.168.2.67: число байт=32 время=40мс TTL=255
Ответ от 192.168.2.67: число байт=32 время=50мс TTL=255
Ответ от 192.168.2.67: число байт=32 время=58мс TTL=255
Ответ от 192.168.2.67: число байт=32 время=75мс TTL=255
Ответ от 192.168.2.67: число байт=32 время=94мс TTL=255
Ответ от 192.168.2.67: число байт=32 время=3мс TTL=255
Ответ от 192.168.2.67: число байт=32 время=117мс TTL=255
Ответ от 192.168.2.67: число байт=32 время=124мс TTL=255
...
1642368885249.png

Можно сравнить с RTL872xD (1.09mA)
Т.е. опять в 10 раз больше.
 

pvvx

Активный участник сообщества
И для ESP32-C3 нужен АКБ в 10 раз больше... хорошо что по объему, а не в размерах :)
 

pvvx

Активный участник сообщества
Самый малый выловленный период активности в Espressif\esp-idf\examples\wifi\power_save:
1642370359682.png
говорит о том, что ток большой - это не CPU жрет, а включенная RF-RX на 3+ ms.
А это картинка к примеру от Espressif (наверно к просто ESP32):
1642370652196.png
 

nikolz

Well-known member
Все давно уже понятно.
проблема потребления ESP связана с большой мощностью приемо-передающей части.
По моим наблюдениям и расчетам на момент выпуска ESP8266 кпд передатчика на Wifi составлял 10%
В настоящее время видел чипы у которых кпд 30%.
Так как мощность у ESP самая большая из существующих чипов и она такая же для BLE, то и токи большие.
Чудес не бывает.
 

pvvx

Активный участник сообщества
По моим наблюдениям и расчетам на момент выпуска ESP8266 кпд передатчика на Wifi составлял 10%
В настоящее время видел чипы у которых кпд 30%.
Вы забываете, что большую часть времени RF находится в режиме приема.
У ESP это более 60 мА при -90 дБ, а у следующего поколения чипов это 6 мА как максимум и уже при -110 дБ.
Так что не в 30%, а во все 10 раз менее.
А передатчик - у ESP +9дБ - это за 250 мА, а у следующего поколения чипов это 25 mA при +10дБ.
И опять не 30% :)
А так-же во все новые встроены DC-DC, что дает ещё меньший ток от питания в 3.3В, а не тупые LDO как у Espressif.

PS: Пусть дети кушают помои. (с) Espressif
 

pvvx

Активный участник сообщества
И о утечке включенного питания для RAM - у ESP32-C3 это сотня мкА, а у следующего поколения чипов - 0.5..1.5 мкА (128 килобайт)
 

pvvx

Активный участник сообщества
CoreMark не показатель для данного класса SoC.
Более сказывается организация внутренней периферии контроллеров.
А что у ESP сделано из них хорошо и требует мало процессорного времени на обслуживание?
А ничего, и при этом вся периферия вокруг ядра/ядер кривая и самая дешевая. И всё повязано на узкую низкоскоростную шину, включая чтение программы и данных из SPI-Flash блоками в малую "кэш". Чем-то смахивает на первые поколения STM32 с наитупейшей периферией, но дешевой по самое... требующей десятки обращений к регистрам для выуживания одного байта... Самое то для Arduino :)
 

pvvx

Активный участник сообщества
@nikolz для сравнения хорошо подходит RT5350 уже массово вышедший в 2010 году (MIPS 24KEc 360 Mhz, 802.11n 1T1R 150 Mbps PHY 20 Mhz/40 MHz, 5-port 10/100 Mbps Ethernet switch and 5-port UTP PHY, USB 2.0 HOST/Device) при всех активных потрохах потребляет в пике не более 250 мА (вместе с внешней DRAM).
Т.е. имеет приблизительно равное потребление с ESP32xx. С ним и сравнивайте CoreMark :)
 
Сверху Снизу