RisalDash RisalDash

دليل · استهلاك منخفض · بطارية

شغّل مستشعر ESP32 لمدة عام من بطارية واحدة

شريحة ESP32 مع تشغيل Wi-Fi تسحب نحو 160–260 mA وتُفرِغ بطارية LiPo في ساعات. لكن مستشعر البطارية لا يحتاج أن يبقى مستيقظًا — فهو يستيقظ ويقرأ ويرسل ثم يعود إلى النوم. في وضع deep sleep تسحب الشريحة نفسها نحو 10 µA. هذا هو الفرق بين ساعات وعام كامل.

Deep sleepاستهلاك منخفضبطاريةESP32ULP18650
ESP32 على خليّة 18650 واللوحة تُظهر 10 µA في النوم العميق
‏10 µA نائمًا — تعيش 18650 سنواتٍ لا أيّامًا.

أوضاع السكون، بدلالة التيار

وضع deep sleep هو الحل الأمثل لمستشعرات البطارية: سحب بالميكرو أمبير، ويستيقظ بمؤقّت أو بطرف.

نمط «استيقظ–اعمل–نم»

وضع deep sleep ليس إيقافًا مؤقتًا — بل هو عمليًا إعادة إقلاع. يتوقف الـ CPU، وتُفقَد الـ RAM، وعند الاستيقاظ يبدأ برنامجك من setup() مجددًا. لذلك تضع العمل داخل setup() ثم تنام:

#include "esp_sleep.h"
#define uS_PER_S 1000000ULL

RTC_DATA_ATTR int bootCount = 0;   // يبقى محفوظًا خلال السكون في ذاكرة RTC

void setup() {
  Serial.begin(115200);
  bootCount++;                     // deep sleep = إقلاع جديد، لذا يُنفَّذ setup من جديد
  // ... اتصل بـ Wi-Fi، اقرأ المستشعر، أرسل البيانات ...

  esp_sleep_enable_timer_wakeup(10 * 60 * uS_PER_S);   // الاستيقاظ بعد 10 دقائق
  // esp_sleep_enable_ext0_wakeup(GPIO_NUM_33, 0);      // ...أو عند طرف (PIR، ريد)
  esp_deep_sleep_start();          // كل ما تحت هذا السطر لن يُنفَّذ أبدًا
}

void loop() {}                     // غير مستخدَمة — العمل كله يجري داخل setup()

قليل من ذاكرة RTC (RTC_DATA_ATTR) يبقى محفوظًا خلال السكون، فتستطيع الاحتفاظ بعدّاد أو بآخر حالة بين مرات الاستيقاظ دون لمس الـ flash.

ما الذي يمكن أن يوقظها

حساب عمر البطارية

المهم هو متوسط التيار. لنفترض أنك تستيقظ لمدة ثانيتين عند 150 mA كل 10 دقائق وتنام عند 10 µA بقية الوقت. نسبة الاستيقاظ هي 2 ث / 600 ث ≈ 0.33٪، فيكون المتوسط تقريبًا 0.0033 × 150 mA + 10 µA ≈ 0.5 mA. عندئذ تدوم بطارية 18650 سعة 2000 mAh مدة نحو 4000 ساعة — قرابة خمسة أشهر، وتقليص زمن الاستيقاظ أو الإرسال بوتيرة أقل يدفعها إلى ما بعد العام.

الفخّ رقم واحد: لوحة التطوير لديك لن تبلغ 10 µA أبدًا

يقع الجميع في هذا. وحدة ESP32 عارية تنام عند نحو 10 µA — لكن لوحة التطوير فيها أيضًا مؤشر LED طاقة يعمل دائمًا، وشريحة USB-serial ‏(CH340/CP2102)، ومنظّم AMS1117، وكل منها يحرق مِلّي أمبيرات على مدار الساعة. فـ«تنام» لوحتك عند 5–20 mA وتموت البطارية في أيام. الحلول: انزع مؤشر LED الطاقة، أو استخدم لوحة مصمَّمة للاستهلاك المنخفض، أو شغّل وحدة عارية مع منظّم كفؤ. راجع دليل التغذية والمنظّمات — فنفس منظّم AMS1117 الذي ينهار جهده تحت Wi-Fi يهدر بطاريتك أيضًا أثناء النوم.

عصر المزيد

يحوّل وضع deep sleep شريحة ESP32 من لوحة مربوطة بالمكتب تُغذَّى عبر USB إلى مستشعر لاسلكي حقيقي يمكنك لصقه على الحائط ونسيانه لموسم كامل.

هل تنفد البطارية في أيام لا في أشهر؟ عادةً ما يكون السبب المنظّم ومؤشر LED.