صور وفيديو المشروع
نبذة عن المشروع
يقرأ حساس DHT22 الحرارة والرطوبة وحساس MQ-2 تسرّب الغاز. تُعرض القيم على شاشة LCD I2C، ويعمل الريلي لتشغيل مروحة عند تجاوز الحرارة 30°م، مع صافرة إنذار عند اكتشاف الغاز.
المكونات المطلوبة
- 1لوحة Arduino UNO ابحث في المتجر
- 1حساس حرارة ورطوبة DHT22 ابحث في المتجر
- 1حساس غاز MQ-2 ابحث في المتجر
- 1شاشة LCD 16x2 مع I2C ابحث في المتجر
- 1وحدة ريلي قناة واحدة ابحث في المتجر
- 1صافرة Buzzer ابحث في المتجر
كود 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);
}