Не отступай и не сдавайся !!!
Ардуино, ESP32, ESP8266, LoRa. Обучение. Моделирование. Программирование под заказ.
Измерение и контроль параметров: температура, влажность, освещённость, давление, наличие напряжения, датчик движения, тревожная кнопка (дача, квартира, дом, цех, теплица, офис). Выдача измеренных параметров на персональную страницу в Интернете, на планшет, в смартфон. В случае выхода параметров за заданные границы - оповещение по электронной почте, sms.

Энергосбережение и сон
в Ардуино

Энергосбережение — важная тема в проектах на 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 сон особенно важен для автономных датчиков, метеостанций, носимых устройств.


© 2000 - 2026
Хостинг нашего сайта осуществляется узлом www.cherepovets-city.ru