مقدمة
في هذا الدرس، ستتعلم كيفية توصيل حساس الغاز مع الاردوينو؛ حتى تتمكن من الكشف عن تسرب الغاز في المنازل أو المصانع أو المكاتب بتكلفة بسيطة.
بعد توصيل حساس الغاز مع الاردوينو يمكنك إضافة شاشة كرستالية تعرض كمية الغاز في المكان ومصدر صوت بمثابة صافرة إنذار حتى يتم إخطار الأفراد بحدوث أي تسرّب ويتم إخلاء المبنى فورًا قبل الوقوع في خطر الحرائق لا قدر الله.
المواد والأدوات
1× اردوينو اونو
1× حساس الغاز
1× 40 رأس دبوس
حساس الغاز
هو حساس يكشف عن تسرب الغاز في المكان.
يُمكن لحساس الغاز الكشف عن الغازات القابلة للاشتعال مثل البوتان، البروبان، الميثان والهيدروجين.
عند زيادة تركيز الغاز في الجو تزداد تبعًا لذلك قيمة الجهد وعند انخفاض تركيز الغاز أو انعدامه تنخفض قيمة الجهد في الحساس.
له أربعة مداخل موضحة في الشكل التالي:
توصيل الدائرة
لمعرفة المزيد حول الشاشة الكرستالية يمكنك الرجوع للدرس التحكم بالشاشة الكرستالية LCD
لابد من تلحيم المنافذ مع الشاشة الكرستالية، للمزيد حول اللحام يمكنك الرجوع للدرس تعلم كيفية التلحيم – تلحيم القطع باللوحة الإلكترونية
الكود البرمجي
#include <LiquidCrystal.h> const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); #define buzzer 8 #define Gas A0 void setup() { Serial.begin(9600); lcd.begin(16,2); pinMode(buzzer,OUTPUT); lcd.setCursor(0, 0); lcd.print("Calibrating"); for(int i = 0; i <10; i++) { if (i==4) { lcd.setCursor(0, 1); lcd.print("."); } else lcd.print("."); delay(500); } lcd.setCursor(5,1); lcd.print("done"); delay(1000); lcd.clear() ; lcd.setCursor(1,0); lcd.print("SENSOR ACTIVE"); delay(1500); lcd.clear(); } void loop() { int gasSensor = analogRead(Gas); if (gasSensor > 300) { digitalWrite(buzzer,HIGH); lcd.setCursor(0, 0); lcd.print("Value: "); lcd.print(gasSensor); Serial.print(gasSensor); Serial.print("\t"); lcd.setCursor(0,1); Serial.println("Gas is Detected"); lcd.print("Gas is Detected"); delay(300); lcd.clear(); } else if (gasSensor < 300) { digitalWrite(buzzer,LOW); lcd.setCursor(0, 0); lcd.print("Value: "); lcd.print(gasSensor); Serial.print(gasSensor); Serial.print("\t"); lcd.setCursor(0,1); Serial.println("Gas not Detected"); lcd.print("Gas not Detected"); delay(300); }}
إذا كانت نسبة التسرب 300 فأكثر سينطلق جرس الإنذار؛ لتنبيه الأفراد المتواجدين في المكان بوجود تسرب وسيكون هناك توضيح لكمية التسرب على الشاشة الكرستالية.
هذا السطر يطلب من الأردوينو استعمال مكتبة الشاشة الكرستالية (حتى يستطيع الاردوينو استيعاب الأوامر الخاصة بالشاشة).
نستطيع تحميلها بتتبع المسار التالي:
Sketch > Include libraries > Manage libraries
ثم نكتب بخانة البحث Liquid crystal by Arduino
ثم نضغط على Install.
#include <LiquidCrystal.h>
هذه الأسطر توضح منافذ الاردوينو التي ستستخدمها للربط في هذا المشروع:
#define buzzer 8 #define Gas A0
بعد ذلك أعلنا عن المتغيرات اللازمة مثل المتغيرات الخاصة بالشاشة الكرستالية والتي تستخدمها المكتبات أيضًا:
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
في الدالة ()setup قمنا بوضع الإعدادات اللازمة مثل تشغيل الشاشة الكرستالية وتهيئتها وبيان جاهزية الحساس لاختبار المكان:
void setup() { Serial.begin(9600); lcd.begin(16,2); pinMode(buzzer,OUTPUT); lcd.setCursor(0, 0); lcd.print("Calibrating"); for(int i = 0; i <10; i++) { if (i==4) { lcd.setCursor(0, 1); lcd.print("."); } else lcd.print("."); delay(500); } lcd.setCursor(5,1); lcd.print("done"); delay(1000); lcd.clear(); lcd.setCursor(1,0); lcd.print("SENSOR ACTIVE"); delay(1500); lcd.clear(); }
تبدأ عملية المعايرة واختبار جاهزية حساس الغاز.
ستظهر رسالة عند انتهاء عملية المعايرة (done).
تليها رسالة تبين جاهزية الحساس لاختبار المكان.
في الدالة ()loop يقوم الحساس بحساب نسبة الغاز الموجود في الهواء.
إذا كانت نسبة الغاز أكثر من 300 فسينطلق جرس الإنذار؛ لتنبيه الأفراد بوجود تسرب وسيتم طباعة نسبة التسرب على الشاشة.
إذا كانت نسبة الغاز أقل من 300 فسينطفئ جرس الإنذار ويُطمئن الأفراد بعدم وجود تسرب وسيتم طباعة نسبة الغاز الطبيعية المنتشرة في الهواء على الشاشة.
void loop() { int gasSensor = analogRead(Gas); if (gasSensor > 300) { digitalWrite(buzzer,HIGH); lcd.setCursor(0, 0); lcd.print("Value: "); lcd.print(gasSensor); Serial.print(gasSensor); Serial.print("\t"); lcd.setCursor(0,1); Serial.println("Gas is Detected"); lcd.print("Gas is Detected"); delay(300); lcd.clear(); } else if (gasSensor < 300) { digitalWrite(buzzer,LOW); lcd.setCursor(0, 0); lcd.print("Value: "); lcd.print(gasSensor); Serial.print(gasSensor); Serial.print("\t"); lcd.setCursor(0,1); Serial.println("Gas not Detected"); lcd.print("Gas not Detected"); delay(300); } }
هنا نسبة الغاز في المكان أكثر من 300.
هنا نسبة الغاز في المكان أقل من 300.