كل المشاريع

نظام مراقبة منزل ذكي

قياس الحرارة والرطوبة والغاز مع إنذار وشاشة LCD وتشغيل مروحة تلقائياً.

متوسط

صور وفيديو المشروع

نبذة عن المشروع

يقرأ حساس DHT22 الحرارة والرطوبة وحساس MQ-2 تسرّب الغاز. تُعرض القيم على شاشة LCD I2C، ويعمل الريلي لتشغيل مروحة عند تجاوز الحرارة 30°م، مع صافرة إنذار عند اكتشاف الغاز.

المكونات المطلوبة

كود Arduino IDE

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>

#define DHTPIN 4
#define DHTTYPE DHT22
#define GAS_PIN A0
#define RELAY 7
#define BUZZER 8

DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);

const int GAS_THRESHOLD = 400;
const float TEMP_THRESHOLD = 30.0;

void setup() {
  dht.begin();
  lcd.init();
  lcd.backlight();
  pinMode(RELAY, OUTPUT);
  pinMode(BUZZER, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  float t = dht.readTemperature();
  float h = dht.readHumidity();
  int gas = analogRead(GAS_PIN);

  if (isnan(t) || isnan(h)) {
    lcd.setCursor(0,0); lcd.print("Sensor error   ");
    delay(1000);
    return;
  }

  lcd.setCursor(0,0);
  lcd.print("T:"); lcd.print(t,1); lcd.print("C H:"); lcd.print(h,0); lcd.print("% ");
  lcd.setCursor(0,1);
  lcd.print("GAS:"); lcd.print(gas); lcd.print("      ");

  digitalWrite(RELAY, t > TEMP_THRESHOLD ? HIGH : LOW);

  if (gas > GAS_THRESHOLD) {
    tone(BUZZER, 2000, 300);
    lcd.setCursor(9,1); lcd.print("ALARM");
  } else {
    noTone(BUZZER);
  }

  Serial.print(t); Serial.print(","); Serial.print(h);
  Serial.print(","); Serial.println(gas);
  delay(2000);
}