آموزش الکترونیکپروژه الکترونیکپروژه های اینترنت اشیاپروژه های دما و رطوبت

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

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

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

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

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

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

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

  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 فعال است و تمام اجزای دیگر تراشه خاموش هستند. این حالت در جایی که داده ها تا یک بازه زمانی طولانی منتقل نمیشوند، مفید است.
حتما ببینید :  پروژه ماشین حساب با آردوینو (آموزش کامل ساخت با کیپد 4*4 و Arduino)

انواع حالت های خواب (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 نصب شده اند.

در صورتی که با برنامه نویسی برد های ESP8266 آشنایی ندارید لینک زیر را مطالعه کنید.

حتما ببینید :  آموزش ساخت فرستنده رادیویی FM (پروژه آنالوگ با آپ امپ LM386)

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

#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 را بردارید وگرنه خطا ایجاد می شود.

فیلم تست ذخیره انرژی در ESP8266

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

فیلم عملکرد مدار : کلیک کنید !

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

[post_shop]

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

[/post_shop] [lrm_form default_tab=”register” logged_in_message=””]

نظرتان را در مورد این مطلب با ستاره دادن اعلام کنید امیدوارم این مطلب برای شما مفید بوده باشد. نظرات ، مشکلات و پیشنهادات خود را در پایین صفحه اعلام کنید
برچسب ها

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید را قرار دهم.

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

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

دکمه بازگشت به بالا
بستن
بستن