Qo‘llanma · Kam quvvat · Batareya
ESP32 sensorini bitta batareyada bir yil ishlating
Wi-Fi yoqilgan ESP32 ~160–260 mA tortadi va LiPo’ni bir necha soatda tugatadi. Ammo batareyali sensor uyg‘oq turishi shart emas — u uyg‘onadi, o‘qiydi, yuboradi va yana uxlaydi. Deep sleep’da xuddi shu chip taxminan 10 µA tortadi. Bu soatlar bilan bir yil orasidagi farq.
Uyqu rejimlari, tok bo‘yicha
- Active + Wi-Fi — ~160–260 mA (uzatishda cho‘qqilar yuqoriroq).
- Modem sleep — CPU yoqilgan, radio o‘chirilgan — o‘nlab mA.
- Light sleep — ~0,8 mA, RAM va holat saqlanadi, tez uyg‘onish.
- Deep sleep — ~10 µA, faqat RTC tirik qoladi.
- Hibernation — ~5 µA, deyarli hamma narsa o‘chirilgan.
Deep sleep — batareyali sensorlar uchun oltin o‘rtacha yechim: mikroamper sarf va taymer yoki pin bo‘yicha uyg‘onish.
«Uyg‘on–ishla–uxla» patterni
Deep sleep — bu pauza emas, aslida qayta yuklanish. CPU to‘xtaydi, RAM yo‘qoladi, uyg‘onganda esa
eskizingiz yana setup() dan boshlanadi. Shuning uchun ishni setup() ichiga qo‘yasiz,
keyin esa uxlaysiz:
#include "esp_sleep.h"
#define uS_PER_S 1000000ULL
RTC_DATA_ATTR int bootCount = 0; // RTC xotirada uyquni saqlab qoladi
void setup() {
Serial.begin(115200);
bootCount++; // deep sleep = yangi yuklanish; setup qaytadan ishlaydi
// ... Wi-Fi ga ulanish, sensorni o‘qish, ma’lumot yuborish ...
esp_sleep_enable_timer_wakeup(10 * 60 * uS_PER_S); // 10 daqiqadan keyin uyg‘onish
// esp_sleep_enable_ext0_wakeup(GPIO_NUM_33, 0); // ...yoki pin bo‘yicha (PIR, gerkon)
esp_deep_sleep_start(); // pastdagi hamma narsa endi ishlamaydi
}
void loop() {} // ishlatilmaydi — ish setup() ichida yashaydi Ozgina RTC xotira (RTC_DATA_ATTR) uyquni saqlab qoladi, shuning uchun hisoblagich
yoki oxirgi holatni flash’ga murojaat qilmasdan uyg‘onishlar orasida saqlab turishingiz mumkin.
Uni nima uyg‘otishi mumkin
- Taymer — asosiy ishchi kuch: har N daqiqada uyg‘onib o‘lchash va yuborish.
- Pin (ext0 / ext1) — PIR, gerkon yoki tugma hodisa bo‘yicha uyg‘otadi.
- Tach — sig‘imli maydoncha.
- ULP koprotsessori — kichkina doimo-yoniq yadro sensorni kuzatib, faqat chegara oshganda asosiy CPU’ni uyg‘otadi — eng past o‘rtacha tok uchun.
Batareya muddatini hisoblash
Muhimi — o‘rtacha tok. Aytaylik, siz har 10 daqiqada 150 mA da 2 s
uyg‘onasiz va qolgan vaqtni 10 µA da uxlaysiz. Uyg‘oqlik ulushi — 2 s / 600 s ≈ 0,33%, demak o‘rtacha tok
taxminan 0.0033 × 150 mA + 10 µA ≈ 0.5 mA. Shunda 2000 mAh li 18650
~4000 soat — taxminan besh oy chidaydi, uyg‘oqlik vaqtini qisqartirish yoki kamroq yuborish
esa uni bir yildan oshiradi.
1-tuzoq: sizning dev-platangiz hech qachon 10 µA ga yetmaydi
Bunga hamma tushadi. Yalang‘och ESP32 moduli ~10 µA da uxlaydi — ammo dev-platada yana doimo-yonuvchi quvvat LED, USB-serial chip (CH340/CP2102) va AMS1117 stabilizatori bor, ularning har biri kunu-tun milliamper yeydi. Platangiz 5–20 mA da «uxlaydi» va batareya bir necha kunda o‘ladi. Yechim: quvvat LED’ini olib tashlang, kam quvvatga mo‘ljallangan plata yoki samarali stabilizatorli yalang‘och modul oling. quvvat va stabilizatorlar bo‘yicha qo‘llanmani ko‘ring — Wi-Fi ostida kuchlanishni pasaytiradigan o‘sha AMS1117 uyquda ham batareyangizni behuda yeydi.
Yana ko‘proq siqib olish
- Uyg‘oqlik vaqtini qisqartiring — Wi-Fi qayta ulanish eng qimmat narsa. Statik IP va saqlangan AP kanali uni soniyalardan bir soniyadan kamgacha kesib tashlaydi.
- Kamroq yuboring — intervalni har ikki baravar oshirish batareya muddatini deyarli ikki baravar oshiradi.
- Holatni RTC xotirada saqlang, har uyg‘onganda qayta ulanib yoki konfigni qayta o‘qib o‘tirmang.
- Kam quvvatli chip tanlang — S2 yoki C3 klassik ESP32’ga qaraganda bekor turganda pastroq tortadi; chiplar bo‘yicha qo‘llanmani ko‘ring.
Deep sleep ESP32’ni stolga bog‘langan, USB’dan quvvat oluvchi platadan devorga yopishtirib bir mavsumga unutib qo‘yish mumkin bo‘lgan haqiqiy simsiz sensorga aylantiradi.
Batareya oylar emas, kunlarda tugayaptimi? Odatda aybdor — stabilizator va LED.