آموزش Espآموزش اینترنت اشیاپروژه های Esp

فعال سازی Deep Sleep در ماژول ESP8266 برای ذخیره انرژی

سلام. آموزش فعال سازی Deep Sleep در ماژول ESP8266 برای ذخیره انرژی را آماده کردیم.

نحوه ذخیره انرژی در ماژول وای فای ESP8266

با پیشرفت IoT، تعداد دستگاههای متصل به سرعت در حال افزایش است. در آینده بیشتر دستگاه ها به یکدیگر متصل می شوند و با یکدیگر ارتباط برقرار می کنند. یكی از مشكلات این دستگاه ها مصرف برق است. ضریب مصرف انرژی یکی از عوامل مهم و تعیین کننده برای هر دستگاه IoT و پروژه های اینترنت اشیا است.

از آنجا که می دانیم ESP8266 یکی از محبوب ترین ماژول برای ساخت پروژه های IoT است، بنابراین در این مقاله در مورد صرفه جویی در مصرف برق هنگام استفاده از ESP8266 در هر برنامه ی IoT یاد می گیریم. در اینجا داده های حسگر دما LM35 را در فاصله زمانی 15 ثانیه در پلت فرم ThingSpeak بارگذاری می کنیم و در طی این 15 ثانیه ESP8266 برای ذخیره انرژی در حالت DeepSleep باقی می ماند.

فیلم زیر به شما در درک نحوه کار این پروژه کمک میکند.

برای یادگیری آردوینو (برنامه نویسی، ساخت ربات، ارتباط با اندروید) روی دوره آموزش آردوینو کلیک کنید.
برای یادگیری کامل الکترونیک روی دوره آموزش الکترونیک کلیک کنید.

در حقیقت این پروژه، یک پروژه دماسنج IoT (اینترنت اشیا) است که قابلیت خواب عمیق برای ذخیره انرژی در آن قرار داده شده است.

پیشنهاد میکنم ابتدا آموزش برنامه نویسی ESP8266 را بخوانید.

قطعات مورد نیاز

  1. ماژول Wi-Fi ESP8266
  2. سنسور دما LM35
قطعات مورد نیاز را از فروشگاه قطعات آیرنکس تهیه کنید.

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

روش های مختلفی برای بهینه سازی مصرف برق در دستگاه های تعبیه شده و IoT وجود دارد. بهینه سازی را می توان در سخت افزار و نرم افزار انجام داد. بعضی اوقات ما نمی توانیم اجزای سخت افزاری را برای کاهش مصرف برق بهینه کنیم ، اما مطمئنا می توانیم با تغییر و بهینه سازی دستورالعمل ها و عملکردهای کد ، این کار را انجام دهیم.

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

ماژول های ESP8266 بیشترین کاربرد را در بین ماژول های Wi-Fi دارند. این ماژول دارای حالت های مختلفی از جمله حالت خواب است. برای دسترسی به این حالت باید از برخی اصلاحات در سخت افزار و نرم افزار استفاده کنیم.

انواع حالت های خواب ذخیره انرژی در ESP8266

ماژول Esp8266 در حالتهای زیر عمل می کند :

  • حالت فعال (Active) : در این حالت، تمام تراشه روشن خواهد بود و تراشه می تواند داده ها را دریافت کند، انتقال می دهد. بدیهی است که این حالت پر مصرف ترین حالت است.
  • حالت مودم-خواب (Modem sleep) : در این حالت ، CPU عملیاتی شده و رادیوهای Wi-Fi غیرفعال هستند. این حالت مانند برنامه PWM در برنامه هایی که به CPU نیاز دارند قابل استفاده است. این باعث می شود تا اتصال مودم Wi-Fi در حالی که به Wi-Fi AP یعنی Access Point وصل شده و دارای انتقال داده نیست خاموش شود تا مصرف انرژی بهینه شود.
  • حالت خواب سبک (Light sleep) : در این حالت ، CPU و کلیه لوازم جانبی متوقف می شوند. هرگونه فعالیتی مانند وقفه های خارجی و … باعث بیداری تراشه می شود. بدون انتقال داده، مدار مودم Wi-Fi را می توان خاموش و CPU را برای صرفه جویی در مصرف برق متوقف کرد.
  • حالت خواب عمیق (Deep sleep) : در این حالت فقط RTC فعال است و تمام اجزای دیگر تراشه خاموش هستند. این حالت در جایی که داده ها تا یک بازه زمانی طولانی منتقل نمیشوند، مفید است.

انواع حالت های خواب (Sleep Modes) در ESP8266

خواباندن مودم و خواب سبک زمانی مفید است که شما نیاز به عملکرد ماژول ESP8266 دارید در حالی که برخی از عملکردها خاموش است. اما اگر به کنترل قدرت جدی نیاز دارید، باید به حالت خواب عمیق بروید. متوسط ​​جریان کلی کمتر از 1 میلی آمپر است. و در ولتاژ 2.5، نیاز ماژول به انرژی تنها 20 میکرو آمپر است.

حالت خواب عمیق (Deep sleep) در ESP8266

در اینجا مراحل استفاده از حالت دیپ اسلیپ را در ماژول Wifi Esp8266 با هم بررسی میکنیم.

  1. ماژول را با Wi-Fi AP متصل کنید.
  2. یک کار مانند خواندن مقدار سنسور، انتشار پیام MQTT و … را انجام دهید.
  3. برای تعداد مشخصی از میکروثانیه ها به حالت خواب ببرید.
  4. فرایند فوق را دوباره تکرار کنید.

زمان خواب در میکروثانیه تعریف شده است. با توجه به ESP8266، شما فقط می توانید برای 4،294،967،295 میکرو ثانیه بخوابید که در حدود 71 دقیقه است.

تنظیم ماژول ESP8266

پین RST ماژول ESP8266 را به پین GPIO 16 یعنی D0 وصل کنید. GPIO 16 پین مهمی است که دارای ویژگی WAKE (بیدار شدن) است.

همچنین اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید

حالت خواب عمیق (Deep sleep) در ESP8266

سنسور دما LM35 را به پین A0 NodeMCU وصل کنید.

هنگامی که ماژول ESP در پین RST فعال باشد، در حالت کار است. به محض غیرفعال شدن پین RST ماژول ریستارت میشود.

با استفاده از حالت خواب عمیق، تایمر را تنظیم کنید. پس از پایان زمان سنج، پین D0 سیگنال غیرفعال را به پین ​​RST می فرستد و با راه اندازی مجدد آن، ماژول از خواب بیدار می شود.

سخت افزار را آماده و به خوبی پیکربندی کنید. مقدار دما به سرور Thingspeak ارسال می شود. برای این کار ، در thingspeak.com یک حساب کاربری بسازید و با طی کردن مراحل زیر یک کانال ایجاد کنید.

اکنون کلید Write API را کپی کنید. زیرا در کد ESP استفاده خواهد شد.

تنظیم Deep Sleep در ThingSpeak

برنامه نویسی حالت خواب عمیق ESP8266

از نرم افزار Arduino برای برنامه ریزی ماژول ESP8266 استفاده خواهد شد. اطمینان حاصل کنید که تمام پرونده های برد ESP8266 نصب شده اند.

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

#include <ESP8266WiFi.h>

هنگامی که کتابخانه را وارد کردید، کلید API دریافتی از ThingSpeak را در کد زیر در قسمت مربوط وارد کنید. همچنین نام و رمز وای فای خود را نیز وارد کنید.

هنگامی که کلیه کتابخانه ها برای دسترسی به توابع گنجانده شدند ، سپس کلید نوشتن API را اختصاص دهید ، نام و رمز عبور Wi-Fi خود را پیکربندی کنید. سپس تمام متغیرها را برای استفاده بیشتر در محل ذخیره داده ها اعلام کنید.

String apiWritekey = "*************"; // کلید API دریافتی را وارد کنید
char ssid[] = "******"; // نام وای فای شما
char password[] = "******" ;// رمز وای فای شما

حالا یک تابع ایجاد کنید تا ماژول را با استفاده از عملکرد wifi.begin() به شبکه Wi-Fi وصل کنید. و سپس مرتباً بررسی کنید تا زمانی که ماژول با استفاده از void به Wi-Fi وصل نشود.

void connect1() {
  WiFi.disconnect();
  delay(10);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {

برنامه نویسی حالت خواب عمیق ESP8266

void دیگری برای ارسال داده به سرور thingspeak ایجاد کنید. در اینجا رشته ای ارسال می شود که شامل کلید API ، شماره فیلد و داده هایی است که باید ارسال شوند. سپس این رشته را با استفاده از تابع client.print () ارسال میکنیم.

void data() {
  if (client.connect(server,80))
  {  
    String tsData = apiWritekey;
           tsData +="&field1=";
           tsData += String(tempF);
           tsData += "\r\n\r\n";
     client.print("POST /update HTTP/1.1\n");
     client.print("Host: api.thingspeak.com\n");

با تابع Connect1 (که عملکرد را برای اتصال Wi-Fi فراخوانی می کند) ارتباط میگیریم، سپس دما را خوانده و آن را به سلسیوس تبدیل میکنیم.

void setup() {
  Serial.begin(115200);
  Serial.println("device is in Wake up mode");
  connect1();
  int value = analogRead(A0);
  float volts=(value/1024.0)*5.0;      
  tempC = volts*100.0;  

اکنون ، برای بارگذاری داده ها روی فضای عبری، با عملکرد data() ارتباط برقرار میکنیم. سرانجام، نوبت عملکرد مهم ESP.deepSleep () است. این تابع باعث می شود که ماژول برای مدت زمان مشخصی (در میکرو ثانیه) بخوابد.

 data();
 Serial.println("deep sleep for 15 seconds");
 ESP.deepSleep(15e6);

عملکرد loop خالی باقی خواهد ماند زیرا تمام کارها باید یک بار انجام شوند.

کد را در ماژول ESP8266 بارگذاری کنید. قبل از بارگذاری برنامه، سیم متصل RST و D0 را بردارید وگرنه خطا ایجاد می شود.

بعد از آپلود برنامه خواهید دید که خوانش دما هر 15 ثانیه بر روی ابر ThingSpeak بارگذاری می شود و سپس ماژول در حالت خواب عمیق قرار می گیرد. عمق خواب ویژگی بسیار مهمی است و در اکثر دستگاه ها گنجانده شده است.

موارد موجود در فایل : سورس کامل ، شماتیک کامل

دانلود فایل های پروژه

برای مشاهده توضیحات روی دوره مورد نظر کلیک کنید.

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام آیرنکس را دنبال کنید.

تصویر از محمد رحیمی

محمد رحیمی

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

5 نظر

  1. سلام مد active چطور میشه فعال بشه
    آخه من با esp8266 هر برنامه ای که مینویسم wifi معمولا بعد 2 روز غیر فعال میشه یعنی اسم wifi هست ولی وقتی میخوای کانکت بشی رو حالت connecting میمونه و متصل نمیشه
    چندتا ماژول هم تا به حال عوض کردم ولی نمیشه

  2. 1-مهندس رحیمی خیلی خیلی از شما تشکر میکنم.
    2-این آموزش به زبان فارسی نبود که شما زحمتش را کشیدی گذاشتید.
    3-خیلی هم به زبان ساده نوشته و قابل فهم بود.

    بازهم تشکر.
    خدا قوت.

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

  3. سلام
    چرا همه فقط بلدن کپی و پیست کنن ان اموزش ها تو نت فراوان هست
    چرا یه نفر پیدا نمیشه که کنترل دو تا رله را از ازطریق سایت ThingSpeak اموزش بده

    1. سلام. دوست عزیز برای مطلبی که شما به این راحتی از کنارش رد میشید وقت فراوان گذاشته شده و کپی پیست نیست. شاید شما به این آموزش نیاز نداشته باشید اما برای دیگران مفید هست. همچنین پروژه های ThingSpeak رو مشاهده کنید.

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

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