תוכן עניינים:

צג איכות אוויר IoT בעלות נמוכה המבוסס על RaspberryPi 4: 15 שלבים (עם תמונות)
צג איכות אוויר IoT בעלות נמוכה המבוסס על RaspberryPi 4: 15 שלבים (עם תמונות)

וִידֵאוֹ: צג איכות אוויר IoT בעלות נמוכה המבוסס על RaspberryPi 4: 15 שלבים (עם תמונות)

וִידֵאוֹ: צג איכות אוויר IoT בעלות נמוכה המבוסס על RaspberryPi 4: 15 שלבים (עם תמונות)
וִידֵאוֹ: 40 מוצרים אוטומטיים שימושיים של Aliexpress שיעזרו לך 2024, יולי
Anonim
צג איכות אוויר IoT בעלות נמוכה המבוסס על RaspberryPi 4
צג איכות אוויר IoT בעלות נמוכה המבוסס על RaspberryPi 4
צג איכות אוויר IoT בעלות נמוכה המבוסס על RaspberryPi 4
צג איכות אוויר IoT בעלות נמוכה המבוסס על RaspberryPi 4
צג איכות אוויר IoT בעלות נמוכה המבוסס על RaspberryPi 4
צג איכות אוויר IoT בעלות נמוכה המבוסס על RaspberryPi 4
צג איכות אוויר IoT בעלות נמוכה המבוסס על RaspberryPi 4
צג איכות אוויר IoT בעלות נמוכה המבוסס על RaspberryPi 4

סנטיאגו, צ'ילה בזמן חירום סביבתי חורפי זוכה לגור באחת המדינות היפות בעולם, אך למרבה הצער, לא הכל ורדים. צ'ילה בעונת החורף סובלת רבות מזיהום אוויר, בעיקר בשל חומרים חלקיקים כאבק וערפיח.

בגלל מזג אוויר קר, בדרום, זיהום האוויר נובע בעיקר ממקבצים מבוססי עץ ובסנטיאגו (הבירה המרכזית במרכז הארץ) מעורב מתעשיות, מכוניות, ומצבה הגיאוגרפי הייחודי בין 2 רשתות הרים ענקיות.

כיום זיהום אוויר הוא בעיה גדולה בכל רחבי העולם ובמאמר זה נבחן כיצד לפתח צג איכות אוויר תוצרת בית יקר וזול, המבוסס על פטל פטל. אם אתה מעוניין להבין יותר על איכות האוויר, בקר בפרויקט "מדד איכות האוויר העולמי".

אספקה

  • פטל פי 4
  • 1SDS011 - חיישן זיהוי איכות אוויר לייזר PM2.5 באיכות גבוהה
  • קופסת פלסטיק

שלב 1: חומר חלקיקי (PM): מה זה? איך זה עולה לאוויר?

חומר חלקיקי (PM): מה זה? איך זה עולה לאוויר?
חומר חלקיקי (PM): מה זה? איך זה עולה לאוויר?

לכן, כדי להבין זיהום או זיהום אוויר, עלינו ללמוד את החלקיקים הקשורים לזה, המכונה גם חומר חלקיקי. בהסתכלות על הגרפים בחלק הקודם נוכל לראות שהם ציינו PM2.5 ו- PM10. בואו ניתן סקירה מהירה של זה.

PM מייצג חומר חלקיקי (נקרא גם זיהום חלקיקים): המונח לתערובת של חלקיקים מוצקים וטיפות נוזל הנמצאות באוויר. חלקיקים מסוימים, כגון אבק, לכלוך, פיח או עשן, גדולים או כהים מספיק כדי להיראות בעין בלתי מזוינת. אחרים כל כך קטנים שאפשר לזהות אותם רק באמצעות מיקרוסקופ אלקטרונים. חלקיקים מגיעים במגוון רחב של גדלים. חלקיקים בקוטר של 10 מיקרומטר או פחות מהם קטנים כל כך שהם יכולים להיכנס לריאות ולגרום לבעיות בריאות חמורות. עשרה מיקרומטר פחות מהרוחב של שיער אדם אחד.

זיהום החלקיקים כולל חלקיקי אבק גס (PM10): חלקיקים שאינם נושאים, עם קטרים שהם בדרך כלל 10 מיקרומטר וקטן יותר. המקורות כוללים פעולות ריסוק או טחינה ואבק המעורר בכלי רכב בכבישים. חלקיקים עדינים (PM2.5): חלקיקים עדינים שאינם ניתנים לשאיפה, עם קוטרים שהם בדרך כלל 2.5 מיקרומטר וקטן יותר. חלקיקים עדינים מיוצרים מכל סוגי הבעירה, כולל כלי רכב מנועים, תחנות כוח, שריפת עצים למגורים, שריפות יער, שריפה חקלאית, וכמה תהליכים תעשייתיים תוכל למצוא מידע נוסף על החלקיקים באתר EPA: הסוכנות להגנת הסביבה של ארצות הברית.

שלב 2: מדוע חשוב לדאוג לעניינים חלקיקים?

מדוע חשוב לדאוג לאותם חלקיקים?
מדוע חשוב לדאוג לאותם חלקיקים?

כפי שתואר על ידי GERARDO ALVARADO Z בעבודתו באוניברסיטת צ'ילה, מחקרים על פרקים של זיהום אוויר גבוה בעמק המוז (בלגיה) בשנת 1930, דונורה (פנסילבניה) ב -1948 ולונדון בשנת 1952 היו המקורות המתועדים הראשונים הקשורים לתמותה עם זיהום חלקיקים (Préndez, 1993). התקדמות בחקירת ההשפעות של זיהום אוויר על בריאותם של אנשים קבעה כי הסיכונים הבריאותיים נגרמים על ידי חלקיקים שאינם ניתנים לשאיפה, בהתאם לחדירתם ותקיעתם בחלקים שונים של מערכת הנשימה והתגובה הביולוגית לחומרים שהופקדו.

החלקיקים העבים ביותר, כ -5 מיקרומטר, מסוננים על ידי הפעולה המשותפת של צלעות מעבר האף והרירית המכסה את חלל האף ואת קנה הנשימה. חלקיקים בקוטר שבין 0.5 ל -5 מיקרומטר יכולים להיות מופקדים בסמפונות ואפילו באלוואולי הריאתי, אולם הם מסולקים על ידי צלעות הסימפונות והברונצ'יות לאחר מספר שעות. חלקיקים קטנים מ -0.5 מיקרון יכולים לחדור עמוק עד שהם מופקדים באלוואולי הריאתי, שנותרים משבועות עד שנים, מכיוון שאין מנגנון הובלה רירית המאפשר חיסול. האיור הבא מציג את חדירת החלקיקים במערכת הנשימה בהתאם לגודלם.

לכן, לאתר את שני סוגי החלקיקים (PM2.5 ו- PM10) חשובים מאוד והחדשות הטובות הן ששניהם ניתנים לקריאה באמצעות חיישן פשוט ולא יקר, ה- SDS011.

שלב 3: חיישן החלקיקים - SDS011

חיישן החלקיקים - SDS011
חיישן החלקיקים - SDS011
חיישן החלקיקים - SDS011
חיישן החלקיקים - SDS011

ניטור איכות האוויר הוא מדע ידוע ומבוסס שהחל עוד בשנות ה -80. באותה תקופה הטכנולוגיה הייתה מוגבלת למדי, והפתרון ששימש לכימות מתחם זיהום האוויר, מסורבל ובאמת יקר.

למרבה המזל, כיום, עם הטכנולוגיות העדכניות והמודרניות ביותר, הפתרונות המשמשים לניטור איכות אוויר הופכים לא רק מדויקים יותר אלא גם מהירים יותר למדידה. המכשירים הופכים קטנים יותר, והם עולים הרבה יותר במחירים סבירים מאי פעם.

במאמר זה נתמקד בחיישן חלקיקים, שיכול לזהות את כמות האבק באוויר. בעוד שהדור הראשון רק הצליח לזהות את כמות האטימות, החיישנים האחרונים כמו ה- SDS011 של INOVAFIT, ספין אוף מאוניברסיטת ג'ינאן (בשנדונג), יכולים כעת לזהות PM2.5 ו- PM10.

עם גודלו, ה- SDS011 הוא כנראה אחד החיישנים הטובים ביותר מבחינת דיוק ומחיר (פחות מ- 40.00 USD).

  • ערכים נמדדים: PM2.5, PM10
  • טווח: 0–999.9 מיקרוגרם /מ³
  • מתח אספקה: 5V (4.7–5.3V)
  • צריכת חשמל (עבודה): 70mA ± 10mA
  • צריכת חשמל (לייזר במצב שינה ומאוורר): <4mA
  • טמפרטורת אחסון: -20 עד +60C
  • טמפרטורת עבודה: -10 עד +50C
  • לחות (אחסון): מקסימום. 90%
  • לחות (עבודה): מקסימום. 70% (עיבוי אדי מים מזייפים קריאות)
  • דיוק: 70% עבור 0.3μm ו- 98% עבור 0.5μm
  • גודל: 71x70x23 מ"מ
  • הסמכה: CE, FCC, RoHS

ה- SD011 משתמש במחשב הלוח כצד אחד של המעטפת, ומאפשר להפחית את עלותו. דיודת הקולטן מותקנת בצד ה- PCB (זה חובה מכיוון שיש להימנע מכל רעש בין הדיודה ל- LNA). הלייזר הפולט מותקן על קופסת הפלסטיק ומחובר ל- PCB באמצעות חוט גמיש.

בקיצור, Nova Fitness SDS011 הוא חיישן אבק לייזר מקצועי. מאוורר המותקן על החיישן שואב אוויר באופן אוטומטי. החיישן משתמש בעקרון פיזור אור לייזר* כדי למדוד את ערך חלקיקי האבק התלויים באוויר. החיישן מספק דיוק גבוה וקריאות אמינות של ערכי PM2.5 ו- PM10. ניתן לראות כל שינוי בסביבה כמעט מיידית זמן תגובה קצר מתחת ל 10 שניות. החיישן במצב סטנדרטי מדווח על קריאה במרווח של שנייה אחת.

* עקרון פיזור לייזר: ניתן לעורר פיזור אור כאשר חלקיקים עוברים באזור הגילוי. האור המפוזר הופך לאותות חשמליים ואותות אלו יוגברו ויעובדו. ניתן להשיג את מספר וקוטר החלקיקים על ידי ניתוח מכיוון שלצורת גל האות יש יחסים מסוימים עם קוטר החלקיקים.

שלב 4: אך כיצד SDS011 יכול ללכוד חלקיקים אלה?

אבל כיצד SDS011 יכול ללכוד את החלקיקים האלה?
אבל כיצד SDS011 יכול ללכוד את החלקיקים האלה?
אבל כיצד SDS011 יכול ללכוד את החלקיקים האלה?
אבל כיצד SDS011 יכול ללכוד את החלקיקים האלה?

כפי שציינו קודם לכן, העיקרון המשמש את SDS011 הוא פיזור אור או טוב יותר, Dynamic Light Scattering (DLS), שהיא טכניקה בפיזיקה שניתן להשתמש בה כדי לקבוע את פרופיל חלוקת הגודל של חלקיקים קטנים בהשעיה או בפולימרים בתמיסה. בהיקף DLS, תנודות זמניות מנותחות בדרך כלל באמצעות עוצמת או פונקציית המתאם האוטומטית של הפוטון (הידועה גם בשם ספקטרוסקופיית מתאם פוטון או פיזור אור מעין אלסטי). בניתוח תחום הזמן, פונקציית המתאם האוטומטי (ACF) בדרך כלל מתפוררת החל משעת עיכוב אפסית, ודינמיקה מהירה יותר עקב חלקיקים קטנים יותר מובילה להתכתשות מהירה יותר של עקבות בעוצמה מפוזרת. הוכח כי העוצמה ACF היא טרנספורמציה פורייה של ספקטרום הכוח, ולכן ניתן לבצע מדידות DLS באותה מידה גם בתחום הספקטרום.

מעל פיזור אור דינמי היפותטי של שתי דגימות: חלקיקים גדולים יותר (כמו PM10) בחלקו העליון וחלקיקים קטנים יותר (כמו PM2.5) בתחתית. ובהסתכלות בתוך החיישן שלנו, אנו יכולים לראות כיצד מיושם עקרון פיזור האור.

האות החשמלי שנלכד על הדיודה עובר למגבר רעש נמוך ומתוך כך יומר לאות דיגיטלי באמצעות ADC ולחוץ באמצעות UART.

למידע נוסף על SDS011 על חוויה מדעית אמיתית, עיין בעבודת 2018 של Konstantinos et al, פיתוח ובדיקות בשטח של מערכת ניידת בעלות נמוכה לניטור ריכוזי PM2.5.

שלב 5: Showtime

שואו טיים!
שואו טיים!
שואו טיים!
שואו טיים!

בואו ניקח הפסקה בכל התיאוריה הזו ונתמקד כיצד למדוד בעיות חלקיקים באמצעות פטל פאי וחיישן SDS011.

חיבור HW הוא למעשה פשוט מאוד. החיישן נמכר עם מתאם USB לממשק נתוני הפלט מ- 7 סיכות ה- UART שלו עם אחד ממחברי ה- USB הסטנדרטיים של ה- RPi.

SDout011 pinout:

  • סיכה 1 - לא מחובר
  • סיכה 2 - PM2.5: 0–999μg/m³; פלט PWM
  • סיכה 3–5V
  • סיכה 4 - PM10: 0–999 מיקרוגרם/מ³; פלט PWM
  • פין 5 - GND
  • סיכה 6 - RX UART (TTL) 3.3V
  • סיכה 7 - TX UART (TTL) 3.3V

עבור הדרכה זו, אני משתמש בפעם הראשונה ב- Raspberry-Pi 4. חדש לגמרי, אך כמובן שגם כל דגם קודם יעבוד מצוין.

ברגע שאתה מחבר את החיישן באחת מיציאות ה- RPi USB, אתה תתחיל להאזין לצליל המאוורר שלו באופן אוטומטי. הרעש קצת מעצבן, אז אולי כדאי שתנתק אותו ותחכה עד שתסתדר עם SW.

התקשורת בין החיישן ל- RPi תהיה באמצעות פרוטוקול טורי. פרטים אודות פרוטוקול זה ניתן למצוא כאן: פרוטוקול בקרת חיישן אבק לייזר V1.3. אבל עבור פרויקט זה, הטוב ביותר הוא להשתמש בממשק פייתון כדי לפשט את הקוד שיפותח. אתה יכול ליצור ממשק משלך או להשתמש בממשקים הזמינים באינטרנט, כמו של פרנק האואר או של איוון קלצ'ב. נשתמש באחרון, שהוא פשוט מאוד ועובד מצוין (אתה יכול להוריד את הסקריפט sds011.py מה- GitHub שלו או שלי).

הקובץ sds011.py חייב להיות באותה ספרייה שבה אתה יוצר את הסקריפט שלך.

במהלך שלב הפיתוח, אשתמש במחברת Jupyter, אך תוכל להשתמש בכל IDE שאתה אוהב (Thonny או Geany, למשל, שהם חלק מחבילת Raspberry Pi Debian שניהם טובים מאוד).

התחל לייבא sds011 וצור את מופע החיישנים שלך. SDS011 מספק שיטה לקריאה מהחיישן באמצעות UART.

מיבוא sds011 *

חיישן = SDS011 ("/dev/ttyUSB0")

אתה יכול להפעיל או לכבות את החיישן באמצעות הפקודה שינה:

pmt_2_5, pmt_10 = sensor.query ()

המתן 10 שניות לפחות לייצוב לפני המדידות ולפחות 2 שניות להפעלת אחת חדשה (ראה קוד למעלה).

וזה כל מה שאתה צריך לדעת מבחינת SW כדי להשתמש בחיישן. אבל בואו נעמיק יותר בבקרת איכות האוויר! בתחילת מאמר זה, אם חקרת את האתרים המספקים מידע על כמה טוב או רע האוויר, עליך להבין שצבעים קשורים לערכים אלה. כל צבע הוא אינדקס. הידוע ביותר מזה הוא AQI (מדד איכות האוויר), המשמש בארה ב ובמספר מדינות אחרות.

שלב 6: מדד איכות האוויר - AQI

מדד איכות האוויר - AQI
מדד איכות האוויר - AQI
מדד איכות האוויר - AQI
מדד איכות האוויר - AQI
מדד איכות האוויר - AQI
מדד איכות האוויר - AQI

ה- AQI הוא מדד לדיווח על איכות אוויר יומית. הוא מספר לך עד כמה האוויר שלך נקי או מזוהם, ומה ההשפעות הבריאותיות הקשורות בו עשויות להדאיג אותך. ה- AQI מתמקד בהשפעות בריאותיות שאתה עלול לחוות תוך מספר שעות או ימים לאחר נשימת אוויר מזוהם.

EPA (הסוכנות להגנת הסביבה של ארצות הברית), למשל, מחשבת את ה- AQI לא רק לזיהום חלקיקים (PM2.5 ו- PM10) אלא גם לשאר מזהמי האוויר הגדולים המוסדרים על ידי חוק אוויר נקי: אוזון ברמה הקרקעית, פחמן חד חמצני, גופרית דו חמצנית וחנקן דו חמצני. עבור כל אחד ממזהמים אלה, EPA קבעה תקני איכות אוויר לאומיים להגנה על בריאות הציבור. ראה תמונה למעלה עם ערכי AQI, צבעים והודעת בריאות.

כפי שציינו לפני הערכים והצבעים של AQI קשורים לכל אחד מהגורמים המזהמים, אך כיצד לשייך את הערכים הנוצרים על ידי חיישנים אליהם? טבלה נוספת מחברת את כולם כפי שמוצג למעלה.

אבל כמובן, אין טעם להשתמש בטבלה כזו. בסופו של דבר, זהו אלגוריתם מתמטי פשוט שעושה את החישוב. לשם כך, נייבא את הספרייה להמרה בין ערך AQI לבין ריכוז מזהם (µg/m³): python-aqi.

התקן את הספרייה באמצעות PIP ובצע בדיקה (ראה קוד למעלה)

pip התקן python-aqi

ומה עם צ'ילה?

בצ'ילה משתמשים באינדקס דומה, ICAP: מדד איכות האוויר לחלקיקים נושמים. צו עליון 59 מיום 16 במרץ 1998, של המזכיר הכללי של נשיאות הרפובליקה, קובע במאמר 1, אות ז) כי הרמות המגדירות את ה- ICA לחומר חלקיק נושם, ICAP.

הערכים ישתנו באופן לינארי בין החלקים, הערך 500 יתאים לערך הגבול שעליו יהיה סיכון לאוכלוסייה בעת חשיפה לריכוזים אלה. על פי ערכי ה- ICAP, קבעו קטגוריות המסוגלות את רמות הריכוז של MP10 שאליה נחשפו אנשים.

שלב 7: רישום נתונים מקומי

רישום נתונים מקומי
רישום נתונים מקומי
רישום נתונים מקומי
רישום נתונים מקומי
רישום נתונים מקומי
רישום נתונים מקומי

בשלב זה, יש לנו את כל הכלים ללכוד נתונים מהחיישן וגם להמיר אותם עבור ערך "קריא יותר", שהוא מדד AQI.

בואו ניצור פונקציה ללכידת ערכים אלה. נלכד 3 ערכים ברצף ונקבל את הממוצע ביניהם:

def get_data (n = 3):

sensor.sleep (sleep = False) pmt_2_5 = 0 pmt_10 = 0 time.sleep (10) עבור i בטווח (n): x = sensor.query () pmt_2_5 = pmt_2_5 + x [0] pmt_10 = pmt_10 + x [1] time.sleep (2) pmt_2_5 = עגול (pmt_2_5/n, 1) pmt_10 = עגול (pmt_10/n, 1) sensor.sleep (שינה = נכון) time.sleep (2) חזור pmt_2_5, pmt_10 למעלה אתה יכול לראות את תוצאת הבדיקה. בואו נעשה גם פונקציה להמיר את הערכים המספריים של PM באינדקס AQI

def conv_aqi (pmt_2_5, pmt_10):

aqi_2_5 = aqi.to_iaqi (aqi. POLLUTANT_PM25, str (pmt_2_5)) aqi_10 = aqi.to_iaqi (aqi. POLLUTANT_PM10, str (pmt_10)) החזר aqi_2_5, aqi_10 מעל התוצאה של בדיקה עם שתי הפונקציות. אבל מה לעשות איתם? התשובה הפשוטה ביותר היא ליצור פונקציה לשמירת הנתונים שנלכדו, ולשמור אותם בקובץ מקומי

def save_log ():

עם פתוח ("הנתיב שלך כאן/air_quality.csv", "א") בתור log: dt = datetime.now () log.write ("{}, {}, {}, {}, {} n". פורמט (dt, pmt_2_5, aqi_2_5, pmt_10, aqi_10)) log.close () בעזרת לולאה אחת, תוכל לרשום נתונים בבסיסים רגילים בקובץ המקומי שלך, למשל, בכל דקה

בעוד (נכון):

pmt_2_5, pmt_10 = get_data () aqi_2_5, aqi_10 = conv_aqi (pmt_2_5, pmt_10) נסה: save_log () למעט: הדפס ("[INFO] כשל בנתוני רישום") time.sleep (60) כל 60 שניות, חותמת הזמן בתוספת הנתונים "יצורפו" לקובץ זה, כפי שאנו יכולים לראות למעלה.

שלב 8: שליחת נתונים לשירות ענן

שליחת נתונים לשירות ענן
שליחת נתונים לשירות ענן

בשלב זה למדנו כיצד ללכוד נתונים מהחיישן ולשמור אותם בקובץ CSV מקומי. כעת, הגיע הזמן לראות כיצד לשלוח נתונים אלה לפלטפורמת IoT. במדריך זה נשתמש ב- ThingSpeak.com.

"ThingSpeak הוא יישום אינטרנט לדברים (IoT) בעל קוד פתוח לאחסון ושחזור נתונים מדברים באמצעות ממשקי API של REST ו- MQTT. ThingSpeak מאפשרת ליצור יישומי רישום חיישנים, יישומי מעקב אחר מיקומים ורשת חברתית של דברים עם עדכוני סטטוס."

ראשית, עליך להיות בעל חשבון ב- ThinkSpeak.com. לאחר מכן, עקוב אחר ההוראות ליצירת ערוץ, תוך התייחסות למזהה הערוץ ולמפתח API של כתיבה.

בעת יצירת הערוץ, עליך גם להגדיר איזה מידע יעלה לכל אחד משמונה השדות, כפי שמוצג למעלה (במקרה שלנו ישמשו רק 4 מהם).

שלב 9: פרוטוקול MQTT וחיבור ThingSpeak

פרוטוקול MQTT וחיבור ThingSpeak
פרוטוקול MQTT וחיבור ThingSpeak

MQTT היא ארכיטקטורת פרסום/הרשמה אשר פותחה בעיקר לחיבור רוחב פס והתקנים מוגבלים בחשמל ברשתות אלחוטיות. זהו פרוטוקול פשוט וקל שפועל על שקעי TCP/IP או WebSockets. ניתן לאבטח את MQTT באמצעות WebSockets באמצעות SSL. ארכיטקטורת הפרסום/הרשמה מאפשרת לדחוף הודעות למכשירי הלקוח מבלי שהמכשיר יצטרך לבצע סקר רציף של השרת.

מתווך MQTT הוא נקודת התקשורת המרכזית, והוא אחראי על שיגור כל ההודעות בין השולחים לבין המקבלים החוקיים. לקוח הוא כל מכשיר שמתחבר לברוקר ויכול לפרסם או להירשם לנושאים כדי לגשת למידע. נושא מכיל מידע ניתוב לברוקר. כל לקוח שרוצה לשלוח הודעות מפרסם אותם לנושא מסוים, וכל לקוח שרוצה לקבל הודעות נרשם לנושא מסוים. הברוקר מעביר את כל ההודעות עם הנושא התואם ללקוחות המתאימים.

ל- ThingSpeak ™ יש מתווך MQTT בכתובת URL mqtt.thingspeak.com ובנמל 1883. המתווך ThingSpeak תומך הן בפרסום MQTT והן בהרשמה ל- MQTT.

במקרה שלנו, נשתמש ב- MQTT Publish.

שלב 10: פרסום MQTT

פרסום MQTT
פרסום MQTT

כדי להתחיל, נתקין את ספריית הלקוחות של Eclipse Paho MQTT Python, המיישמת את גרסאות 3.1 ו- 3.1.1 של פרוטוקול MQTT

sudo pip התקן paho-mqtt

לאחר מכן, נייבא את ספריית הפאה:

ייבא paho.mqtt.publish כפרסום

וליזום את ערוץ Thingspeak ופרוטוקול MQTT. שיטת חיבור זו היא הפשוטה ביותר ודורשת את מעט משאבי המערכת:

channelID = "מזהה הערוץ שלך"

apiKey = "מפתח הכתיבה שלך" נושא = "ערוצים/" + channelID + "/publish/" + apiKey mqttHost = "mqtt.thingspeak.com" כעת עלינו להגדיר את "המטען" שלנו

tPayload = "field1 =" + str (pmt_2_5) + "& field2 =" + str (aqi_2_5) + "& field3 =" + str (pmt_10) + "& field4 =" + str (aqi_10)

וזה הכל! אנו מוכנים להתחיל לשלוח נתונים לענן! בואו נכתוב מחדש את פונקציית הלולאה הקודמת כך שתכלול גם את חלק ThingSpeak ממנה.

# שליחת כל הנתונים ל- ThingSpeak כל דקה

בעוד (נכון): pmt_2_5, pmt_10 = get_data () aqi_2_5, aqi_10 = conv_aqi (pmt_2_5, pmt_10) tPayload = "field1 =" + str (pmt_2_5) + "& field2 =" + str (aqi_2_5) + "& field3 =" + str (pmt_10) + "& field4 =" + str (aqi_10) try: publish.single (topic, payload = tPayload, hostname = mqttHost, port = tPort, tls = tTLS, transport = tTransport) save_log () למעט: הדפס ("[מידע] כישלון בשליחת נתונים ") time.sleep (60) אם הכל בסדר, עליך לראות נתונים שמופיעים גם בערוץ שלך ב- thingspeak.com כפי שמוצג למעלה.

שלב 11: התסריט הסופי

חשוב לציין ש- Jupyter Notebook הוא כלי טוב מאוד לפיתוח ולדיווח, אך לא ליצור קוד להפקתו. מה שעליך לעשות כעת הוא לקחת את החלק הרלוונטי של הקוד וליצור סקריפט.py ולהפעיל אותו במסוף שלך.

לדוגמה, "ts_air_quality_logger.py", שעליך להריץ באמצעות הפקודה:

python 3 ts_air_quality_logger.py

סקריפט זה וכן את מחברת Jupyter ו- sds011.py ניתן למצוא במאגר שלי ב- RPi_Air_Quality_Sensor.

שים לב שתסריט זה אפשרי לבדיקה בלבד. הטוב ביותר הוא לא להשתמש בעיכובים בתוך הלולאה הסופית (שמכניסים את הקוד ל"השהיה "), במקום להשתמש בטיימרים. או ליישום אמיתי, הטוב ביותר הוא לא להשתמש בלולאה, כאשר Linux מתוכנת לבצע את התסריט על בסיס קבוע עם crontab.

שלב 12: הוצאת המסך החוצה

מוציאים את הצג החוצה
מוציאים את הצג החוצה
מוציאים את הצג החוצה
מוציאים את הצג החוצה
מוציאים את הצג החוצה
מוציאים את הצג החוצה
מוציאים את הצג החוצה
מוציאים את הצג החוצה

לאחר שצג איכות האוויר שלי ב- Raspberry Pi פעל, הרכזתי את ה- RPi בתוך קופסת פלסטיק, שמרתי על החיישן בחוץ והנחתי אותו מחוץ לביתי.

נעשו שתי חוויות.

שלב 13: בעירה של מנוע בנזין

בעירה של מנועי בנזין
בעירה של מנועי בנזין
בעירה של מנועי בנזין
בעירה של מנועי בנזין

החיישן הונח במרחק של כמטר אחד מסלול הגז של הלמברטה, והמנוע שלו נדלק. המנוע פעל במשך כמה דקות וכבה. מקובץ היומן למעלה, התוצאה שקיבלתי. מעניין לאשר ש- PM2.5 היה החלקיק המסוכן ביותר שנבע מהמנוע.

שלב 14: שריפת עץ

שריפת עץ
שריפת עץ
שריפת עץ
שריפת עץ

במבט על קובץ היומן, אנו מבינים כי נתוני החיישנים היו רגעיים "מחוץ לטווח" ולא נלכדו היטב על ידי ספריית ההמרות של AQI, ולכן אני משנה את הקוד הקודם לטיפול בו:

def conv_aqi (pmt_2_5, pmt_10):

נסה: aqi_2_5 = aqi.to_iaqi (aqi. POLLUTANT_PM25, str (pmt_2_5)) aqi_10 = aqi.to_iaqi (aqi. POLLUTANT_PM10, str (pmt_10)) החזר aqi_2_5, aqi_10 למעט: החזר 600, 600 מצב זה יכול לקרות בשטח, וזה בסדר. זכור כי למעשה, עליך להשתמש בממוצע נע כדי באמת לקבל את ה- AQI (לפחות לשעה, אך בדרך כלל מדי יום).

שלב 15: סיכום

סיכום
סיכום

כמו תמיד, אני מקווה שפרויקט זה יכול לעזור לאחרים למצוא את דרכם לעולם המרגש של אלקטרוניקה ומדעי הנתונים!

לפרטים וקוד סופי, בקר במחסן GitHub שלי: RPi_Air_Quality_Sensor.

כל הכבוד מדרום העולם!

נתראה בהנחיה הבאה שלי!

תודה, מרסלו

מוּמלָץ: