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

ESP32C3 заглушка DeepSleep перестала исполняться

nikolz

Well-known member
в этой картинке влияет вывод на печать так как его там много да еще и задержка добавлена.
Но влияет опять же через раз.
 

nikolz

Well-known member
разобрался.
не та в моем тесте была функция перехода в сон.
-----------------
Осталось только два вопроса:
что в чипе потребляет 5.5 мА
и как это что-то выключить как можно раньше в заглушке.
 

pvvx

Активный участник сообщества
Минимальный deep-sleep c заглушками. s_max_count = 5, sleep time = 10 ms:
1748523962484.png
Всё те-же 13..14 ms (минимум):
1748523978243.png
Время сна не ровно 10 ms, как не измеряй, а кратно наверно RC гену...
1748523985529.png
Хвосты, выращенные ещё при первых тестах ESP32-C3, безусловно есть и никаких десяток нА в deep-sleep от этого не выходит :p
1748524417017.png
(график выведен не с начала включения deep-sleep - иначе в данном PPK2 от nRF не увидеть к чему стремиться ток)
 

pvvx

Активный участник сообщества
И там кошмарный обычный выход из deep-sleep, в коде которого кроме нового засыпания ничего нет (всё вырезано):
1748524716430.png
Где-то в конце 60 ms может быть ваш код, который будет исполняться медленнее чем на MCU из прошлого века...
 

pvvx

Активный участник сообщества
Если уточнять, то через 62.8 ms после старта пробуждения чипа от deep-sleep:
1748525569324.png
Т.е. не опередил ESP8266 c Rapid-loader.
Можно ещё отключить всякие проверки контроля загрузчика, но это всё равно не спасет ESP32-xx от помойки.
 

pvvx

Активный участник сообщества
Берем ESP32-C3 и пусть вечно ничего не делает, а пробуждается каждые 2.5 секунды в своем экстремальном режиме, где всё отключено, включая GPIO, а размер RTC RAM не позволяет вместить что-то более менее работоспособное кроме счета пробуждений...

Ток в deep-sleep возьмем из дока = 5 uA (пофиг, что он там занижен и не учитывает хвосты, снят при заниженном напряжении питания, и прочее потребление компонентов реальной схемы).

Считаем среднее потребление с паузой между пробуждениями в 2.5 секунды: (13*7+2500*0.005)/2513 = 0.0412 mA, т.е. не менее 41.2 uA

Для сравнения возьмем дешевый чип от WCH, или PHY, или TLSR, или NRF, или … который будет работать с пару датчиками и отсылать BLE рекламу каждые 2.5 секунды.

Это типа период активности с передачей по 3-м каналам в 4..6 ms и средним током в 4..6 мА, а в sleep 1..3 uA вместе с датчиками:

(5*5+2500*0.002)/2505 = 0.012 mA, т.е. в среднем по больнице таких чипов это 7..14 uA

По скорости обработки кода после deep-sleep, с пустой незаполненной кэш у них либо паритет c любым ESPxx-xxx или в разы быстрее, т.к. тупая BLE/Zigbee программа с датчиками полностью влезает в RAM, а RAM не отключается во время sleep.

Про остальные режимы, типа Zigbee роутера или BLE приемника с ESP32-xxx лучше ничего не сравнивать, а то станет совсем тошно.
 

pvvx

Активный участник сообщества
О как зашуршали любители ESP, на сравнение времени исполнения и требуемой энергии для тупой задачи полностью влезающей в объем кэша ESP32 с другим простейшим MCU :ROFLMAO:
Youtube: Raspberry Pi Pico vs ESP32 - Which one is faster?
Ни одного компетентного комментария от любителей ESP, а только сплошное недовольство...
 

nikolz

Well-known member
О как зашуршали любители ESP, на сравнение времени исполнения и требуемой энергии для тупой задачи полностью влезающей в объем кэша ESP32 с другим простейшим MCU :ROFLMAO:
Youtube: Raspberry Pi Pico vs ESP32 - Which one is faster?
Ни одного компетентного комментария от любителей ESP, а только сплошное недовольство...
Благодарю за подробный анализ.
--------------------
Вот несколько возражений.
1) Про дешевые модули.
Модуль ESP32C3 стоит 150 руб, что существенно ниже чем модули NRF и не выше, чем модули TLSR , PHY,WCH.
--------------------
2) Про объем RAM для программы. Fast Ram ESP32С3 это 8 Кбайт, что равно свободной памяти в дешевых чипах TLSR.
Поэтому полагаю разместить там можно не мало. При этом для хранения текущих данных в активном режиме можно задействовать всю RAM.
----------------
3) Зачем отсылать данные с датчика каждые 2.5 секунды и собирать эти данные годами?
Можете привести какой-либо практически имеющий смысл пример такого потока сырых данных?
---------------
4) Время активного режима.
Например надо измерять температурное поле группой датчиков DS1820.
Согласно док
• Converts temperature to digital word in 200 ms (typ.)
Т е никакой особенно экономии энергии при использовании чипа BLE не получится.
-----------------
5) Не вижу особого смысла забивать эфир сырыми данными, а реализовать нормальную обработку либо накопить данные , сжать их и отправить на более дешевых чипах не получится.
===============
6) К сожалению, Вы не смогли ответить на два моих вопроса .
Что потребляет 6.5 mA и как это что-то отключить.
 

nikolz

Well-known member
Возможно длительный выход из сна связан с большим объемом вторичного загрузчика.
в тестах он занимает 3500 байт.
Поэтому разбираюсь как сделать сон на голом металле. примеры, которые нашел занимают всего 300 байт , но в них нет deep sleep.
DeepSleep на голом металле есть лишь на Rust.
Но пока не смог нормально установить и собрать пример на rust на Windows.
Куча ошибок вываливается и они есть в инете, а вот решения для них под виндой нет.
DeepSeek дал уже кучу советом правильных, но ошибка как была так и осталась.
Если кто-то смог собрать что-то для ESP32C3 на Rust под Windows10, поделитесь опытом.
 

nikolz

Well-known member

nikolz

Well-known member
при попытке собрать под RUST получаю вот такую фигню:
1749202847289.png
При этом все что указывается как решение проблемы я делал, но результат не изменился
 

pvvx

Активный участник сообщества
3) Зачем отсылать данные с датчика каждые 2.5 секунды и собирать эти данные годами?
Можете привести какой-либо практически имеющий смысл пример такого потока сырых данных?
Любое управление обогревом (поддержание температуры).
Вообще IoT датчики используются не для разглядывания данных с них людьми, а для автоматизации. И там чем больше поток, и чаще - тем точнее управление. Особенно при ПИД регулировании.

4) Время активного режима.
Например надо измерять температурное поле группой датчиков DS1820.
Согласно док
• Converts temperature to digital word in 200 ms (typ.)
Т е никакой особенно экономии энергии при использовании чипа BLE не получится.
Можно подключить и два датчика MY18B20.
Работают на улице во внешнем блоке кондиционера от батареек с лета того года и всё нипочем...
 

pvvx

Активный участник сообщества
nikolz написал(а):
6) К сожалению, Вы не смогли ответить на два моих вопроса .
Что потребляет 6.5 mA и как это что-то отключить.
Десять раз уже написал, кто и что это жрет.
Отключается только заменой чипа.
 

pvvx

Активный участник сообщества
Возможно длительный выход из сна связан с большим объемом вторичного загрузчика.
в тестах он занимает 3500 байт.
Никакой "загрузчик" не участвует в работе "заглушки".
И в очередной раз - при старте в "заглушку" ничего не инициализировано и нельзя вызывать никакие функции, кроме запиханных в RAM RTC.
 

pvvx

Активный участник сообщества
3) Зачем отсылать данные с датчика каждые 2.5 секунды и собирать эти данные годами?
Можете привести какой-либо практически имеющий смысл пример такого потока сырых данных?
---------------
4) Время активного режима.
Например надо измерять температурное поле группой датчиков DS1820.
Согласно док
• Converts temperature to digital word in 200 ms (typ.)
Т е никакой особенно экономии энергии при использовании чипа BLE не получится.
-----------------
5) Не вижу особого смысла забивать эфир сырыми данными, а реализовать нормальную обработку либо накопить данные , сжать их и отправить на более дешевых чипах не получится.
 

nikolz

Well-known member
Продолжу обсуждение.
Вот мои возражения:
1) про датчик MY18B20. Хороший датчик.
Время преобразование и погрешность:
1749265795856.png
Т е получаем погрешность 0.5 гр и время 500 ms.
Есть датчик MY1820-15, у которого 15 ms, но его цена на али 980 руб.
-------------------
Относительно погрешности измерения. 0.5 гр для улицы подойдет, а вот для инкубатора или ректификационной колонны нет. Правда эту проблему решить не трудно.
---------------
Но BLE будет активно не 3 ms, а в 100 раз больше.
--------------
Active Current IDD VDD=5V — От 40 до 350 µA
-----------------
Берем Ваш расчет:
Период активности с передачей по 3-м каналам в 4..6 ms и средним током в 4..6 мА, а в sleep 1..3 uA вместе с датчиками:
(5*5+2500*0.002)/2505 = 0.012 mA, т.е. в среднем по больнице таких чипов это 7..14 uA
и добавляем к нему (500*40)/2513=8 или (500*350)/2513=70 получаем от 15 до 94 uA.
------------------

У ESP32C3 по вашим подсчетам 42 uA. Добавим те же 8 и 70 получим от 50 до 112 uA.
Разница не 3-6 раз, а в 2-3 раза.
===================
Если ESP32C3 ничего не делает 13 мс перед входом в сон, то можно добавить к нему таймер TPL51XX и сократить время до 1 ms. И в результате получим такое же или меньше потребление, как у чипов с BLE.
====================
Но уже есть ESP32H2, правда пока лишь в теории, но он обеспечит ток потребления
1749267451288.png

Замечу, что если время сна увеличить, то основной вклад в потребление будет давать ток в режиме сна.
Для ESP32H2 этот ток можно сделать на уровне 1 uA и менее, путем установки таймера TPL51XX.
--------------------
Написал это к тому, что не вижу особого смысла противопоставлять эти чипы друг другу.
Выбор чипов зависит от решаемой задачи.
 

nikolz

Well-known member
Любое управление обогревом (поддержание температуры).
Вообще IoT датчики используются не для разглядывания данных с них людьми, а для автоматизации. И там чем больше поток, и чаще - тем точнее управление. Особенно при ПИД регулировании.
Это не так.
Необходимая скорость поступления данных от датчиков в систему регулирования определяется инерцией (временем отклика) этой системы. В общем случае, теоретически, эта скорость определяется теоремой Котельникова-Найквиста.
У ПИД регулятора есть параметр постоянная времени , т е время реакции на ступенчатое возмущение. Вот это время и ограничивает скорость поступления данных с датчика.
При этом, как известно, надо брать не постоянную времени ПИД регулятора, а постоянную времени всей системы , т е включая нагреватели (если управление температурой) помещения и устройств охлаждения. Если элементы системы включены последовательно, то надо брать постоянную времени самого инерционного звена в системе.
--------------
Можете сказать , какая постоянная времени Вашей системы и обосновать Ваш критерий- "чем больше поток, и чаще - тем точнее управление" ?
 

nikolz

Well-known member
Ваше мнение по следующим соображениям: 1749270112919.png
На рис условно можно выделить несколько интервалов:
1) это импульс примерно до 4.5 мА с последующим падением примерно до 3.5.
2) участок 3.5 мА до скачка тока примерно на 8.5 мА
3) импульс до 8.5 мА
4) участок после импульса примерно 7 мА
5) спад до нуля
-------------------
Полагаю 1 -это включение и работа 1-го загрузчика.
---------------------
2- 2-ой загрузчик.
В самом загрузчике запуск приложения из RAM RTC выполняется после инициализации
void __attribute__((noreturn)) call_start_cpu0(void)
{
// 1. Hardware initialization
if (bootloader_init() != ESP_OK) bootloader_reset();
#ifdef CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP
// If this boot is a wake up from the deep sleep then go to the short way,
// try to load the application which worked before deep sleep.
// It skips a lot of checks due to it was done before (while first boot).
bootloader_utility_load_boot_image_from_deep_sleep();
// If it is not successful try to load an application as usual.
#endif
-----------------
3- возможно это инициализация
4- это подготовка к новому сну?
==============================
Вы сказали, что 13 ms процессор ничего не делает.
Если это так, то можно внешним таймером выключить питание после участка 3 и тогда время активности будет не 13 ms а скажем 1 ms.
---------------------
Что не так?
 

pvvx

Активный участник сообщества
Т е получаем погрешность 0.5 гр и время 500 ms.
Вы опять всё перепутали. Время реакции и время опроса :ROFLMAO:

Есть датчик MY1820-15, у которого 15 ms, но его цена на али 980 руб.
MY18B20 на али стоит в 5 раз менее европейского 18D20.

У ESP32C3 по вашим подсчетам 42 uA. Добавим те же 8 и 70 получим от 50 до 112 uA.
Разница не 3-6 раз, а в 2-3 раза.
Опять попутали - это только энергия на пробуждение, без передачи и приема и вообще каких либо действий.
Если включить передачу маяка у ESP, то получим более десятикратное увеличение.
Но главная проблема даже не в этом, а в импульсном токе за 200 мА по сравнению с 6 мА у нормального чипа при RF TX.
 
Сверху Снизу