Энергосбережение и сон в Ардуино
Энергосбережение — важная тема в проектах на Arduino Nano и ESP32, работающих от батарей. Если устройство питается от аккумулятора и должно проработать недели или месяцы, необходимо использовать режимы сна. В активном режиме Arduino Nano потребляет 15–20 мА, ESP32 с включённым Wi-Fi — до 150 мА. В глубоком сне Nano потребляет единицы микроампер, ESP32 — десятки микроампер. Разница в тысячи раз позволяет значительно продлить время автономной работы.
Режимы сна Arduino Nano (ATmega328P): Idle (процессор спит, периферия работает), Power-save (спит таймер, можно просыпаться по нему), Standby (спит почти всё, пробуждение по прерыванию или таймеру) и Power-down (самый глубокий сон, пробуждение только по внешнему прерыванию). Для управления сном используется библиотека avr/sleep.h или удобная библиотека GyverPower от AlexGyver. У ESP32 режимы глубокого сна (esp_deep_sleep_start()) и лёгкого сна (esp_light_sleep_start()) с пробуждением по таймеру или прерыванию.
Текстовое описание подключения: для пробуждения по кнопке подключите её между пином D2 (или GPIO4 у ESP32) и GND. В скетче настройте прерывание на этом пине. Для пробуждения по таймеру внешние компоненты не нужны — используется встроенный таймер сна. При использовании GyverPower на Arduino Nano просто вызовите power.sleep(SLEEP_8S) — микроконтроллер уснёт на 8 секунд.
Пример скетча (сон с пробуждением по кнопке, Arduino IDE):
#include <GyverPower.h>
#define BUTTON_PIN 2
void setup() {
pinMode(BUTTON_PIN, INPUT_PULLUP);
Serial.begin(9600);
}
void loop() {
Serial.println("Работа");
delay(1000);
power.sleep(SLEEP_FOREVER);
}
Этот пример — полезное упражнение для обучения Arduino Nano с нуля: он показывает, как перевести плату в глубокий сон и разбудить по кнопке. При подключении к ESP32 используйте esp_deep_sleep_start() и настройте пробуждение через esp_sleep_enable_ext0_wakeup(). В проектах на Arduino Nano сон особенно важен для автономных датчиков, метеостанций, носимых устройств.
|