جدیترین مقالات

بینش در مورد حالت های خواب ESP32 و مصرف برق آنها

شکی نیست که ESP32 یک رقیب شایسته برای بسیاری از SoCهای WiFi/MCU است که اغلب از نظر عملکرد و قیمت آن را شکست می دهد. اما بسته به حالتی که در آن قرار دارد، ESP32 می تواند دستگاهی نسبتاً پرقدرت باشد.

هنگامی که پروژه اینترنت اشیا شما از یک دوشاخه در دیوار تغذیه می شود، شما به مصرف برق اهمیت زیادی نمی دهید. اما اگر قصد دارید پروژه خود را از باتری تغذیه کنید، هر mA مهم است.

راه حل در اینجا استفاده از یکی از حالت های خواب آن برای کاهش مصرف برق ESP32 است. این در واقع یک استراتژی عالی برای افزایش چشمگیر عمر باتری پروژه ای است که نیازی به فعال بودن دائمی ندارد.

حالت خواب ESP32 چیست؟

حالت خواب ESP32 یک حالت صرفه جویی در مصرف انرژی است که ESP32 می تواند در صورت عدم استفاده وارد آن شود و تمام داده ها را در RAM ذخیره کند. در این زمان، برق هر وسیله جانبی غیرضروری قطع می شود در حالی که RAM به اندازه کافی برق دریافت می کند تا بتواند اطلاعات خود را حفظ کند.

داخل تراشه ESP32

برای درک اینکه چگونه ESP32 به صرفه جویی در مصرف انرژی دست می یابد، ابتدا باید بدانیم که چه چیزی در داخل تراشه است. تصویر زیر نمودار بلوک عملکرد تراشه ESP32 را نشان می دهد.

Block Diagrams 1 1

در قلب تراشه ESP32 یک ریزپردازنده 32 بیتی دو هسته ای با 448 کیلوبایت ROM، 520 کیلوبایت SRAM و 4 مگابایت حافظه فلش قرار دارد.

این تراشه همچنین شامل یک ماژول WiFi، یک ماژول بلوتوث، یک شتاب دهنده رمزنگاری (یک پردازشگر مشترک که به طور خاص برای انجام عملیات رمزنگاری طراحی شده است)، یک ماژول RTC و تعدادی تجهیزات جانبی است.

حالت های برق ESP32

به لطف مدیریت توان پیشرفته ESP32، پنج حالت توان قابل تنظیم را ارائه می دهد. با توجه به نیاز برق، تراشه می تواند بین حالت های مختلف قدرت جابجا شود. این حالت ها عبارتند از:

  • حالت فعال
  • حالت خواب مودم
  • حالت خواب سبک
  • حالت خواب عمیق
  • حالت خواب زمستانی

هر حالت دارای ویژگی های منحصر به فرد و قابلیت های صرفه جویی در مصرف انرژی است. بگذارید یک به یک آنها را بررسی کنیم.

حالت فعال ESP32

حالت عادی به عنوان حالت فعال نیز شناخته می شود. در این حالت تمام ویژگی های تراشه فعال باقی می مانند.

از آنجایی که حالت فعال همه چیز را (به خصوص ماژول WiFi، هسته پردازش و ماژول بلوتوث) همیشه در حال اجرا نگه می‌دارد، بیش از 240 میلی آمپر جریان برای کار کردن تراشه مورد نیاز است. همچنین مشاهده شده است که اگر از وای فای و بلوتوث با هم استفاده کنید، گاهی اوقات اسپک های توان بالا (به بزرگی 790 میلی آمپر) ظاهر می شود.

ESP32 Active Mode Functional Block Diagram 1 1

با توجه به دیتاشیت ESP32 مصرف برق در حالت توان فعال، با کارکرد RF به شرح زیر است:

حالتمصرف برق
بسته Wi-Fi Tx 13dBm~21dBm160 ~ 260 میلی آمپر
بسته Wi-Fi/BT Tx 0dBm120 میلی آمپر
Wi-Fi/BT Rx و گوش دادن80 تا 90 میلی آمپر

بدیهی است که این ناکارآمدترین حالت است و بیشترین جریان را از بین می برد. بنابراین، اگر می‌خواهید در مصرف برق صرفه‌جویی کنید، باید ویژگی‌های غیرقابل استفاده را با استفاده از حالت برق دیگر غیرفعال کنید.

خواب مودم ESP32

در حالت خواب مودم همه چیز فعال است به جز وای فای، بلوتوث و رادیو. همچنین CPU را در حال اجرا نگه می دارد و ساعت قابل تنظیم است.

در این حالت تراشه حدود 3 میلی آمپر در سرعت پایین و 20 میلی آمپر در سرعت بالا مصرف می کند.

ESP32 Modem Sleep Functional Block Diagram 1 1

برای زنده نگه داشتن اتصال WiFi/Bluetooth، Wi-Fi، بلوتوث و رادیو در فواصل از پیش تعریف شده بیدار می شوند. این به عنوان الگوی خواب انجمن شناخته می شود .

در طول این الگوی خواب، ESP32 بین حالت فعال و حالت خواب مودم سوئیچ می کند.

برای رسیدن به این هدف، ESP32 با استفاده از مکانیزم چراغ DTIM در حالت ایستگاه به روتر متصل می شود .

برای صرفه جویی در مصرف برق، ESP32 ماژول Wi-Fi را بین دو بازه چراغ DTIM غیرفعال می کند و به طور خودکار قبل از رسیدن چراغ بعدی بیدار می شود.

زمان خواب با فاصله زمانی چراغ DTIM روتر تعیین می شود که معمولاً 100 تا 1000 میلی ثانیه است.

مکانیسم Beacon DTIM چیست؟

DTIM مخفف عبارت Delivery Traffic Indication Message است.

dtim beacon 1 1

در این مکانیسم، نقطه دسترسی (AP)/روتر به صورت دوره ای فریم های بیکن را پخش می کند. هر فریم حاوی تمام اطلاعات مربوط به شبکه است. برای اعلام حضور یک شبکه بی سیم و همگام سازی همه اعضای متصل استفاده می شود.

خواب سبک ESP32

خواب سبک شبیه خواب مودم است. تراشه در این مورد نیز از الگوی خواب انجمن پیروی می کند.

تنها تفاوت این است که در حالت خواب سبک، لوازم جانبی دیجیتال، بیشتر RAM و CPU دارای ساعتی هستند.

Clock Gating چیست؟

گیتینگ ساعت تکنیکی برای کاهش مصرف انرژی پویا است.

در این، بخش‌هایی از مدار با خاموش کردن پالس‌های ساعت غیرفعال می‌شوند تا فلیپ فلاپ‌های موجود در آنها نیازی به تغییر حالت نداشته باشند. از آنجایی که حالت های سوئیچینگ انرژی مصرف می کند، وقتی سوئیچ نمی شود، مصرف برق به صفر می رسد.

در حالت خواب سبک، CPU با خاموش کردن پالس ساعت خود متوقف می شود، در حالی که RTC و ULP-coprocessor فعال نگه داشته می شوند. این باعث مصرف انرژی کمتری نسبت به حالت خواب مودم می شود که حدود 0.8 میلی آمپر است.

ESP32 Light Sleep Functional Block Diagram 1 1

قبل از وارد شدن به حالت خواب سبک، ESP32 حالت داخلی خود را در RAM ذخیره می کند و پس از بیدار شدن از حالت خواب، کار را از سر می گیرد. این به عنوان حفظ کامل RAM شناخته می شود .

هنگامی که منابع بیداری پیکربندی شدند، از esp_light_sleep_start()عملکرد برای ورود به خواب سبک استفاده می شود.

ESP32 خواب عمیق

در حالت خواب عمیق، پردازنده‌ها، بیشتر رم و تمام تجهیزات جانبی دیجیتال خاموش می‌شوند. تنها بخش هایی از تراشه که عملیاتی می شوند عبارتند از:

  • پردازنده کمکی ULP
  • کنترلر RTC
  • لوازم جانبی RTC
  • حافظه RTC سریع و کند

تراشه حدود 0.15 میلی آمپر (در صورت روشن بودن پردازنده کمکی ULP) تا 10 میکروآمپر مصرف می کند.

ESP32 Deep Sleep Functional Block Diagram 1 1

در حالت خواب عمیق، CPU اصلی خاموش می‌شود، در حالی که پردازنده کمکی UltraLowPower (ULP) می‌تواند قرائت‌های سنسور را بگیرد و هر زمان که لازم باشد CPU را بیدار کند. این الگوی خواب به الگوی نظارت شده با حسگر ULP معروف است . این برای طراحی برنامه هایی مفید است که در آن CPU باید توسط یک رویداد خارجی یا تایمر یا ترکیبی از هر دو بیدار شود و در عین حال حداقل مصرف انرژی را حفظ کند.

همراه با CPU، حافظه اصلی تراشه نیز غیرفعال است. در نتیجه هر چیزی که در آن حافظه ذخیره شده است پاک می شود و قابل دسترسی نیست.

از آنجایی که حافظه RTC روشن است، محتویات آن حتی در هنگام خواب عمیق نیز حفظ می شود و پس از بیدار شدن تراشه قابل بازیابی است. به همین دلیل است که تراشه اطلاعات اتصال Wi-Fi و بلوتوث را قبل از وارد شدن به خواب عمیق در حافظه RTC ذخیره می کند.

اگر می‌خواهید پس از راه‌اندازی مجدد از داده‌ها استفاده کنید، با تعریف یک متغیر سراسری با RTC_DATA_ATTRویژگی، آن را در حافظه RTC ذخیره کنید. مثلا،RTC_DATA_ATTR int myVar = 0;

پس از خارج شدن از خواب عمیق تراشه با ریست مجدد راه اندازی می شود و اجرای برنامه را از ابتدا آغاز می کند.

ESP32 هنگام بیرون آمدن از خواب عمیق از اجرای یک بیدار خواب عمیق پشتیبانی می کند. این تابع بلافاصله به محض بیدار شدن تراشه – قبل از اجرای هر گونه اولیه سازی معمولی، بوت لودر یا کد ESP-IDF اجرا می شود. پس از اجرا شدن تراشه خرد، تراشه می‌تواند به حالت خواب برگردد یا به طور معمول به راه‌اندازی ESP-IDF ادامه دهد.

برخلاف سایر حالت های خواب، سیستم نمی تواند به طور خودکار به حالت خواب عمیق برود. این esp_deep_sleep_start()تابع برای ورود به خواب عمیق بلافاصله پس از پیکربندی منابع بیدار شدن استفاده می شود.

برای کسب اطلاعات بیشتر در مورد ESP32 Deep Sleep و منابع بیداری آن، لطفاً از آموزش زیر دیدن کنید.

حالت خواب زمستانی ESP32

برخلاف حالت خواب عمیق، در حالت خواب زمستانی، تراشه نوسان ساز داخلی 8 مگاهرتز و همچنین پردازشگر ULP را غیرفعال می کند. حافظه بازیابی RTC نیز خاموش است، به این معنی که نمی‌توانیم هیچ داده‌ای را در حالت خواب زمستانی حفظ کنیم.

همه چیز خاموش است به جز فقط یک تایمر RTC (در ساعت آهسته) و چند RTC GPIO. آنها مسئول بیدار کردن تراشه از حالت خواب زمستانی هستند.

ESP32 Hibernation Mode Functional Block Diagram 1 1

این باعث کاهش بیشتر مصرف برق می شود. این تراشه در حالت خواب زمستانی تنها 2.5μA مصرف می کند.

این حالت مخصوصاً زمانی مفید است که در حال ساخت پروژه ای هستید که نیازی به فعال بودن دائمی نداشته باشد.

ترجمه شده از https://lastminuteengineers.com/esp32-sleep-modes-power-consumption/

WhatsApp
Email
LinkedIn

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

تعطیلات

از پنج شنبه 18/بهمن/1403 تا روز شنبه 27/بهمن/1403 فروشگاه تعطیل می باشد.کلیه سفارشات در این تاریخ از یکشنبه 28 بهمن ماه به مرور ارسال می گردد.

خرید در این بازه با تخفیف 8 درصدی و از طریق کد تخفیف SD