در این پروژه، قصد داریم با استفاده از NodeMCU یک آشپزخانه هوشمند مجهز به IoT و سیستم کنترل و اتوماسیون بسازیم. آشپزخانه یکی از مهمترین قسمتهای خونه هست. هنگام کار کردن در آشپزخانه یکی از مواردی که خیلی اهمیت پیدا میکنه امنیت اونه. برای مثال، نشت گاز، آتش مهارنشدنی، دمای بیش از حد در محیط مربوطه باید سریعاً شناسایی بشن و بهشون رسیدگی کرد. علاوه بر اون، خیلی مهمه که بتونیم لوازم و وسایل آشپزخانه مثل چراغها، یخچال، اجاق گاز و غیره رو از راه دور کنترل کنیم و بر اون ها نظارت داشته باشیم.
در این پروژه قصد داریم با استفاده از اینترنت اشیاء یک آشپزخانه هوشمند مجهز به IoT بسازیم. این سیستم از چند تا سنسور، رله و یک بورد NodeMCU8266 ساخته میشه. علاوه بر این، از طریق اپلیکیشن Blynk میتونیم فرمانهایی برای کنترل لوازم و وسایل آشپزخانه ارسال کنیم.
آشپزخانه هوشمند مجهز به IoT میتونه:
-
با استفاده از سنسور DHT11 در اپلیکیشن Blynk دما و رطوبت آشپزخانه رو کنترل کنه.
-
با استفاده از سنسور گاز MQ-135 در Blynk شاخص کیفیت هوا (گاز) رو کنترل کنه.
-
سطح دما، رطوبت و گاز آشپزخانه رو در نمایشگر 96″ OLED نشون میده.
-
وقتی سطح گاز بالا بره هواکش روشن میشه و آژیر به صدا در میاد.
-
با استفاده از سنسور PIR وجود و عدم وجود افراد در آشپزخانه رو تشخیص میده.
-
وضعیت آژیر، هواکش و افراد حاضر در اتاق رو به اپلیکیشن Blynk ارسال میکنه.
-
کاربر میتونه از راه دور و از طریق Blynk یخچال، اجاق گاز و چراغهای اتاق رو خاموش و روشن کنه.
قطعات مورد نیاز
برای ساخت پروژه آشپزخانه هوشمند مجهز به IoT به قطعات لیست زیر نیاز داریم.
قطعات مورد نیاز
-
ESP8266 (بورد NodeMCU ESP8266-12E بورد Wemos D1 Mini)
-
سنسور DHT11 (سنسور دما و رطوبت)
-
سنسور MQ-135 (سنسور گاز یا کیفیت هوا)
-
سنسور HC-SR501 (سنسور مادون قرمز غیرفعال)
-
نمایشگر OLED (نمایشگر 0.96″ 128X64 I2C OLED)
-
بازر (بازر پیزو 5 ولت اکتیو )
-
رله (رله بورد 4 کاناله)
-
سیم جامپر (سیم های جامپر تری/مادگی)
-
بردبورد (بردبورد 830 نقطه)
-
کابل USB (کابل داده Micro-USB)
طراحی سیستم و دیاگرام مدار
در این پروژه، برای کنترل پارامترهای کیفیت هوای داخل خانه از سنسورهای رطوبت سنج DHT11، سنسور گاز MQ-135، سنسور مادون قرمز غیرفعال(PIR) استفاده میکنیم. از بازر 5 ولت هم به عنوان یک سیستم هشدار دهنده استفاده میکنیم. یک هواکش رو هم به رله وصل میکنیم که اگه سطح گاز از حد آستانه بالاتر رفت به صور خودکار فعال میشه.
با توجه به اینکه ما قراره از رله 4 کاناله استفاده کنیم، 3 تا رله باقیمانده رو میتونین به لوازم آشپزخانه مثل میکسر، یخچال، اجاق گاز، آبگرمکن، اجاق گاز دیجیتال و غیره وصل کنین. دما، سطح رطوبت، گاز به صورت زنده در نمایشگر 0.96″ I2C OLED نشون داده میشن. اصلیترین قطعه به کار رفته در این پروژه بورد Wemos D1 Mini یا بورد NodeMCU ESP8266 است. برای انجام این پروژه میتونین از انواع بوردهای مبتنی بر ESP8266-12E استفاده کنین. تراشه ESP8266 به شبکه Wi-Fi متصل میشه و با اپلیکیشن Blynk ارتباط برقرار میکنه.
طبق تصویر زیر اتصالا قطعات رو انجام میدیم.
طبق تصاویر بالا اتصالات رو انجام بدین و مدار رو روی بورد وصل کنین. پینهای SDA و SCL نمایشگر OLED رو به پین D2 و D1 وصل کنین. پین خروجی DHT11، MQ-135 و سنسور PIR رو به پین D4، A0 و D3 بورد Wemos وصل کنین. برای سیستم هشدار هم میتونین بازر 5 ولت اکتیو رو به پین D0 بورد Wemos وصل کنین. برای کنترل لوازم خانه هم میتونیم از رله 4 کاناله استفاده کنیم. پس با استفاده از سیمهای جامپر پین خروجی رله 4 کاناله رو به پینهای D5، D6 و D8 بورد Wemos وصل کنین.
طراحی فایلهای گربر PCB / دانلود PCB
اگه نمیخواین مدار رو روی بردبورد وصل کنین، برای انجام این پروژه میتونین از این PCB استفاده کنین. من این PCB رو طراحی کردم که میتونید با استفاده از لینکی که در ادامه میزارم، فایل گربر رو دانلود کنید.
بعد از اون اون طرح رو به یک PCB تبدیل کردم. بورد PCB آشپزخانه هوشمند مجهز به IoT چیزی شبیه تصویر زیر هست:
فایل گربر PCB رو میتونین از این لینک دانلود کنین.
قطعات رو هم میتونین روی بورد PCB وصل کنین.
راهاندازی اپلیکیشن Blynk
برای اینکه بتونیم دادهها رو از ESP8266 دریافت کنیم باید اپلیکیشن Blynk رو راهاندازی کنیم.
Blynk یک اپلیکیشن هست که هم در دستگاههای اندروید و هم در دستگاههای IOS اجرا میشه و از طریق تلفنهای هوشمند اپلیکیشنهای مبتنی بر IoT رو کنترل میکنه. با استفاده از این اپلیکیشن میتونین خودتون یک رابط کاربری گرافیکی برای اپلیکیشن IoT ایجاد کنین. در این اپلکیشن دمای اتاق، رطوبت و دادههای مربوط به کیفیت هوا رو نشون میدیم و لوازم آشپزخانه رو کنترل میکنیم.
لینک دانلود برنامه
- اپلیکیشن Blynk رو از Google Play Store دانلود کنین و اونو نصب کنین. کاربران IOS میتونن این اپلیکیشن رو از App Store دانلود کنن. بعد از دانلود، Blynk رو باز کنین و با استفاده از ایمیل و پسووردتون sign up کنین.
- از قسمت dashboard یک پروژه جدید ایجاد کنین و NodeMCU Board و Wifi Connesction رو انتخاب کنین.
- حالا 3 تا button و همچنین 2 تا Styled button و در انتها 3 تا gauge از widget list رو یا drag & drop یا اضافه کنین.
- سه تا متغیر انتخاب کنین و اسمشون رو بذارین دما، رطوبت و شاخص کیفیت هوا.
- حالا سه تا متغیر برای کلید و 2 تا متغیر برای styled button انتخاب کنین.
- کد احراز هویت از طریق ایمیل براتون ارسال میشه. این کد رو کپی کنین، بعدها در اسکرپیت ازش استفاده میکنیم.
سورس کد آشپزخانه هوشمند
کد مربوط به این پروژه رو در این قسمت میتونین مشاهده کنین. اما قبل از هر چیزی باید کتابخانههای زیر رو به Arduino IDE اضافه کنیم.
- کتابخانه DHT11 | لینک دانلود
- کتابخانه MQ-135 | لینک دانلود
- کتابخانه Adafruit GFX | لینک دانلود
- کتابخانه Adafruit SSD1306 | لینک دانلود
- کتابخانه Blynk ESP8266 | لینک دانلود
پس از اضافه کردن تمامی این کتابخانهها، کد رو میشه به آسانی کامپایل کرد. اما برای برقراری اینترنت وای فای و اتصال Blynk با بورد Wemos ESP8266 باید WiFi SSID، Password و Authentication Token اپلیکیشن Blynk رو عوض کنین.
char auth[] = "**************************"; //Get Auth Token in the Blynk App. char ssid[] = "**************************"; // Your WiFi credentials. char pass[] = "**************************";
کد کامل این پروژه در این قسمت ارائه شده. این کد رو در Arduino IDE کپی کنین. حالا از Board manager بورد Wemos D1 و همچنین port رو انتخاب کنین و کد رو بارگذاری کنین.
#define BLYNK_PRINT Serial #include <ESP8266WiFi.h> #include <BlynkSimpleEsp8266.h> #include <SPI.h> #include <Wire.h> #include "MQ135.h" #include <Adafruit_Sensor.h> #include <DHT.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> char auth[] = "**************************"; // You should get Auth Token in the Blynk App. char ssid[] = "**************************"; // Your WiFi credentials. char pass[] = "**************************"; #define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 64 // OLED display height, in pixels #define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin) #define DHTTYPE DHT11 // DHT 11 #define DHTPIN D4 #define relay_fan D5 #define relay_light D6 #define relay_fridge D7 #define relay_oven D8 #define buzzer_alarm D0 #define pir_human D3 int alarm_status; int pir_status = 0; DHT dht(DHTPIN, DHTTYPE); Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); void setup() { Serial.begin(115200); dht.begin(); display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //initialize with the I2C addr 0x3C (128x64) Blynk.begin(auth, ssid, pass); pinMode(pir_human, INPUT); pinMode(buzzer_alarm, OUTPUT); pinMode(relay_fan, OUTPUT); pinMode(relay_light, OUTPUT); pinMode(relay_fridge, OUTPUT); pinMode(relay_oven, OUTPUT); digitalWrite(buzzer_alarm, LOW); digitalWrite(relay_fan, HIGH); digitalWrite(relay_light, HIGH); digitalWrite(relay_fridge, HIGH); digitalWrite(relay_oven, HIGH); delay(100); } void loop() { Blynk.run(); MQ135 gasSensor = MQ135(A0); float air_quality = gasSensor.getPPM(); float t = dht.readTemperature(); float h = dht.readHumidity(); pir_status = digitalRead(pir_human); alarm_status = digitalRead(buzzer_alarm); if (pir_status == 1) { Serial.println("Person Detected"); } else if (pir_status == 0) { Serial.println("No One in Room"); } if (air_quality > 150) { digitalWrite(buzzer_alarm, HIGH); digitalWrite(relay_fan, LOW); Serial.println("Buzzer Status: ON"); Serial.println("Exhaust Fan: ON"); } else { digitalWrite(buzzer_alarm, LOW); digitalWrite(relay_fan, HIGH); Serial.println("Buzzer Status: OFF"); Serial.println("Exhaust Fan: OFF"); } Serial.print("Air Quality: "); Serial.print(air_quality); Serial.println(" PPM"); Serial.print("Temperature: "); Serial.print(t); Serial.println(" *C"); Serial.print("Humidity: "); Serial.print(h); Serial.println(" %"); Serial.println(); Serial.println("****************************"); Serial.println(); Blynk.virtualWrite(V1, t); // For Temperature Blynk.virtualWrite(V2, h); // For Humidity Blynk.virtualWrite(V3, air_quality); // For Gas Blynk.virtualWrite(V4, alarm_status); // For Alarm & Exhaust Fan Blynk.virtualWrite(V5, pir_status); // For Human Detection display.clearDisplay(); display.setCursor(0, 0); //oled display display.setTextSize(1); display.setTextColor(WHITE); display.println("Air Quality Index"); display.setCursor(0, 20); //oled display display.setTextSize(2); display.setTextColor(WHITE); display.print(air_quality); display.setTextSize(1); display.setTextColor(WHITE); display.println(" PPM"); display.display(); delay(1500); display.clearDisplay(); // display temperature display.setTextSize(1); display.setCursor(0, 0); display.print("Temperature: "); display.setTextSize(2); display.setCursor(0, 10); display.print(t); display.print(" "); display.setTextSize(1); display.cp437(true); display.write(167); display.setTextSize(2); display.print("C"); // display humidity display.setTextSize(1); display.setCursor(0, 35); display.print("Humidity: "); display.setTextSize(2); display.setCursor(0, 45); display.print(h); display.print(" %"); display.display(); delay(1500); }
آزمایش پروژه آشپزخانه هوشمند مجهز به IoT
پس از بارگذاری کد، بورد Wemos D1 تلاش میکنه با استفاده از SSID و Password به شبکه وای فای وصل بشه. در همین حین میتونین سریال مانیتور رو باز کنین. میزان رطوبت، دما، شاخص کیفیت هوا، وضعیت هشدار و حضور افراد در اتاق و غیره در سریال مانیتور نشان داده میشه.
نمایشگر OLED دما، رطوبت و میزان گاز فضای آشپزخانه رو نشون میده.
این نمایشگر بعد از اینکه به شبکه وای فای متصل شد دادهها رو به Blynk ارسال میکنه.
Blynk اطلاعات مربوط به دما، میزان رطوبت، شاخص کیفیت هوا رو دریافت میکنه و اونا رو در Gauge نمایش میده. این اپلیکیشن روشن و خاموش بودن و همچنین حضور و عدم حضور افراد در اتاق رو نشون میده.
جمع بندی
توی این مقاله یک آشپزخانه هوشمند رو بررسی کردیم و دیدیم که چه آسان میتوان بر تمام اتفاقات کنترل داشت. به گونه ای که به محض بالا رفتن سطح گاز از حد آستانه، رلهای که به هواکش وصل هست به صورت خودکار فعال میشه. حد آستانه روی 150 پیپیام (PPM) تنظیم شده. شما میتونین مقدار آستانه رو به دلخواه تغییر بدین. از طریق Blynk میتونین فرمانهایی ارسال کنین و برای مثال لوازم آشپزخانه مثل یخچال، اجاق گاز و چراغها رو خاموش و روشن کنین و همچنین کنترل های دیگه که میشه انجام داد و ما در مقالات آتی به اون ها اشاره خواهیم کرد.
سلام چرا بر روی لینک دانلودBlynkمیزنیم،دانلود نمیشود؟
لینک اصلاح شد میتونید مجدد تست کنید.