آموزش‌های کاربردیبایگانی مطالبپروژه‌های ESP32خانه هوشمند

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

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

آشپزخانه هوشمند مجهز به IoT

در این پروژه قصد داریم با استفاده از اینترنت اشیاء یک آشپزخانه هوشمند مجهز به IoT بسازیم. این سیستم از چند تا سنسور، رله و یک بورد NodeMCU8266 ساخته می‌شه. علاوه بر این، از طریق اپلیکیشن Blynk می‌تونیم فرمان‌هایی برای کنترل لوازم و وسایل آشپزخانه ارسال کنیم.

مدیریت آشپزخانه هوشمند مجهز به IoT

آشپزخانه هوشمند مجهز به IoT می‌تونه:

  • با استفاده از سنسور DHT11 در اپلیکیشن Blynk دما و رطوبت آشپزخانه رو کنترل کنه.


  • با استفاده از سنسور گاز MQ-135 در Blynk شاخص کیفیت هوا (گاز) رو کنترل کنه.


  • سطح دما، رطوبت و گاز آشپزخانه رو در نمایشگر 96″ OLED نشون می‌ده.


  • وقتی سطح گاز بالا بره هواکش روشن می‌شه و آژیر به صدا در میاد.


  • با استفاده از سنسور PIR وجود و عدم وجود افراد در آشپزخانه رو تشخیص می‌ده.


  • وضعیت آژیر، هواکش و افراد حاضر در اتاق رو به اپلیکیشن Blynk ارسال می‌کنه.


  • کاربر می‌تونه از راه دور و از طریق Blynk یخچال، اجاق گاز و چراغ‌های اتاق رو خاموش و روشن کنه.


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

قطعات مورد نیاز برای ساخت آشپزخانه هوشمند مجهز به IoT

برای ساخت پروژه آشپزخانه هوشمند مجهز به 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 بورد smart kitchen

بعد از اون اون طرح رو به یک PCB تبدیل کردم. بورد PCB آشپزخانه هوشمند مجهز به IoT چیزی شبیه تصویر زیر هست:

طراحی گربر PCB بورد smart kitchen

فایل گربر PCB رو می‌تونین از این لینک دانلود کنین.

قطعات رو هم می‌تونین روی بورد PCB وصل کنین.

طراحی گربر PCB بورد smart kitchen


راه‌اندازی اپلیکیشن Blynk

برای اینکه بتونیم داده‌ها رو از ESP8266 دریافت کنیم باید اپلیکیشن Blynk رو راه‌اندازی کنیم.

نرم افزار Blynk

Blynk یک اپلیکیشن هست که هم در دستگاه‌های اندروید و هم در دستگاه‌های IOS اجرا می‌شه و از طریق تلفن‌های هوشمند اپلیکیشن‌های مبتنی بر IoT رو کنترل می‌کنه. با استفاده از این اپلیکیشن می‌تونین خودتون یک رابط کاربری گرافیکی برای اپلیکیشن IoT ایجاد کنین. در این اپلکیشن دمای اتاق، رطوبت و داده‌های مربوط به کیفیت هوا رو نشون می‌دیم و لوازم آشپزخانه رو کنترل می‌کنیم.

لینک دانلود برنامه

  1. اپلیکیشن Blynk رو از Google Play Store دانلود کنین و اونو نصب کنین. کاربران IOS می‌تونن این اپلیکیشن رو از App Store دانلود کنن. بعد از دانلود، Blynk رو باز کنین و با استفاده از ایمیل و پسووردتون sign up کنین.

  2. از قسمت dashboard یک پروژه جدید ایجاد کنین و NodeMCU Board و Wifi Connesction رو انتخاب کنین.
    نرم افزار blynk


  3. حالا 3 تا button و همچنین 2 تا Styled button و در انتها 3 تا gauge از widget list رو یا drag & drop یا اضافه کنین.
    نرم افزار blynk


  4. سه تا متغیر انتخاب کنین و اسم‌شون رو بذارین دما، رطوبت و شاخص کیفیت هوا.
    نرم افزار blynk


  5. حالا سه تا متغیر برای کلید و 2 تا متغیر برای styled button انتخاب کنین.
    نرم افزار blynkنرم افزار blynk


  6. کد احراز هویت از طریق ایمیل براتون ارسال می‌شه. این کد رو کپی کنین، بعدها در اسکرپیت ازش استفاده می‌کنیم.
    راه اندازی نرم افزار blynk

سورس کد آشپزخانه هوشمند

کد مربوط به این پروژه رو در این قسمت می‌تونین مشاهده کنین. اما قبل از هر چیزی باید کتابخانه‌های زیر رو به Arduino IDE اضافه کنیم.

  1. کتابخانه DHT11 | لینک دانلود
  2. کتابخانه MQ-135 | لینک دانلود
  3. کتابخانه Adafruit GFX | لینک دانلود
  4. کتابخانه Adafruit SSD1306 | لینک دانلود
  5. کتابخانه 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 دما، رطوبت و میزان گاز فضای آشپزخانه رو نشون می‌ده.

اتصالات آشپزخانه هوشمند مجهز به IoT

این نمایشگر بعد از اینکه به شبکه وای فای متصل شد داده‌ها رو به Blynk ارسال می‌کنه.

تست آشپزخانه هوشمند مجهز به IoT با گوشی همراه

Blynk اطلاعات مربوط به دما، میزان رطوبت، شاخص کیفیت هوا رو دریافت می‌کنه و اونا رو در Gauge نمایش می‌ده. این اپلیکیشن روشن و خاموش بودن و هم‌چنین حضور و عدم حضور افراد در اتاق رو نشون می‌ده.

اتوماسیون خانگی با بورد Raspberry Pi


جمع بندی

توی این مقاله یک آشپزخانه هوشمند رو بررسی کردیم و دیدیم که چه آسان میتوان بر تمام اتفاقات کنترل داشت. به گونه ای که به محض بالا رفتن سطح گاز از حد آستانه، رله‌ای که به هواکش وصل هست به صورت خودکار فعال می‌شه. حد آستانه روی 150 پی‌پی‌ام (PPM) تنظیم شده. شما می‌تونین مقدار آستانه رو به دلخواه تغییر بدین. از طریق Blynk می‌تونین فرمان‌هایی ارسال کنین و برای مثال لوازم آشپزخانه مثل یخچال، اجاق گاز و چراغ‌ها رو خاموش و روشن کنین و همچنین کنترل های دیگه که میشه انجام داد و ما در مقالات آتی به اون ها اشاره خواهیم کرد.

این مقاله چطور بود ؟
+1
5
+1
1
+1
0
مشاهده بیشتر

محمد حسنی

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

نوشته های مشابه

2 دیدگاه

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

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