پیشرفته⏱ 17 دقیقه مطالعه
در پروژههای باتریخور (مثل سنسورهای بیسیم)، مصرف انرژی حیاتی است. ESP32 چند حالت کممصرف دارد که مهمترین آنها Deep Sleep است؛ در این حالت تقریباً همهٔ بخشهای تراشه خاموش میشوند و مصرف جریان از چند ده میلیآمپر به چند میکروآمپر میرسد.
ورود به حالت Deep Sleep با تایمر بیدارباش
PYTHON
from machine import deepsleep, RTC
from time import sleep
print("در حال انجام کار...")
sleep(2)
print("رفتن به خواب عمیق برای ۱۰ ثانیه")
deepsleep(10_000) # میلیثانیه
⚠️ هشدار
با اجرای deepsleep، برنامه از ابتدا (مثل ریست شدن) دوباره اجرا میشود؛ متغیرهای موجود در RAM از بین میروند، مگر داده را در RTC memory یا حافظهٔ فلش ذخیره کرده باشید.
تشخیص علت بیدار شدن
PYTHON
import machine
reason = machine.reset_cause()
if reason == machine.DEEPSLEEP_RESET:
print("از خواب عمیق بیدار شدم")
else:
print("روشنشدن عادی (پاور یا ریست)")
کاربرد عملی
سناریوی رایج: بیدار شدن هر ۱۰ دقیقه، خواندن سنسور، ارسال داده با Wi-Fi/MQTT (درسهای ۱۱ و ۱۳)، و بازگشت به خواب عمیق. این الگو میتواند عمر باتری یک سنسور بیسیم را از چند روز به چند ماه برساند.
🛠️ کارگاه عملی
کارگاه عملی: یک برنامه بنویسید که هر بار پس از بیدار شدن، یک شمارنده را در حافظهٔ RTC (machine.RTC().memory) افزایش دهد و چاپ کند.
❓ در حالت Deep Sleep، مقدار متغیرهای عادی برنامه (در RAM) چه میشود؟
→ درس قبلی: درس ۱۴: وقفهها (Interrupts) و تایمرها
درس بعدی: درس ۱۶: برنامهنویسی ناهمزمان با uasyncio و پروژه پایانی ←
طراحی و توسعه: امین شیخ نجدی — glcd.ir