Главное меню
Услуги
Aвтономное питание ESP8266
Часто возникает вопрос с автономным питанием ныне уже популярного модуля ESP8266. В качестве стабилизатора чаще всего используется AMS1117.
Для начала, если ESP-01 (а он самый популярный и разумный в данной ситуации), надо сделать перемычку с 8 ножки esp8266 на пин RST и убрать светодиод. Если перемычку не сделать — модуль из режима Deep Sleep не выйдет.
Далее возьмём проект examples\dht22_thingspeak. Он хорош тем, что его очень легко поправить под свои цели отправки температуры и влажности.
Со всего проекта нам нужны user_main.c, который содержит основной пользовательский код, и user_config.h, который содержит настройки.
#define USE_WIFI_MODE STATION_MODE
#define WIFI_CLIENTSSID "wifi_net_name"
#define WIFI_CLIENTPASSWORD "wifi_net_pass"
#define DATA_SEND_DELAY 1000 /* milliseconds */
#define THINGSPEAK_SERVER "narodmon.ru"
Это содержимое файла user_config.h. Задержку отправки изменять не надо, но если хочется, то можно. Но для однократной отправки — не надо.
Далее вносим изменения в код файла user_main.c, в процедуре dht22_cb:
os_sprintf(data, "Новый адрес", THINGSPEAK_SERVER, temp, hum);
В этой строке задаётся всё, что нам необходимо для отправки. Для народного мониторинга можно сделать автоматическое получение MAC-адреса, но на мой взгляд это лишнее — проще один раз написать.
Далее в том же файле, но в процедуре user_init, задаём таймер для процедуры спячки:
os_timer_disarm(&sleep_timer);
os_timer_setfn(&sleep_timer, sleep_cb, NULL);
os_timer_arm(&sleep_timer, 5000, 1); //5s
Здесь 5000 — время в миллисекундах, а 1 — повторять.
Ну и последняя, собственно, сама процедура спячки. В данном случае — 10 минут.
static ETSTimer sleep_timer;
LOCAL void ICACHE_FLASH_ATTR sleep_cb(void *arg)
{
os_timer_disarm(&sleep_timer);
system_deep_sleep(600*1000*1000);//second*1000*1000
}
В итоге мы имеем модуль, который спит 10 минут, просыпается, отправляет данные с DHT22 (GPIO2) куда надо и засыпает на следующие 10 минут.
В активном режиме (от просыпания до засыпания) — от 240мА до 360мА. В среднем 300мА где-то в районе 5-10 секунд.
В спящем — <1mA.