- רכיבים נדרשים:
- תרשים מעגל והסבר:
- הסבר עבודה:
- הסבר קוד:
- "; דף אינטרנט + =" איכות האוויר היא "; דף אינטרנט + = אוויר_איכות; דף אינטרנט + =" PPM "; דף אינטרנט + ="
";
הקוד הבא יקרא לפונקציה בשם sendData וישלח את מחרוזות הנתונים וההודעות לדף האינטרנט להצגה.
sendData (cipSend, 1000, DEBUG); sendData (דף אינטרנט, 1000, DEBUG); cipSend = "AT + CIPSEND ="; cipSend + = connectionId; cipSend + = ","; cipSend + = webpage.length (); cipSend + = "\ r \ n";
הקוד הבא ידפיס את הנתונים על גבי LCD. החלנו תנאים שונים לבדיקת איכות האוויר, ו- LCD ידפיס את ההודעות בהתאם לתנאים והזמזם יצפצף גם אם הזיהום יעלה על 1000 PPM.
lcd.setCursor (0, 0); lcd.print ("איכות האוויר היא"); lcd.print (air_quality); lcd.print ("PPM"); lcd.setCursor (0,1); אם (air_quality <= 1000) {lcd.print ("אוויר צח"); digitalWrite (8, LOW);
לבסוף הפונקציה שלהלן תשלח ותציג את הנתונים בדף האינטרנט. הנתונים שאחסנו במחרוזת בשם 'דף אינטרנט' יישמרו במחרוזת בשם 'פקודה' . ה- ESP יקרא את התו בזה אחר זה מה'פקודה ' וידפיס אותו בדף האינטרנט.
מחרוזת sendData (פקודת מחרוזת, פסק זמן של const int, ניפוי בוליאני) {String response = ""; esp8266.print (פקודה); // שלח את דמות הקריאה ל- esp8266 int זמן ארוך = millis (); while ((time + timeout)> millis ()) {while (esp8266.available ()) {// ל- esp יש נתונים ולכן הציגו את הפלט לחלון הסדרתי char c = esp8266.read (); // קרא את הדמות הבאה. תגובה + = c; }} אם (ניפוי באגים) {Serial.print (תגובה); } תשובת תשובה; }
- בדיקה והפקת הפרויקט:
בפרויקט זה אנחנו הולכים לעשות זיהום אוויר IOT מבוסס מערכת ניטור שבו נוכל לנטר את איכות האוויר מעל שרת אינטרנט באמצעות אינטרנט ו יפעיל אזעקה כאשר איכות האוויר יורדת מעבר לרמה מסוימת, אמצעי כשיש כמות מספקת גזים מזיקים קיימים באוויר כמו CO2, עשן, אלכוהול, בנזן ו- NH3. הוא יציג את איכות האוויר ב- PPM על גבי ה- LCD וכן בדף האינטרנט, כך שנוכל לפקח עליו בקלות רבה.
בעבר בנינו את גלאי ה- LPG באמצעות חיישן MQ6 וגלאי עשן באמצעות חיישן MQ2 אך הפעם השתמשנו בחיישן MQ135 כחיישן איכות האוויר שהוא הבחירה הטובה ביותר לניטור איכות האוויר מכיוון שהוא יכול לזהות את הגזים המזיקים ביותר ויכול למדוד את כמותם. במדויק. בפרויקט IOT זה תוכלו לפקח על רמת הזיהום מכל מקום באמצעות המחשב או הנייד שלכם. אנו יכולים להתקין מערכת זו בכל מקום ויכולים גם להפעיל מכשיר כלשהו כאשר זיהום עולה על רמה מסוימת, כמו שנוכל להפעיל את מאוורר הפליטה או לשלוח SMS / דואר התראה למשתמש.
רכיבים נדרשים:
- חיישן גז MQ135
- ארדואינו אונו
- מודול Wi-Fi ESP8266
- LCD 16X2
- קרש לחם
- פוטנציומטר 10K
- נגדי אוהם 1K
- נגד 220 אוהם
- זַמזָם
אתה יכול לקנות את כל הרכיבים הנ"ל מכאן.
תרשים מעגל והסבר:
קודם כל נחבר את ה- ESP8266 עם הארדואינו. ESP8266 פועל על 3.3 וולט ואם תתן לו 5 וולט מהארדואינו אז הוא לא יעבוד כמו שצריך והוא עלול להזיק. חבר את ה- VCC ו- CH_PD לסיכה 3.3V של Arduino. סיכת ה- RX של ESP8266 עובדת על 3.3 וולט והוא לא יתקשר עם הארדואינו כאשר נחבר אותו ישירות לארדואינו. אז נצטרך ליצור עבורו מחלק מתח אשר ימיר את ה -5 וולט ל -3.3 וולט. ניתן לעשות זאת על ידי חיבור שלושה נגדים בסדרה כמו שעשינו במעגל. חבר את סיכת ה- TX של ה- ESP8266 לסיכה 10 של הארדואינו וסיכת ה- RX של ה- esp8266 לסיכה 9 של הארדואינו דרך הנגדים.
מודול ה- Wi-Fi ESP8266 מעניק לפרויקטים שלך גישה ל- Wi-Fi או לאינטרנט. זה מכשיר זול מאוד והופכים את הפרויקטים שלך לחזקים מאוד. הוא יכול לתקשר עם כל מיקרו-בקר והוא המכשירים המובילים ביותר בפלטפורמת IOT. למידע נוסף על שימוש ב- ESP8266 עם Arduino כאן.
ואז נחבר את חיישן MQ135 עם הארדואינו. חבר את ה- VCC ואת סיכת הקרקע של החיישן ל- 5V ואת הקרקע של הארדואינו ואת הסיכה האנלוגית של החיישן ל- A0 של הארדואינו.
חבר זמזם לסיכה 8 של הארדואינו שתתחיל לצפצף כשהמצב יתקיים.
בסופו של דבר, נחבר LCD עם ה- Arduino. חיבורי ה- LCD הם כדלקמן
- חבר את סיכה 1 (VEE) לקרקע.
- חבר את סיכה 2 (VDD או VCC) ל -5 V.
- חבר את סיכה 3 (V0) לסיכה האמצעית של פוטנציומטר 10K וחבר את שני הקצוות האחרים של הפוטנציומטר ל- VCC ול- GND. הפוטנציומטר משמש לשליטה על ניגודיות המסך של ה- LCD. פוטנציומטר של ערכים שאינם 10K יעבוד גם כן.
- חבר את סיכה 4 (RS) לסיכה 12 של הארדואינו.
- חבר את סיכה 5 (קריאה / כתיבה) לקרקע הארדואינו. לא משתמשים לעתים קרובות בסיכה זו ולכן נחבר אותה לקרקע.
- חבר את סיכה 6 (E) לסיכה 11 של הארדואינו. סיכת ה- RS וה- E הם סיכות הבקרה המשמשות לשליחת נתונים ותווים.
- ארבעת הסיכות הבאות הן סיכות נתונים המשמשות לתקשורת עם הארדואינו.
חבר את סיכה 11 (D4) לסיכה 5 של Arduino.
חבר את סיכה 12 (D5) לסיכה 4 של Arduino.
חבר את סיכה 13 (D6) לסיכה 3 של Arduino.
חבר את סיכה 14 (D7) לסיכה 2 של Arduino.
- חבר את סיכה 15 ל- VCC דרך הנגד 220 אוהם. הנגד ישמש לקביעת בהירות האור האחורי. ערכים גדולים יותר יהפכו את האור האחורי להרבה יותר כהה.
- חבר את סיכה 16 לקרקע.
הסבר עבודה:
חיישן MQ135 יכול לחוש NH3, NOx, אלכוהול, בנזן, עשן, CO2 וכמה גזים אחרים, ולכן הוא חיישן גז מושלם לפרויקט ניטור איכות האוויר שלנו. כאשר נחבר אותו לארדואינו אז הוא ירגיש את הגזים, ונקבל את רמת הזיהום ב- PPM (חלקים למיליון). חיישן הגז MQ135 נותן את הפלט בצורה של רמות מתח ואנחנו צריכים להמיר אותו ל- PPM. אז לצורך המרת הפלט ב- PPM, כאן השתמשנו בספריה לחיישן MQ135, מוסבר בפירוט בסעיף "הסבר קוד" להלן.
החיישן העניק לנו ערך של 90 כאשר לא היה גז בקרבתו ורמת האוויר הבטוחה של 350 PPM והיא לא תעלה על 1000 PPM. כאשר זה חורג מהגבול של 1000 עמודים לאלף הופעות, אז זה מתחיל לגרום לכאבי ראש, ישנוניות ואוויר עומד, מיושן ומחניק, ואם הוא עולה על 2000 פפ"מ אז זה יכול לגרום לדופק מוגבר ולמחלות רבות אחרות.
כאשר הערך יהיה פחות מ 1000 עמודים לדקה, אז LCD והדף יציגו "אוויר צח". בכל פעם שהערך יעלה 1000 עמודים לדקה, אז הבאזר יתחיל לצפצף וב- LCD ובדף האינטרנט יופיעו "Air Poor, Open Windows". אם זה יגדל 2000 אז הבאזר ימשיך לצפצף וב- LCD ובדף האינטרנט יופיע "Danger! לעבור לאוויר צח ”.
הסבר קוד:
לפני שמתחילים בקידוד לפרויקט זה, עלינו לכייל תחילה את חיישן הגז MQ135. ישנם המון חישובים המעורבים בהמרת תפוקת החיישן לערך PPM, עשינו חישוב זה בעבר בפרויקט גלאי העשן הקודם שלנו. אך כאן אנו משתמשים בספרייה עבור 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 לצוף rzero = gasSensor.getRZero (); Serial.println (rzero); עיכוב (1000); }
לאחר קבלת ערך RZERO . שים את ערך RZERO בקובץ הספרייה שהורדת "MQ135.h": #define RZERO 494.63
כעת אנו יכולים להתחיל את הקוד בפועל לפרויקט ניטור איכות האוויר שלנו.
בקוד, קודם כל הגדרנו את הספריות ואת המשתנים עבור חיישן הגז ו- LCD. באמצעות הספרייה הסדרתית של התוכנה, אנו יכולים ליצור כל סיכה דיגיטלית כסיכה של TX ו- RX. בקוד זה, הפכנו את פינ 9 כסיכת RX וסיכה 10 כסיכת TX עבור ה- ESP8266. לאחר מכן כללנו את הספרייה עבור ה- LCD והגדרנו את הפינים עבור אותו. הגדרנו גם שני משתנים נוספים: אחד לסיכה האנלוגית של החיישן ואחד לאחסון ערך air_quality .
#לִכלוֹל
לאחר מכן נכריז על סיכה 8 כסיכת הפלט במקום שחיברנו את הבאזר. l cd.begin (16,2) פקוד תתחיל LCD לקבל נתונים ולאחר מכן נוכל להגדיר את הסמן בשורה הראשונה יהיה להדפיס את "circuitdigest" . לאחר מכן נגדיר את הסמן על השורה השנייה ונדפיס 'התחממות חיישנים' .
pinMode (8, OUTPUT); lcd.begin (16,2); lcd.setCursor (0,0); lcd.print ("circuitdigest"); lcd.setCursor (0,1); lcd.print ("התחממות חיישנים"); עיכוב (1000);
ואז נקבע את קצב השידור עבור התקשורת הסדרתית. ל- ESP שונים יש שיעורי שידור שונים אז כתוב את זה לפי קצב השידור של ה- ESP שלך. לאחר מכן אנו נשלח את הפקודות להגדרת ה- ESP לתקשר עם הארדואינו ולהציג את כתובת ה- 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. אז יצרנו מחרוזת בשם דף אינטרנט ואחסנו את הפלט בה. אנו גורעים 48 מהפלט מכיוון שהפונקציה read () מחזירה את ערך העשרוני ASCII והמספר העשרוני הראשון שהוא 0 מתחיל ב 48.
אם (esp8266.available ()) {if (esp8266.find ("+ IPD,")) {עיכוב (1000); int connectionId = esp8266.read () - 48; דף מחרוזת = "
מערכת ניטור זיהום אוויר IOT
"; דף אינטרנט + =""; דף אינטרנט + =" איכות האוויר היא "; דף אינטרנט + = אוויר_איכות; דף אינטרנט + =" PPM "; דף אינטרנט + ="
";
הקוד הבא יקרא לפונקציה בשם sendData וישלח את מחרוזות הנתונים וההודעות לדף האינטרנט להצגה.
sendData (cipSend, 1000, DEBUG); sendData (דף אינטרנט, 1000, DEBUG); cipSend = "AT + CIPSEND ="; cipSend + = connectionId; cipSend + = ","; cipSend + = webpage.length (); cipSend + = "\ r \ n";
הקוד הבא ידפיס את הנתונים על גבי LCD. החלנו תנאים שונים לבדיקת איכות האוויר, ו- LCD ידפיס את ההודעות בהתאם לתנאים והזמזם יצפצף גם אם הזיהום יעלה על 1000 PPM.
lcd.setCursor (0, 0); lcd.print ("איכות האוויר היא"); lcd.print (air_quality); lcd.print ("PPM"); lcd.setCursor (0,1); אם (air_quality <= 1000) {lcd.print ("אוויר צח"); digitalWrite (8, LOW);
לבסוף הפונקציה שלהלן תשלח ותציג את הנתונים בדף האינטרנט. הנתונים שאחסנו במחרוזת בשם 'דף אינטרנט' יישמרו במחרוזת בשם 'פקודה' . ה- ESP יקרא את התו בזה אחר זה מה'פקודה ' וידפיס אותו בדף האינטרנט.
מחרוזת sendData (פקודת מחרוזת, פסק זמן של const int, ניפוי בוליאני) {String response = ""; esp8266.print (פקודה); // שלח את דמות הקריאה ל- esp8266 int זמן ארוך = millis (); while ((time + timeout)> millis ()) {while (esp8266.available ()) {// ל- esp יש נתונים ולכן הציגו את הפלט לחלון הסדרתי char c = esp8266.read (); // קרא את הדמות הבאה. תגובה + = c; }} אם (ניפוי באגים) {Serial.print (תגובה); } תשובת תשובה; }
בדיקה והפקת הפרויקט:
לפני העלאת הקוד, וודא שאתה מחובר לרשת ה- Wi-Fi של מכשיר ה- ESP8266 שלך. לאחר ההעלאה, פתח את המסך הטורי והוא יציג את כתובת ה- IP כמו להלן.
הקלד כתובת IP זו בדפדפן שלך, זה יראה לך את הפלט כמוצג להלן. יהיה עליך לרענן את הדף שוב אם ברצונך לראות את ערך איכות האוויר הנוכחי ב- PPM.
הקמנו שרת מקומי כדי להדגים את פעולתו, תוכלו לבדוק את הסרטון למטה. אך כדי לפקח על איכות האוויר מכל מקום בעולם, עליך להעביר את יציאת 80 (המשמשת ל- HTTP או לאינטרנט) לכתובת ה- IP המקומית או הפרטית שלך (192.168 *) של המכשיר שלך. לאחר העברת יציאות כל החיבורים הנכנסים יועברו לכתובת מקומית זו ותוכלו לפתוח את דף האינטרנט המוצג על ידי הזנת כתובת ה- IP הציבורית של האינטרנט שלכם מכל מקום. באפשרותך להעביר את היציאה על ידי כניסה לנתב שלך (192.168.1.1) ולמצוא את האפשרות להגדיר את העברת היציאה.