كيفية عمل جهاز إنذار لكشف الدخان باستخدام Arduino

في هذا المشروع سوف نتعلم كيفية عمل جهاز إنذار لكشف الدخان باستخدام Arduino.  إنها واحدة من أفضل معدات السلامة للمنازل أو المكاتب أو الصناعات.ولكن يمكنك إنشاء نظام إنذار كاشف الدخان الخاص بك باستخدام Arduino. وهي مناسبة للكشف عن NH3 (الأمونيا) ، وأكسيد النيتروجين ، والكبريتيد ، والكحول ، والبنزين ، والدخان ، وثاني أكسيد الكربون ، إلخ. إذا كنت ترغب في القيام بمزيد من المشاريع المتقدمة مثل قياس الغازات بدقة وما إلى ذلك ، فأنت بحاجة إلى معايرتها أولاً. في هذا المشروع ، نكتشف الدخان ونحسب أيضًا نسبة الدخان ، والتي ستظهر على شاشة LCD.


 

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

مخطط دائرة نظام إنذار كاشف الدخان:
 
كود نظام إنذار كاشف الدخان:

#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x3F, 16, 2);

int redLED = 2;
int greenLED = 3;
int buzzer = 9;
int sensor = A0;
float smokePercentage;
float remainingGas;
float tolerance = 20;

int base_value = 305; // base value
int state; // state for blinking LED & buzzer without delay function

unsigned long previousMillis = 0;
const long interval = 400; // interval at which to LED blink & Buzzer sound (milliseconds)

void setup() {
pinMode(redLED, OUTPUT);
pinMode(greenLED, OUTPUT);
pinMode(buzzer, OUTPUT);
pinMode(sensor, INPUT);
Serial.begin(9600);
lcd.begin();
}

void loop() {
unsigned long currentMillis = millis();
float MQ135SensorValues = analogRead(sensor);

Serial.print("Sensor Values: ");
Serial.println(MQ135SensorValues);
lcd.setCursor(0, 0);
lcd.print("Smoke % :");

remainingGas = 1023 - base_value + tolerance;
smokePercentage = (MQ135SensorValues- base_value) /remainingGas ;
if (smokePercentage > 0){
Serial.print("Smoke percentage: ");
Serial.println(smokePercentage*100);
lcd.setCursor(9, 0);
lcd.print(smokePercentage*100);
lcd.setCursor(14, 0);
lcd.print("%");
}
else {
lcd.setCursor(10, 0);
lcd.print("-SAFE-");
}


if (MQ135SensorValues > (base_value + tolerance)) // Checks if MQ135 Sensor Value greater than base + tolerance value
{
digitalWrite(greenLED, LOW);
lcd.setCursor(0, 1);
lcd.print("Smoke Detected!!");
Serial.println("Smoke Detected!!");
if (currentMillis - previousMillis >= interval) {
// save the last time you blinked the LED
previousMillis = currentMillis;
// if the LED & buzzer is off turn it on and vice-versa:
if (state == LOW) {
state = HIGH;
} else {
state = LOW;
}
// Red LED and buzzer go HIGH or LOW
digitalWrite(redLED, state);
digitalWrite(buzzer, state);
}
}
else
{
digitalWrite(redLED, LOW);
digitalWrite(greenLED, HIGH);
digitalWrite(buzzer, LOW);
lcd.setCursor(0, 1);
lcd.print("Sensor Value:");
lcd.setCursor(13, 1);
lcd.print(MQ135SensorValues);

}
delay(500);
lcd.clear();
}

 

إرسال تعليق

أحدث أقدم