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

Старт ESP8266 и работа с датчиками в boot

nikolz

Well-known member
Добрый день, Всем!
В качестве хобби исследую различные варианты включения и выключения внутренностей ESP8266.
В процессе исследований разбираюсь с некоторыми мифами о возможностях ESP, а также определяю реальности.

Длительность старта ESP8266.
-------------------------
Первый режим - это старт ESP8266 при включении питания либо передергивания пина RST или пина CH_PD.
Как следует из документации, старт с заземлением CH_PD приводит к очистке памяти RTC, а старт через заземление RST лишь к очистке счетчика команд.
--------------------------------
Время старта не может быть меньше, чем 80 мс.
Существует миф о том, что время старта ESP можно сократить до 30 мс, если устранить вывод сообщения о загружаемых секциях.
-----------------------
Предполагается, что время тратится на вывод сообщений на скорости 74880 о загружаемых секциях.
Для доказательства того, что это не так посчитаем время на вывод этих сообщений
Так число символов о загрузке одного сектора составляет 97, а двух 174.
На вывод этих сообщений будет затрачено 10 и 20 мс соответственно.
Длительность старта со стандартным загрузчиком составляет не менее 120 мс.
Если сообщения убрать, то длительность старта сократится лишь до 110 мс.
--------------------------
мои расчеты подтверждаются и на прошивке Web свалки и на RapideLoader и на rboot и на моем варианте загрузчика nboot.
Время загрузки всех перечисленных загрузчиков составляет в среднем 80 мс и отличается не более чем на 10 мс.
===========================
Ранее на форуме уже поднимался вопрос о работе ESP8266 с отключенным модулем WIFI с датчиками.
В SDK есть функции для управления питанием, но при их применении невозможно избежать включения приемника WIFI. При этом потребляемый ток минимум на 10 мс становится равным 70 ма.
------------------------------------------------
Работа в режиме загрузчика позволяет избежать данного включения.
при этом мне пока удалось реализовать отключение лишь CPU на время ожидания прерывания от внешних пинов. При этом ток потребления составляет 4.5 ма.
Полагаю, что 4 ма - это ток потребления FLASH, отключить которую пока не смог.
В режиме активности CPU 13.5 ма.
----------------------------------------------
В результате удалось реализовать следующую картинку.
upload_2018-1-2_15-55-30.png
На картинке два момента старта путем подачи нуля на CH_PD
После первого старта, когда ток достигает 40 ма, режим ожидания прерываний ток 4.5 ма и далее последовательно четыре прерывания и включение CPU, когда ток 13.5 ма.
Затем выключение ESP путем CH_PD=0 и снова включение CH_PD=1.
-------------------
Если необходим WIFI то включение его происходит без перезагрузки, т е при этом не тратится время и энергия на начальный старт.
 
Последнее редактирование:

Encrypt

Member
Отличная работа! Выложите, пожалуйста, это загрузчик на всеобщее обозрерние :)
 

nikolz

Well-known member
удалось снизить ток в режиме ожидания до 2.3 ма.
upload_2018-1-12_9-26-12.png
на картинке старт и шесть нажатий кнопки
или так
upload_2018-1-11_23-31-14.png
только восемь нажатий кнопки, отличается от предыдущего тем, что после обнаружения нажатия сразу выключается процессор. В первом случае процессор активен до отпускания кнопки.
 
Последнее редактирование:

nikolz

Well-known member
провел следующий эксперимент.
старт ESP при питании 3.3 в,
четыре прерывания от кнопки
переключение питания на 1.5 в(одна батарейка AAA)
десять прерываний от кнопки.
картинка потребляемого тока:
upload_2018-1-12_10-44-56.png
 

nikolz

Well-known member
Сделал прошивку состоящую из двух самостоятельных модулей
Первый модуль содержит программу работы с датчиками и выполняется сразу после старта.
При этом реализуется следующий алгоритм.
ESP переходит с ожидание внешнего прерывания и ждет его примерно 50 мс.
Это ожидание повторяется 4 раза.
После этого ESP переходит в deep-sleep.
Такой режим повторяется 3 раза, а в четвертый выполняется связь с сервером и передача данных по UDP с подтверждением получения.
После этого выполняется переход в deep-sleep.
upload_2018-2-11_18-8-58.png
Пояснения к графику:
Импульсы амплитудой 45 ма - это старт ESP длительностью примерно 85 мс при выходе из deep-sleep.
далее следуют 4 интервала режима ожидания внешнего прерывания и выход из этого режима по таймеру.
В данном случае таймер реализован на основе пина GPIO15.
---------------------------------------------------------------------------------------------------
WIFI модуль выполнен в виде bin файла и не требует изменений при изменении алгоритма обработки датчика,
либо подключения новых.
------------------------------------------------------------------------------------------------
импульс с амплитудой 70 ма - это включение приемника WIFI.
 
Сверху Снизу