- المكونات المطلوبة:
- مخطط الدائرة وشرحها:
- شرح العمل:
- شرح الكود:
- "؛ صفحة الويب + =" جودة الهواء "؛ صفحة الويب + = جودة الهواء ؛ صفحة الويب + =" PPM "؛ صفحة الويب + ="
"؛
سيستدعي الكود التالي وظيفة تسمى sendData وسيقوم بإرسال سلاسل البيانات والرسالة إلى صفحة الويب لإظهارها.
sendData (cipSend، 1000، DEBUG) ؛ sendData (صفحة ويب ، 1000 ، DEBUG) ؛ cipSend = "AT + CIPSEND =" ؛ cipSend + = معرف الاتصال ؛ cipSend + = "،" ؛ cipSend + = webpage.length () ؛ cipSend + = "\ r \ n"؛
سيقوم الكود التالي بطباعة البيانات على شاشة LCD. لقد طبقنا شروطًا مختلفة لفحص جودة الهواء ، وستقوم شاشات الكريستال السائل بطباعة الرسائل وفقًا للظروف وسوف يصدر صوت صفير أيضًا إذا تجاوز التلوث 1000 جزء في المليون.
lcd.setCursor (0 ، 0) ؛ lcd.print ("جودة الهواء") ؛ lcd.print (جودة الهواء) ؛ lcd.print ("جزء في المليون") ؛ lcd.setCursor (0،1) ؛ if (air_quality <= 1000) {lcd.print ("Fresh Air") ؛ digitalWrite (8 ، منخفض) ؛
أخيرًا ، ستقوم الوظيفة أدناه بإرسال البيانات وإظهارها على صفحة الويب. سيتم حفظ البيانات التي قمنا بتخزينها في سلسلة باسم "صفحة الويب" في سلسلة باسم "الأمر" . سيقوم برنامج ESP بعد ذلك بقراءة الحرف واحدًا تلو الآخر من "الأمر" وسيقوم بطباعته على صفحة الويب.
String sendData (أمر String، const int timeout، boolean debug) {String response = ""؛ esp8266.print (أمر) ؛ // أرسل حرف القراءة إلى esp8266 long int time = millis () ؛ while ((time + timeout)> millis ()) {while (esp8266.available ()) {// يحتوي esp على بيانات لذا اعرض إخراجها على النافذة التسلسلية char c = esp8266.read () ؛ // اقرأ الحرف التالي. استجابة + = ج ؛ }} if (debug) {Serial.print (response)؛ } عودة الرد؛ }
- اختبار ومخرجات المشروع:
في هذا المشروع ، سنقوم بإنشاء نظام مراقبة تلوث الهواء القائم على إنترنت الأشياء ، حيث سنراقب جودة الهواء عبر خادم ويب باستخدام الإنترنت وسنطلق إنذارًا عندما تنخفض جودة الهواء إلى ما بعد مستوى معين ، وهذا يعني وجود كمية كافية من الغازات الضارة الموجودة في الهواء مثل ثاني أكسيد الكربون والدخان والكحول والبنزين و NH3. سيعرض جودة الهواء في PPM على شاشة LCD وكذلك على صفحة الويب حتى نتمكن من مراقبته بسهولة بالغة.
في السابق قمنا ببناء كاشف غاز البترول المسال باستخدام مستشعر MQ6 وكاشف الدخان باستخدام مستشعر MQ2 ولكن هذه المرة استخدمنا مستشعر MQ135 كمستشعر جودة الهواء وهو الخيار الأفضل لمراقبة جودة الهواء حيث يمكنه اكتشاف الغازات الضارة ويمكن قياس مقدارها بدقة. في مشروع IOT هذا ، يمكنك مراقبة مستوى التلوث من أي مكان باستخدام جهاز الكمبيوتر أو الهاتف المحمول. يمكننا تثبيت هذا النظام في أي مكان ويمكننا أيضًا تشغيل بعض الأجهزة عندما يتجاوز التلوث مستوى معينًا ، مثل يمكننا تشغيل مروحة العادم أو إرسال رسائل تنبيه / بريد إلكتروني إلى المستخدم.
المكونات المطلوبة:
- مستشعر الغاز MQ135
- اردوينو اونو
- وحدة Wi-Fi ESP8266
- 16X2 LCD
- اللوح
- مقياس الجهد 10 كيلو
- مقاومات 1 كيلو أوم
- 220 أوم المقاوم
- صفارة
يمكنك شراء جميع المكونات المذكورة أعلاه من هنا.
مخطط الدائرة وشرحها:
بادئ ذي بدء ، سنقوم بتوصيل ESP8266 بـ Arduino. يعمل ESP8266 على 3.3 فولت وإذا كنت ستعطيه 5 فولت من Arduino فلن يعمل بشكل صحيح وقد يتعرض للضرر. قم بتوصيل VCC و CH_PD بدبوس 3.3 فولت من Arduino. يعمل دبوس RX الخاص بـ ESP8266 على 3.3 فولت ولن يتصل بـ Arduino عندما نقوم بتوصيله مباشرة بـ Arduino. لذلك ، سيتعين علينا عمل مقسم جهد له والذي سيحول 5V إلى 3.3V. يمكن القيام بذلك عن طريق توصيل ثلاثة مقاومات في سلسلة كما فعلنا في الدائرة. قم بتوصيل دبوس TX الخاص بـ ESP8266 بالدبوس 10 من Arduino ودبوس RX الخاص بـ esp8266 إلى الطرف 9 من Arduino من خلال المقاومات.
تتيح وحدة ESP8266 Wi-Fi لمشاريعك الوصول إلى شبكة Wi-Fi أو الإنترنت. إنه جهاز رخيص للغاية ويجعل مشاريعك قوية للغاية. يمكنه التواصل مع أي متحكم وهو أكثر الأجهزة الرائدة في منصة IOT. تعرف على المزيد حول استخدام ESP8266 مع Arduino هنا.
ثم سنقوم بتوصيل مستشعر MQ135 بـ Arduino. قم بتوصيل VCC والدبوس الأرضي للمستشعر بجهد 5 فولت وأرضي Arduino والدبوس التناظري للمستشعر A0 من Arduino.
قم بتوصيل الجرس بالدبوس 8 من Arduino والذي سيبدأ في إصدار صوت تنبيه عندما تصبح الحالة صحيحة.
أخيرًا ، سنقوم بتوصيل LCD بـ Arduino. اتصالات شاشة LCD هي كما يلي
- قم بتوصيل السن 1 (VEE) بالأرض.
- قم بتوصيل السن 2 (VDD أو VCC) بالجهد 5V.
- قم بتوصيل الدبوس 3 (V0) بالدبوس الأوسط لمقياس الجهد 10K وقم بتوصيل الطرفين الآخرين لمقياس الجهد بـ VCC و GND. يستخدم مقياس الجهد للتحكم في تباين شاشة LCD. سيعمل مقياس الجهد من القيم بخلاف 10 كيلو بايت أيضًا.
- قم بتوصيل الدبوس 4 (RS) بالدبوس 12 في Arduino.
- قم بتوصيل دبوس 5 (قراءة / كتابة) بأرض Arduino. لا يتم استخدام هذا الدبوس كثيرًا ، لذا سنقوم بتوصيله بالأرض.
- قم بتوصيل الطرف 6 (E) بالدبوس 11 في Arduino. دبوس RS و E هما دبابيس التحكم التي تستخدم لإرسال البيانات والأحرف.
- الدبابيس الأربعة التالية عبارة عن دبابيس بيانات تُستخدم للتواصل مع Arduino.
قم بتوصيل الطرف 11 (D4) بالدبوس 5 من Arduino.
قم بتوصيل الطرف 12 (D5) بالدبوس 4 من Arduino.
قم بتوصيل دبوس 13 (D6) بالدبوس 3 من Arduino.
قم بتوصيل دبوس 14 (D7) بالدبوس 2 من Arduino.
- قم بتوصيل دبوس 15 بـ VCC من خلال المقاوم 220 أوم. سيتم استخدام المقاوم لضبط سطوع الضوء الخلفي. القيم الأكبر ستجعل الضوء الخلفي أكثر قتامة.
- قم بتوصيل دبوس 16 بالأرض.
شرح العمل:
يمكن أن يستشعر مستشعر MQ135 NH3 وأكاسيد النيتروجين والكحول والبنزين والدخان وثاني أكسيد الكربون وبعض الغازات الأخرى ، لذلك فهو مستشعر غاز مثالي لمشروع مراقبة جودة الهواء. عندما نقوم بتوصيله بـ Arduino ، فسوف يستشعر الغازات ، وسنحصل على مستوى التلوث في PPM (أجزاء في المليون). يعطي مستشعر الغاز MQ135 الإخراج في شكل مستويات جهد ونحتاج إلى تحويله إلى جزء في المليون. لذلك لتحويل الإخراج في PPM ، استخدمنا هنا مكتبة لمستشعر MQ135 ، وهو موضح بالتفصيل في قسم "شرح الكود" أدناه.
كان المستشعر يعطينا قيمة 90 عندما لم يكن هناك غاز بالقرب منه ومستوى جودة الهواء الآمن هو 350 جزء في المليون ويجب ألا يتجاوز 1000 جزء في المليون. عندما يتجاوز الحد 1000 جزء في المليون ، فإنه يبدأ في التسبب في الصداع والنعاس والركود والهواء الذي لا معنى له وخانق وإذا تجاوز 2000 جزء في المليون فإنه يمكن أن يتسبب في زيادة معدل ضربات القلب والعديد من الأمراض الأخرى.
عندما تكون القيمة أقل من 1000 جزء في المليون ، ستعرض شاشة LCD وصفحة الويب عبارة "Fresh Air". كلما زادت القيمة 1000 جزء في المليون ، سيبدأ الجرس في إصدار صفير وستعرض شاشة LCD وصفحة الويب "هواء ضعيف ، فتح Windows". إذا كان سيزيد 2000 ، فسيستمر الجرس في إصدار صوت تنبيه وستعرض شاشة LCD وصفحة الويب عبارة "خطر! الانتقال إلى الهواء الطلق ".
شرح الكود:
قبل البدء في الترميز لهذا المشروع ، نحتاج أولاً إلى معايرة مستشعر الغاز MQ135. هناك الكثير من العمليات الحسابية المتضمنة في تحويل ناتج المستشعر إلى قيمة PPM ، وقد أجرينا هذا الحساب من قبل في مشروع Smoke Detector السابق. ولكن هنا نستخدم المكتبة لـ MQ135 ، يمكنك تنزيل مكتبة MQ135 هذه وتثبيتها من هنا:
باستخدام هذه المكتبة ، يمكنك الحصول على قيم PPM مباشرةً ، فقط باستخدام السطرين التاليين:
MQ135 gasSensor = MQ135 (A0) ؛ تعويم air_quality = gasSensor.getPPM () ،
ولكن قبل ذلك ، نحتاج إلى معايرة مستشعر MQ135 ، لمعايرة المستشعر ، قم بتحميل الكود المحدد أدناه والسماح بتشغيله لمدة 12 إلى 24 ساعة ثم الحصول على قيمة RZERO .
# تضمين إعداد باطل "MQ135.h" () {Serial.begin (9600)؛ } حلقة فارغة () {MQ135 gasSensor = MQ135 (A0) ؛ // إرفاق المستشعر بالدبوس A0 float rzero = gasSensor.getRZero () ؛ Serial.println (rzero) ؛ تأخير (1000) ؛ }
بعد الحصول على قيمة RZERO . ضع قيمة RZERO في ملف المكتبة الذي قمت بتنزيله "MQ135.h": #define RZERO 494.63
يمكننا الآن بدء الكود الفعلي لمشروع مراقبة جودة الهواء.
في الكود ، حددنا أولاً المكتبات والمتغيرات الخاصة بمستشعر الغاز وشاشة LCD. باستخدام مكتبة البرامج التسلسلية ، يمكننا جعل أي دبوس رقمي مثل TX و RX pin. في هذا الرمز ، قمنا بعمل Pin 9 كدبوس RX والدبوس 10 باعتباره دبوس TX لـ ESP8266. ثم قمنا بتضمين مكتبة LCD وحددنا المسامير لنفسه. لقد حددنا أيضًا متغيرين آخرين: أحدهما للدبوس التناظري للحساس والآخر لتخزين قيمة جودة الهواء .
#تضمن
ثم سنعلن أن الدبوس 8 هو دبوس الإخراج حيث قمنا بتوصيل الجرس. سيبدأ الأمر l cd.begin (16،2) شاشة LCD لتلقي البيانات ثم سنقوم بتعيين المؤشر على السطر الأول وسنقوم بطباعة "الدوائر الكهربية" . ثم سنقوم بتعيين المؤشر على السطر الثاني وسنقوم بطباعة "Sensor Warming" .
pinMode (8 ، الإخراج) ؛ lcd.begin (16.2) ؛ lcd.setCursor (0،0) ؛ lcd.print ("دارة الديجيست") ؛ lcd.setCursor (0،1) ؛ lcd.print ("استشعار الاحترار") ؛ تأخير (1000) ؛
ثم سنقوم بتعيين معدل الباود للاتصال التسلسلي. تتمتع أجهزة ESP المختلفة بمعدلات باود مختلفة ، لذا اكتبها وفقًا لمعدل الباود الخاص بـ ESP. ثم سنرسل الأوامر لتعيين ESP للتواصل مع Arduino وإظهار عنوان IP على الشاشة التسلسلية.
Serial.begin (115200) ؛ esp8266.begin (115200) ؛ sendData ("AT + RST \ r \ n"، 2000، DEBUG)؛ sendData ("AT + CWMODE = 2 \ r \ n"، 1000، DEBUG)؛ sendData ("AT + CIFSR \ r \ n"، 1000، DEBUG)؛ sendData ("AT + CIPMUair_quality = 1 \ r \ n"، 1000، DEBUG)؛ sendData ("AT + CIPSERVER = 1،80 \ r \ n"، 1000، DEBUG)؛ pinMode (sensorPin ، INPUT) ؛ lcd.clear () ؛
لطباعة الإخراج على صفحة الويب في متصفح الويب ، سيتعين علينا استخدام برمجة HTML. لذلك ، أنشأنا سلسلة باسم webpage وقمنا بتخزين الإخراج فيها. نحن نطرح 48 من الناتج لأن دالة read () ترجع قيمة ASCII العشرية ويبدأ الرقم العشري الأول وهو 0 عند 48.
if (esp8266.available ()) {if (esp8266.find ("+ IPD،")) {delay (1000) ؛ int connectId = esp8266.read () - 48 ؛ سلسلة صفحة الويب = "
نظام مراقبة تلوث الهواء IOT
"؛ صفحة الويب + =""؛ صفحة الويب + =" جودة الهواء "؛ صفحة الويب + = جودة الهواء ؛ صفحة الويب + =" PPM "؛ صفحة الويب + ="
"؛
سيستدعي الكود التالي وظيفة تسمى sendData وسيقوم بإرسال سلاسل البيانات والرسالة إلى صفحة الويب لإظهارها.
sendData (cipSend، 1000، DEBUG) ؛ sendData (صفحة ويب ، 1000 ، DEBUG) ؛ cipSend = "AT + CIPSEND =" ؛ cipSend + = معرف الاتصال ؛ cipSend + = "،" ؛ cipSend + = webpage.length () ؛ cipSend + = "\ r \ n"؛
سيقوم الكود التالي بطباعة البيانات على شاشة LCD. لقد طبقنا شروطًا مختلفة لفحص جودة الهواء ، وستقوم شاشات الكريستال السائل بطباعة الرسائل وفقًا للظروف وسوف يصدر صوت صفير أيضًا إذا تجاوز التلوث 1000 جزء في المليون.
lcd.setCursor (0 ، 0) ؛ lcd.print ("جودة الهواء") ؛ lcd.print (جودة الهواء) ؛ lcd.print ("جزء في المليون") ؛ lcd.setCursor (0،1) ؛ if (air_quality <= 1000) {lcd.print ("Fresh Air") ؛ digitalWrite (8 ، منخفض) ؛
أخيرًا ، ستقوم الوظيفة أدناه بإرسال البيانات وإظهارها على صفحة الويب. سيتم حفظ البيانات التي قمنا بتخزينها في سلسلة باسم "صفحة الويب" في سلسلة باسم "الأمر" . سيقوم برنامج ESP بعد ذلك بقراءة الحرف واحدًا تلو الآخر من "الأمر" وسيقوم بطباعته على صفحة الويب.
String sendData (أمر String، const int timeout، boolean debug) {String response = ""؛ esp8266.print (أمر) ؛ // أرسل حرف القراءة إلى esp8266 long int time = millis () ؛ while ((time + timeout)> millis ()) {while (esp8266.available ()) {// يحتوي esp على بيانات لذا اعرض إخراجها على النافذة التسلسلية char c = esp8266.read () ؛ // اقرأ الحرف التالي. استجابة + = ج ؛ }} if (debug) {Serial.print (response)؛ } عودة الرد؛ }
اختبار ومخرجات المشروع:
قبل تحميل الرمز ، تأكد من أنك متصل بشبكة Wi-Fi لجهاز ESP8266. بعد التحميل ، افتح الشاشة التسلسلية وسيظهر عنوان IP كما هو موضح أدناه.
اكتب عنوان IP هذا في متصفحك ، وسوف يظهر لك الإخراج كما هو موضح أدناه. سيتعين عليك تحديث الصفحة مرة أخرى إذا كنت تريد رؤية قيمة جودة الهواء الحالية في PPM.
لقد قمنا بإعداد خادم محلي لإثبات عمله ، يمكنك التحقق من الفيديو أدناه. ولكن لمراقبة جودة الهواء من أي مكان في العالم ، تحتاج إلى إعادة توجيه المنفذ 80 (المستخدم لـ HTTP أو الإنترنت) إلى عنوان IP المحلي أو الخاص (192.168 *) لجهازك. بعد إعادة توجيه المنفذ ، سيتم إعادة توجيه جميع الاتصالات الواردة إلى هذا العنوان المحلي ويمكنك فتح صفحة الويب الموضحة أعلاه بمجرد إدخال عنوان IP العام الخاص بالإنترنت من أي مكان. يمكنك إعادة توجيه المنفذ عن طريق تسجيل الدخول إلى جهاز التوجيه (192.168.1.1) والعثور على خيار إعداد إعادة توجيه المنفذ.