Пробуждение ESP32 из глубокого сна с помощью таймеров — MicroPython

Probuzdenie Esp32 Iz Glubokogo Sna S Pomos U Tajmerov Micropython



ESP32 — это платформа IoT на основе микроконтроллера. Энергопотребление является одной из основных проблем при работе с платой микроконтроллера. Пока мы питаем ESP32 от источника постоянного тока, нас больше не волнует энергопотребление, но в проектах с резервным питанием от батареи в долгосрочной перспективе нам необходимо оптимизировать общую мощность.

Здесь мы обсудим, как мы можем перевести ESP32 в режим глубокого сна в фиксированное время для экономии энергии. Прежде чем мы узнаем, как вывести ESP32 из глубокого сна с помощью таймера, давайте разберемся с концепцией глубокого сна:

Что такое глубокий сон в ESP32

ESP32 может быть энергоемким устройством из-за встроенного модуля WiFi и Bluetooth. ESP32 обычно рисует 75 мА для номинальных операций, в то время как он может доходить до 240 мА при передаче данных по WiFi. Однако мы можем оптимизировать это, включив режим глубокого сна.









В режиме глубокого сна цифровые периферийные устройства ESP32, неиспользуемая оперативная память и процессоры отключаются. В рабочем состоянии остается только следующий перечень деталей:



  • Контроллер часов реального времени
  • Сопроцессор УЛП
  • RTC быстрая и медленная память
  • Периферийные устройства RTC





Когда включен режим глубокого сна, основной ЦП отключается; однако сопроцессор ULP (UltraLowPower) по-прежнему может считывать данные с датчиков и при необходимости активировать ЦП.

Это приложение ESP32 удобно, когда мы хотим генерировать вывод в определенное время или когда происходит внешнее прерывание или событие. Это экономит энергию ESP32, поскольку его ЦП остается выключенным в остальное время и включается только при вызове.



Вместе с процессором ESP32 основная память также прошивается или стирается, поэтому все, что хранится в этой памяти, больше не будет доступно. Там хранится только память RTC. Поэтому ESP32 сохраняет данные WiFi и Bluetooth в памяти RTC, прежде чем перейти в режим глубокого сна.

После сброса или удаления режима глубокого сна чип ESP32 запускает выполнение программы с самого начала.

Из глубокого сна мы можем разбудить ESP32 разными способами.

Источники пробуждения в ESP32

Доступны несколько источников для пробуждения ESP32 из глубокого сна:

  • Таймер
  • Сенсорные булавки
  • Внешнее пробуждение ext0
  • Внешнее пробуждение ext1

В этом руководстве мы рассмотрим Таймер пробуждения источник для ESP32.

Как использовать таймер для пробуждения ESP32 от глубокого сна

ESP32 поставляется с контроллером RTC со встроенным модулем таймера, который может разбудить ESP32 по истечении заданного промежутка времени. Эта функция имеет множество применений, где нам нужна отметка времени или выполнение инструкций в определенное время при сохранении оптимального энергопотребления.

Чтобы перевести ESP32 в режим глубокого сна с помощью кода MicroPython глубокий сон() функцию от машинный модуль будет использован. Ниже приведен синтаксис функции глубокого сна в MicroPython:

машина. глубокий сон ( sleep_time_ms )

Эта функция занимает 1 аргумент, который является предопределенным временем в миллисекунды .

Чтобы понять, как использовать таймер ESP32 для пробуждения, мы возьмем пример, который мигает светодиодом по истечении каждого установленного времени и снова переходит в спящий режим после выполнения задачи.

Пример кода

Откройте любой редактор MicroPython и загрузите приведенный ниже код на плату ESP32. Здесь мы будем использовать Thonny IDE для загрузки скетчей MicroPython.

# Источник кода Linuxhint.com

из машина импорт глубокий сон

из машина импорт Штырь

из время импорт спать

вел знак равно Штырь ( 4 , Штырь. ВНЕ ) # PIN 4 определен для светодиодного выхода

вел. ценность ( 1 ) # Включить светодиод на 1 секунду

спать ( 1 )

вел. ценность ( 0 ) #Выключить светодиод на 1 секунду

спать ( 1 )

Распечатать ( 'Сейчас спать' )

глубокий сон ( 5000 ) #Сон на 5 секунд

Код начался с импорта необходимых библиотек, таких как мы импортировали библиотеку deepsleep.

После этого создается новый объект для контакта 4 ESP32. Этот вывод будет показывать вывод каждый раз, когда ESP32 просыпается.

вел знак равно Штырь ( 4 , Штырь. ВНЕ )

Ниже приведенные команды будут мигать светодиодом с задержкой 1 сек.

вел. ценность ( 1 )

спать ( 1 )

вел. ценность ( 0 )

спать ( 1 )

Здесь для демонстрационных целей мы мигаем светодиодом. Однако можно управлять и любым другим устройством.

Перед сном мы напечатали сообщение о том, что ESP32 переходит в спящий режим.

Распечатать ( 'Сейчас спать' )

Примечание: Мы также можем добавить здесь задержку в 5 или более секунд, прежде чем ESP32 перейдет в спящий режим. Это помогает нам при создании проекта и написании нового сценария. Во время загрузки нового кода плата должна быть в активном состоянии, а не в спящем режиме. Если мы не добавим задержку, нам будет сложно поймать ESP32 в режиме бодрствования и загрузить новый скрипт.

После написания нового скрипта и когда будет готов окончательный код, мы можем убрать эту задержку в финальной версии скрипта.

Наконец, плата ESP32 переходит в режим глубокого сна на 5 секунд (5000 мс).

машина. глубокий сон ( 5000 )

По истечении 5 секунд ESP32 просыпается и перезапускает код, аналогичный В кнопка.

  Графический пользовательский интерфейс, текст, описание приложения генерируется автоматически

Выход

Следующий вывод можно наблюдать на терминале оболочки Thonny IDE. Здесь мы видим, что каждые 5 секунд ESP32 выходит из глубокого сна и мигает светодиодом на контакте 4 GPIO.

Светодиод на GPIO 4 загорится НА на 1 сек.

Через 1 секунду светодиод загорится ВЫКЛЮЧЕННЫЙ .

Теперь плата ESP32 снова перейдет в спящий режим на 5 сек и после этого весь процесс повторится. Вот и все, мы успешно контролировали режим глубокого сна ESP32 с помощью кода таймера.

Вывод

Здесь, в этом руководстве, мы настроили ESP32 для пробуждения от глубокого сна с помощью программы таймера, написанной на MicroPython. Мы загрузили код с помощью Тонни ИДЕ . Мы просто напечатали сообщение, как только ESP32 просыпается и мигает светодиодом; однако с помощью этой статьи можно выполнить любую задачу, как только ESP32 выйдет из глубокого сна.