اینترنت اشیا IOT برد Esp32 برد Nodemcu

بررسی Sleep Mode در تراشه ESP32

نوشته شده توسط CiferTech

شاید تابحال برای شما پیش آمده باشد در پروژه‌ای که اجرا کرده باشید مشکل مصرف انرژی داشته باشید. حتی با استفاده از تراشه هایی مانند ESP32 که از کم مصرف ترین میکروکنترلر ها است، در این موارد ما از قابلیت های deep sleep یا sleep mode استفاده می کنیم. هر کدام موارد مختلفی را پوشش می‌دهند که در ادامه به آن ها خواهیم پرداخت. وقتی پروژه اینترنت اشیا شما از طریق برق تغذیه می شود، تمایل زیاد به مصرف برق دارد که اهمیتی ندارد. اما اگر می خواهید پروژه خود را با باتری تغذیه کنید، هر میلی آمپر برای ما مهم است. در اینجا راه حل این است که با استفاده از حالت خواب sleep mode یا خواب عمیق یا Deep sleep مصرف برق ESP32 را کاهش دهیم. که واقعا یک استراتژی عالی برای افزایش چشمگیر عمر باتری برای پروژه ای است که نیازی به فعال بودن مداوم ندارد. در ادامه این آموزش با مرجع تخصصی ESP32 به زبان فارسی، دیجی اسپارک همراه باشید.


شناخت حالت خواب ESP32


حالت sleep mode یا همان حالت خواب ESP32 حالت کم مصرفی است که در صورت عدم استفاده مدام از ESP32 می تواند مورد استفاده قرار بگیرد. موارد مورد نیاز ESP32 در RAM حفظ می شوند. وقتی ESP32 وارد حالت خواب می شود، تغذیه سایر وسایل جانبی دیجیتال غیر ضروری قطع می شود، در حالی که RAM فقط انرژی کافی را دریافت می کند تا بتواند داده های خود را حفظ کند. در قلب تراشه ESP32 یک ریز پردازنده ۳۲ بیتی Dual-Core به همراه ۴۴۸ کیلوبایت ROM ، ۵۲۰ کیلوبایت SRAM و ۴ مگابایت حافظه Flash وجود دارد. که همچنین شامل ماژول WiFi، ماژول بلوتوث، شتاب دهنده، ماژول RTC و بسیاری از تجهیزات جانبی است. که این موارد در حالت عادی معمولا ۷۵ میلی آمپر را مصرف و هنگام انتقال داده از طریق WiFi به حدود ۲۴۰ میلی آمپر می رسد.

 


بردNodemcu با تراشه ESP32


وقتی از ESP32 صحبت می‌کنیم، از مصرف انرژی کمتر، قدرت پردازش بهتر، تکنولوژی بروز صحبت می‌کنیم، یعنی نسل جدیدی از تراشه های WIFI که در ادامه نسل قبل یعنی ESP8266 به بازار معرفی شدند، که علاوه بر WIFI از بلوتوث نیز پشتیبانی می‌کنند. از برد های کمکی که برای این تراشه عرضه شده می‌توان به NodeMCU و ESP32-CAM اشاره کرد. این تراشه در سه نوع wroom , wrover و solo تولید می‌شود.

برد Nodemcu با تراشه ESP32 - دیجی اسپارک

 


حالات مختلف ESP32


حالت های تغذیه ESP32 به ۵ دسته مختلف تقسیم بندی می‌شود که عبارت هستند از، Active Mode، Modem Sleep Mode، Light Sleep Mode، Deep Sleep Mode، Hibernation Mode که هر حالت ویژگی های متمایز و قابلیت های صرفه جویی در مصرف انرژی خود را دارد. در تعدادی از این موارد را بررسی خواهیم کرد.

حالت Active Mode

حالت عادی با نام Active Mode نیز شناخته می شود. در این حالت تمام ویژگی های تراشه فعال است. از آنجا که حالت فعال همه ویژگی ها به خصوص ماژول WiFi، هسته های پردازش و ماژول بلوتوث را همیشه روشن نگه می دارد، تراشه برای کار به بیش از ۲۴۰ میلی آمپر جریان نیاز دارد. همچنین مشاهده کردیم که اگر از هر دو عملکرد WiFi و بلوتوث با هم استفاده کنید، گاهی اوقات اسپایک های قدرت بالا ظاهر می شوند که بزرگترین آنها تا ۷۹۰ میلی آمپر نیز می‌تواند باشد. بدیهی است که این ناکارآمدترین حالت است و بیشترین جریان را تخلیه خواهد کرد.

حالت Modem Sleep

در این حالت همه چیز فعال است در حالی که فقط WiFi، بلوتوث و رادیو غیرفعال هستند. CPU نیز عملیاتی است و ساعت نیز قابل تنظیم خواهد بود. در این حالت تراشه با سرعت پردازش پایین و حدود ۳ میلی آمپر و با سرعت پردازش زیاد ۲۰ میلی آمپر مصرف می کند. برای فعال نگه داشتن اتصالات WiFi / Bluetooth  CPU  Wi-Fi  Bluetooth و رادیو در فواصل از پیش تعیین شده بیدار می شوند. این به عنوان الگوی خواب انجمن شناخته می شود.

 


وسایل مورد نیاز


برد ESP برپایه تراشه ESP32

 


راه‌اندازی حالت خواب


برای برگشت از حالت خواب روش هایی وجود دارد که به تعدادی از آن ها اشاره می‌کنیم، بیدار شدن از حالت خواب عمیق را می توان با استفاده از چندین منبع انجام داد. این منابع عبارتند از تایمر، پین های لمسی، تریگ خارجی. این منابع برای بیدار کردن ESP را می‌توان ترکیب کرد، که در این حالت تراشه با فعال شدن هر یک از منابع بیدار می شود. توجه داشته باشید قبل از ورود به حالت خواب، این منابع می توانند هر لحظه پیکربندی شوند و به کد ما اعمال شوند. همچنین بدون پیکربندی منابع برای بیدار شدن ESP، می توانید به خواب عمیق بروید، در این حالت تراشه به طور نامحدود در حالت خواب عمیق خواهد بود، تا زمانی که تنظیم مجدد خارجی اعمال شود. در اولین قسمت حالت ESP32 Wake-up با تایمر را بررسی خواهیم کرد. کنترلر RTC در تراشه دارای تایمر داخلی است که می تواند بعد از مدت زمان از پیش تعیین شده تراشه را بیدار کند. زمان با دقت میکرو ثانیه مشخص شده است، اما دقت واقعی به منبع اصلی ساعت انتخاب شده بستگی دارد.

 

از تابع ()esp_sleep_enable_timer_wakeup می توان برای فعال کردن خواب عمیق با استفاده از تایمر استفاده کرد.

 

خروج از حالت خواب با استفاده از پین های تاچ در ESP32T، ماژول RTC IO موجود در تراشه esp32 دارای سطح منطقی برای ایجاد بیدار شدن در هنگام وقفه سنسور لمسی است.البته دقت داشته باشد قبل از شروع حالت خواب عمیق، باید وقفه پین های لمسی را تایید کنید. از تابع ()esp_sleep_enable_touchpad_wakeup برای فعال کردن این منبع تریگ می‌توان استفاده کرد. در قسمت کدی وجود دارد که به شکل ابتدایی یک نمونه خواب عمیق را با لمس به عنوان منبع بیدارباش و نحوه ذخیره داده ها در حافظه RTC برای استفاده از آنها در هنگام راه‌اندازی مجدد را نشان می دهد.

 


 جمع بندی


در این آموزش به مواردی از حالات خواب در برد ESP32 پرداختیم و دو نمونه از این موارد در نوع Deep Sleep را مورد آزمایش قرار دادیم. در مجموع استفاده از قابلیت برد های ESP یعنی حالت خواب برای پروژه های شما بسیار کارای دارد و باعث ذخیره حجم بسیاری انرژی در پروژه های اینترنت اشیایی شما خواهد شد. همچنین با استفاده از قابلیت هایی مختلفی که قبل تر ذکر شد شما کنترل کامل بر این مود در تراشه خواهید داشت.

 

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

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

 

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

CiferTech

فقط 10 نوع آدم در این دنیا وجود داره، اونی که باینری میفهمه و اونی که باینری نمیفهمه! ^-^

~ اینستاگرام: CiferTech

تبادل نظر و رفع عیب با ثبت دیدگاه