Πίνακας περιεχομένων:

Μια χαμηλού κόστους οθόνη παρακολούθησης ποιότητας IoT βασισμένη στο RaspberryPi 4: 15 βήματα (με εικόνες)
Μια χαμηλού κόστους οθόνη παρακολούθησης ποιότητας IoT βασισμένη στο RaspberryPi 4: 15 βήματα (με εικόνες)

Βίντεο: Μια χαμηλού κόστους οθόνη παρακολούθησης ποιότητας IoT βασισμένη στο RaspberryPi 4: 15 βήματα (με εικόνες)

Βίντεο: Μια χαμηλού κόστους οθόνη παρακολούθησης ποιότητας IoT βασισμένη στο RaspberryPi 4: 15 βήματα (με εικόνες)
Βίντεο: Πώς να κάνεις καλά πράγματα να σου συμβούν. Ακουστικό βιβλίο 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 τεράστιων αλυσίδων βουνών.

Σήμερα, η ατμοσφαιρική ρύπανση είναι ένα μεγάλο πρόβλημα σε όλο τον κόσμο και σε αυτό το άρθρο θα διερευνήσουμε τον τρόπο ανάπτυξης ενός χαμηλού κόστους σπιτικής οθόνης ποιότητας αέρα, βασισμένου σε ένα Raspberry Pi. Εάν ενδιαφέρεστε να κατανοήσετε περισσότερα σχετικά με την ποιότητα του αέρα, επισκεφτείτε το έργο "World Air Quality Index".

Προμήθειες

  • Raspberry Pi 4
  • 1SDS011 - Αισθητήρας ανίχνευσης ποιότητας αέρα υψηλής ακρίβειας pm2.5 λέιζερ
  • Πλαστικό κουτί

Βήμα 1: Σωματιδιακή ύλη (PM): Τι είναι; Πώς μπαίνει στον αέρα;

Σωματίδια (PM): Τι είναι; Πώς μπαίνει στον αέρα
Σωματίδια (PM): Τι είναι; Πώς μπαίνει στον αέρα

Έτσι, για να κατανοήσουμε τη ρύπανση ή τη μόλυνση του αέρα, πρέπει να μελετήσουμε τα σωματίδια που σχετίζονται με αυτό, το οποίο είναι επίσης γνωστό ως σωματιδιακή ύλη. Κοιτάζοντας τα γραφήματα της προηγούμενης ενότητας μπορούμε να παρατηρήσουμε ότι ανέφεραν PM2.5 και PM10. Ας δώσουμε μια γρήγορη επισκόπηση αυτού.

Το PM σημαίνει σωματιδιακή ύλη (ονομάζεται επίσης ρύπανση σωματιδίων): ο όρος για ένα μείγμα στερεών σωματιδίων και υγρών σταγονιδίων που βρίσκονται στον αέρα. Ορισμένα σωματίδια, όπως σκόνη, βρωμιά, αιθάλη ή καπνός, είναι αρκετά μεγάλα ή αρκετά σκοτεινά για να φαίνονται με γυμνό μάτι. Άλλα είναι τόσο μικρά που μπορούν να ανιχνευθούν μόνο με ηλεκτρονικό μικροσκόπιο. Τα σωματίδια έρχονται σε ένα ευρύ φάσμα μεγεθών. Τα σωματίδια με διάμετρο μικρότερη ή ίση με 10 μικρόμετρα είναι τόσο μικρά που μπορούν να εισχωρήσουν στους πνεύμονες, προκαλώντας δυνητικά σοβαρά προβλήματα υγείας. Τα δέκα μικρόμετρα είναι μικρότερα από το πλάτος μιας ανθρώπινης τρίχας.

Η ρύπανση σωματιδίων περιλαμβάνει χοντρά σωματίδια σκόνης (PM10): εισπνεόμενα σωματίδια, με διάμετρο που είναι γενικά 10 μικρόμετρα και μικρότερα. Οι πηγές περιλαμβάνουν εργασίες σύνθλιψης ή λείανσης και σκόνη που αναδεύεται από οχήματα στους δρόμους. Λεπτά σωματίδια (PM2.5): λεπτά εισπνεόμενα σωματίδια, με διάμετρο που είναι γενικά 2,5 μικρόμετρα και μικρότερα. Λεπτά σωματίδια παράγονται από όλους τους τύπους καύσης, συμπεριλαμβανομένων μηχανοκίνητων οχημάτων, σταθμών ηλεκτροπαραγωγής, καύσης ξύλου κατοικιών, δασικών πυρκαγιών, καύσης γεωργικών προϊόντων και ορισμένων βιομηχανικών διαδικασιών που μπορείτε να βρείτε περισσότερα για τα σωματίδια στην τοποθεσία EPA: The United States Environmental Protection Agency

Βήμα 2: Γιατί είναι σημαντικό να ενδιαφέρεστε για αυτά τα θέματα σωματιδίων;

Γιατί είναι σημαντικό να φροντίζουμε για αυτά τα θέματα σωματιδίων
Γιατί είναι σημαντικό να φροντίζουμε για αυτά τα θέματα σωματιδίων

Όπως περιγράφεται από τον GERARDO ALVARADO Z. στο έργο του στο Πανεπιστήμιο της Χιλής, οι μελέτες επεισοδίων υψηλής ατμοσφαιρικής ρύπανσης στην κοιλάδα Meuse (Βέλγιο) το 1930, η Donora (Πενσυλβάνια) το 1948 και το Λονδίνο το 1952 ήταν οι πρώτες τεκμηριωμένες πηγές που σχετίζονται με τη θνησιμότητα με μόλυνση σωματιδίων (Préndez, 1993). Η πρόοδος στη διερεύνηση των επιπτώσεων της ατμοσφαιρικής ρύπανσης στην υγεία των ανθρώπων διαπίστωσε ότι οι κίνδυνοι για την υγεία προκαλούνται από εισπνεόμενα σωματίδια, ανάλογα με τη διείσδυση και την εναπόθεσή τους σε διαφορετικά τμήματα του αναπνευστικού συστήματος και τη βιολογική απάντηση στα εναποτιθέμενα υλικά.

Τα παχύτερα σωματίδια, περίπου 5 μm, φιλτράρονται από την κοινή δράση των βλεφαρίδων της ρινικής διόδου και του βλεννογόνου που καλύπτει τη ρινική κοιλότητα και την τραχεία. Σωματίδια με διάμετρο μεταξύ 0,5 και 5 μm μπορούν να εναποτίθενται στους βρόγχους και ακόμη και στις πνευμονικές κυψελίδες, ωστόσο, αποβάλλονται από τις βλεφαρίδες των βρόγχων και των βρογχιολίων μετά από μερικές ώρες. Τα σωματίδια μικρότερα από 0,5 μm μπορούν να διεισδύσουν βαθιά μέχρι να εναποτεθούν στις πνευμονικές κυψελίδες, παραμένοντας από εβδομάδες σε χρόνια, αφού δεν υπάρχει μηχανισμός μεταφοράς βλεννογόνων που διευκολύνει την αποβολή. Το παρακάτω σχήμα δείχνει τη διείσδυση των σωματιδίων στο αναπνευστικό σύστημα ανάλογα με το μέγεθός τους.

Έτσι, η αναγνώριση και των δύο τύπων σωματιδίων (PM2.5 και PM10) είναι πολύ σημαντική και τα καλά νέα είναι ότι και τα δύο είναι ευανάγνωστα από έναν απλό και όχι ακριβό αισθητήρα, το SDS011.

Βήμα 3: Ο αισθητήρας σωματιδίων - SDS011

Ο αισθητήρας σωματιδίων - SDS011
Ο αισθητήρας σωματιδίων - SDS011
Ο αισθητήρας σωματιδίων - SDS011
Ο αισθητήρας σωματιδίων - SDS011

Η παρακολούθηση της ποιότητας του αέρα είναι γνωστή και καθιερωμένη επιστήμη που ξεκίνησε τη δεκαετία του '80. Εκείνη την εποχή, η τεχνολογία ήταν αρκετά περιορισμένη και η λύση που χρησιμοποιήθηκε για τον ποσοτικό προσδιορισμό του συγκροτήματος ατμοσφαιρικής ρύπανσης, δυσκίνητη και πραγματικά ακριβή.

Ευτυχώς, στις μέρες μας, με τις πιο πρόσφατες και σύγχρονες τεχνολογίες, οι λύσεις που χρησιμοποιούνται για την παρακολούθηση της ποιότητας του αέρα γίνονται όχι μόνο πιο ακριβείς αλλά και γρηγορότερες στη μέτρηση. Οι συσκευές γίνονται μικρότερες και κοστίζουν πολύ πιο προσιτές από ποτέ.

Σε αυτό το άρθρο θα εστιάσουμε σε έναν αισθητήρα σωματιδίων, ο οποίος μπορεί να ανιχνεύσει την ποσότητα σκόνης στον αέρα. Ενώ η πρώτη γενιά μπόρεσε να ανιχνεύσει το μέγεθος της αδιαφάνειας, οι πιο πρόσφατοι αισθητήρες όπως ο SDS011 από το INOVAFIT, ένα spin-off από το Πανεπιστήμιο του Jinan (στο Shandong), μπορούν τώρα να ανιχνεύσουν PM2.5 και PM10.

Με το μέγεθός του, ο SDS011 είναι ίσως ένας από τους καλύτερους αισθητήρες όσον αφορά την ακρίβεια και την τιμή (λιγότερο από 40,00 USD).

  • Μετρημένες τιμές: PM2.5, PM10
  • Εύρος: 0–999,9 μg /m³
  • Τάση τροφοδοσίας: 5V (4,7-5,3V)
  • Κατανάλωση ενέργειας (εργασία): 70mA ± 10mA
  • Κατανάλωση ενέργειας (λέιζερ και ανεμιστήρας σε κατάσταση αδράνειας): <4mA
  • Θερμοκρασία αποθήκευσης: -20 έως +60C
  • Θερμοκρασία εργασίας: -10 έως +50C
  • Υγρασία (αποθήκευση): Μέγ. 90%
  • Υγρασία (εργασία): Μέγ. 70% (η συμπύκνωση υδρατμών παραποιεί αναγνώσεις)
  • Ακρίβεια: 70% για 0,3μm και 98% για 0,5μm
  • Διαστάσεις: 71x70x23 mm
  • Πιστοποίηση: CE, FCC, RoHS

Το SD011 χρησιμοποιεί το PCB ως τη μία πλευρά του περιβλήματος, επιτρέποντας τη μείωση του κόστους του. Η δίοδος υποδοχέα είναι τοποθετημένη στην πλευρά του PCB (αυτό είναι υποχρεωτικό καθώς πρέπει να αποφεύγεται κάθε θόρυβος μεταξύ της διόδου και του LNA). Το λέιζερ εκπομπής είναι τοποθετημένο στο πλαστικό κουτί και συνδέεται με το PCB μέσω εύκαμπτου σύρματος.

Εν ολίγοις, το Nova Fitness SDS011 είναι ένας επαγγελματικός αισθητήρας σκόνης λέιζερ. Ο ανεμιστήρας που είναι τοποθετημένος στον αισθητήρα απορροφά αυτόματα τον αέρα. Ο αισθητήρας χρησιμοποιεί μια αρχή διασποράς φωτός λέιζερ* για να μετρήσει την τιμή των σωματιδίων σκόνης που αιωρούνται στον αέρα. Ο αισθητήρας παρέχει υψηλή ακρίβεια και αξιόπιστες ενδείξεις τιμών PM2.5 και PM10. Οποιαδήποτε αλλαγή στο περιβάλλον μπορεί να παρατηρηθεί σχεδόν ακαριαία σύντομος χρόνος απόκρισης κάτω από 10 δευτερόλεπτα. Ο αισθητήρας στην τυπική λειτουργία αναφέρει ανάγνωση με διάστημα 1 δευτερολέπτου.

* Αρχή σκέδασης λέιζερ: Η σκέδαση φωτός μπορεί να προκληθεί όταν τα σωματίδια περάσουν από την περιοχή ανίχνευσης. Το διάσπαρτο φως μετατρέπεται σε ηλεκτρικά σήματα και αυτά τα σήματα θα ενισχυθούν και θα υποστούν επεξεργασία. Ο αριθμός και η διάμετρος των σωματιδίων μπορούν να ληφθούν με ανάλυση επειδή η κυματομορφή σήματος έχει ορισμένες σχέσεις με τη διάμετρο των σωματιδίων.

Βήμα 4: Αλλά πώς το SDS011 μπορεί να συλλάβει αυτά τα σωματίδια;

Αλλά πώς το SDS011 μπορεί να συλλάβει αυτά τα σωματίδια
Αλλά πώς το SDS011 μπορεί να συλλάβει αυτά τα σωματίδια
Αλλά πώς το SDS011 μπορεί να συλλάβει αυτά τα σωματίδια
Αλλά πώς το SDS011 μπορεί να συλλάβει αυτά τα σωματίδια

Όπως σχολιάστηκε προηγουμένως, η αρχή που χρησιμοποιείται από το SDS011 είναι η διασπορά φωτός ή καλύτερα, η Dynamic Light Scattering (DLS), η οποία είναι μια τεχνική στη φυσική που μπορεί να χρησιμοποιηθεί για τον προσδιορισμό του προφίλ κατανομής μεγέθους μικρών σωματιδίων σε εναιώρημα ή πολυμερών σε διάλυμα. Στο πεδίο του DLS, οι χρονικές διακυμάνσεις αναλύονται συνήθως μέσω της έντασης ή της λειτουργίας αυτόματης συσχέτισης φωτονίων (επίσης γνωστή ως φασματοσκοπία συσχέτισης φωτονίων ή οιονεί ελαστική σκέδαση φωτός). Στην ανάλυση πεδίου χρόνου, η συνάρτηση αυτοσυσχέτισης (ACF) συνήθως αποσυντίθεται ξεκινώντας από μηδενικό χρόνο καθυστέρησης και η ταχύτερη δυναμική λόγω μικρότερων σωματιδίων οδηγεί σε ταχύτερη αποσυσχέτιση του διασκορπισμένου ίχνους έντασης. Έχει αποδειχθεί ότι η ένταση ACF είναι ο μετασχηματισμός Fourier του φάσματος ισχύος και επομένως οι μετρήσεις DLS μπορούν να εκτελεστούν εξίσου καλά στη φασματική περιοχή.

Πάνω από μια υποθετική δυναμική διασπορά φωτός δύο δειγμάτων: Μεγαλύτερα σωματίδια (όπως το PM10) στην κορυφή και μικρότερα σωματίδια (ως PM2.5) στο κάτω μέρος. Και κοιτάζοντας μέσα στον αισθητήρα μας, μπορούμε να δούμε πώς εφαρμόζεται η αρχή της διασποράς φωτός.

Το ηλεκτρικό σήμα που καταγράφεται στη δίοδο πηγαίνει στον Ενισχυτή χαμηλού θορύβου και από αυτό μετατρέπεται σε ψηφιακό σήμα μέσω ADC και στο εξωτερικό μέσω UART.

Για να μάθετε περισσότερα σχετικά με το SDS011 σχετικά με μια πραγματική επιστημονική εμπειρία, ρίξτε μια ματιά στις εργασίες του Konstantinos et al του 2018, Ανάπτυξη και επιτόπια δοκιμή φορητού συστήματος χαμηλού κόστους για παρακολούθηση συγκεντρώσεων PM2.5.

Βήμα 5: timeρα προβολής

Timeρα προβολής!
Timeρα προβολής!
Timeρα προβολής!
Timeρα προβολής!

Ας κάνουμε ένα διάλειμμα σε όλη αυτή τη θεωρία και ας επικεντρωθούμε στον τρόπο μέτρησης σωματιδιακών ουσιών χρησιμοποιώντας ένα Raspberry Pi και τον αισθητήρα SDS011

Η σύνδεση HW είναι στην πραγματικότητα πολύ απλή. Ο αισθητήρας πωλείται με προσαρμογέα USB για διασύνδεση των δεδομένων εξόδου από το UART των 7 ακίδων του με έναν από τους τυπικούς συνδετήρες USB του RPi.

SDS011 pinout:

  • Καρφίτσα 1 - δεν είναι συνδεδεμένο
  • Καρφίτσα 2 - PM2.5: 0–999μg/m³; Έξοδος PWM
  • Καρφίτσα 3–5V
  • Καρφίτσα 4 - PM10: 0–999 μg/m³; Έξοδος PWM
  • Καρφίτσα 5 - GND
  • Καρφίτσα 6 - RX UART (TTL) 3.3V
  • Καρφίτσα 7 - TX UART (TTL) 3.3V

Για αυτό το σεμινάριο, χρησιμοποιώ για πρώτη φορά, ένα ολοκαίνουργιο Raspberry-Pi 4. Αλλά φυσικά, οποιοδήποτε προηγούμενο μοντέλο θα λειτουργήσει επίσης καλά.

Μόλις συνδέσετε τον αισθητήρα σε μία από τις θύρες USB RPi, θα αρχίσετε αυτόματα να ακούτε τον ήχο του ανεμιστήρα του. Ο θόρυβος είναι λίγο ενοχλητικός, οπότε ίσως πρέπει να τον αποσυνδέσετε και να περιμένετε μέχρι να τελειώσετε με SW.

Η επικοινωνία μεταξύ του αισθητήρα και του RPi θα γίνεται μέσω σειριακού πρωτοκόλλου. Λεπτομέρειες σχετικά με αυτό το πρωτόκολλο μπορείτε να βρείτε εδώ: Laser Dust Sensor Control Protocol V1.3. Αλλά για αυτό το έργο, το καλύτερο είναι να χρησιμοποιήσετε μια διεπαφή python για να απλοποιήσετε τον κώδικα που πρόκειται να αναπτυχθεί. Μπορείτε να δημιουργήσετε τη δική σας διεπαφή ή να χρησιμοποιήσετε κάποια που είναι διαθέσιμα στο διαδίκτυο, όπως αυτά του Frank Heuer ή του Ivan Kalchev. Θα χρησιμοποιήσουμε το τελευταίο, το οποίο είναι πολύ απλό και λειτουργεί καλά (μπορείτε να κατεβάσετε το σενάριο sds011.py από το GitHub ή το δικό μου).

Το αρχείο sds011.py πρέπει να βρίσκεται στον ίδιο κατάλογο όπου δημιουργείτε το σενάριό σας.

Κατά τη φάση ανάπτυξης, θα χρησιμοποιήσω ένα Jupyter Notebook, αλλά μπορείτε να χρησιμοποιήσετε οποιοδήποτε IDE σας αρέσει (το Thonny ή το Geany, για παράδειγμα, που αποτελούν μέρος του πακέτου Raspberry Pi Debian είναι και τα δύο πολύ καλά).

Ξεκινήστε την εισαγωγή sds011 και δημιουργήστε την παρουσία αισθητήρα σας. Το SDS011 παρέχει μια μέθοδο ανάγνωσης από τον αισθητήρα χρησιμοποιώντας ένα UART.

από εισαγωγή sds011 *

αισθητήρας = SDS011 ("/dev/ttyUSB0")

Μπορείτε να ενεργοποιήσετε ή να απενεργοποιήσετε τον αισθητήρα σας με την εντολή ύπνου:

pmt_2_5, pmt_10 = sensor.query ()

Περιμένετε τουλάχιστον 10 δευτερόλεπτα για σταθεροποίηση πριν από τις μετρήσεις και τουλάχιστον 2 δευτερόλεπτα για να ξεκινήσετε μια νέα (δείτε τον κωδικό παραπάνω).

Και αυτό είναι το μόνο που πρέπει να γνωρίζετε από την άποψη της SW για να χρησιμοποιήσετε τον αισθητήρα. Αλλά ας προχωρήσουμε βαθύτερα στον έλεγχο ποιότητας του αέρα! Στην αρχή αυτού του άρθρου, εάν έχετε εξερευνήσει τους ιστότοπους που παρέχουν πληροφορίες σχετικά με το πόσο καλός ή κακός είναι ο αέρας, θα πρέπει να συνειδητοποιήσετε ότι τα χρώματα σχετίζονται με αυτές τις τιμές. Κάθε χρώμα είναι ένα ευρετήριο. Το πιο γνωστό από αυτά είναι το AQI (Air Quality Index), που χρησιμοποιείται στις ΗΠΑ και σε πολλές άλλες χώρες.

Βήμα 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 = round (pmt_2_5/n, 1) pmt_10 = round (pmt_10/n, 1) sensor.sleep (sleep = True) time.sleep (2) return 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 ():

με ανοιχτό ("YOUR PATH HERE/air_quality.csv", "a") ως log: dt = datetime.now () log.write ("{}, {}, {}, {}, {} n". μορφή (dt, pmt_2_5, aqi_2_5, pmt_10, aqi_10)) log.close () Με έναν μόνο βρόχο, μπορείτε να καταγράφετε δεδομένα σε τακτικές βάσεις στο τοπικό σας αρχείο, για παράδειγμα, κάθε λεπτό

ενώ (True):

pmt_2_5, pmt_10 = get_data () aqi_2_5, aqi_10 = conv_aqi (pmt_2_5, pmt_10) δοκιμάστε: save_log () εκτός από: print ("[INFO] Failure in logging data") time.sleep (60) Κάθε 60 δευτερόλεπτα, η χρονική σήμανση συν τα δεδομένα θα "προσαρτώνται" σε αυτό το αρχείο, όπως μπορούμε να δούμε παραπάνω.

Βήμα 8: Αποστολή δεδομένων σε μια υπηρεσία Cloud

Αποστολή δεδομένων σε μια υπηρεσία Cloud
Αποστολή δεδομένων σε μια υπηρεσία Cloud

Σε αυτό το σημείο, έχουμε μάθει πώς να συλλαμβάνουμε δεδομένα από τον αισθητήρα, αποθηκεύοντάς τα σε ένα τοπικό αρχείο CSV. Τώρα, ήρθε η ώρα να δούμε πώς να στείλουμε αυτά τα δεδομένα σε μια πλατφόρμα IoT. Σε αυτό το σεμινάριο, θα χρησιμοποιήσουμε το ThingSpeak.com.

«Το ThingSpeak είναι μια εφαρμογή Internet of Things (IoT) ανοιχτού κώδικα για την αποθήκευση και ανάκτηση δεδομένων από πράγματα, χρησιμοποιώντας API REST και MQTT. Το ThingSpeak επιτρέπει τη δημιουργία εφαρμογών καταγραφής αισθητήρων, εφαρμογών παρακολούθησης τοποθεσίας και ενός κοινωνικού δικτύου πραγμάτων με ενημερώσεις κατάστασης."

Πρώτον, πρέπει να έχετε λογαριασμό στο ThinkSpeak.com. Στη συνέχεια, ακολουθήστε τις οδηγίες για να δημιουργήσετε ένα κανάλι, λαμβάνοντας υπόψη το αναγνωριστικό καναλιού και το κλειδί API εγγραφής.

Κατά τη δημιουργία του καναλιού, πρέπει επίσης να ορίσετε ποιες πληροφορίες θα μεταφορτωθούν σε καθένα από τα 8 πεδία, όπως φαίνεται παραπάνω (στην περίπτωσή μας θα χρησιμοποιηθούν μόνο 4 από αυτά).

Βήμα 9: Πρωτόκολλο MQTT και σύνδεση ThingSpeak

MQTT Protocol και ThingSpeak Connection
MQTT Protocol και ThingSpeak Connection

Το 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:

εισαγωγή paho.mqtt.publish ως δημοσίευση

και εκκινήστε το κανάλι Thingspeak και το πρωτόκολλο MQTT. Αυτή η μέθοδος σύνδεσης είναι η απλούστερη και απαιτεί τους λιγότερους πόρους συστήματος:

channelID = "YOUR CHANNEL ID"

apiKey = "ΓΡΑΦΤΕ ΤΟ ΚΛΕΙΔΙ ΣΑΣ" topic = "κανάλια/" + channelID + "/δημοσίευση/" + apiKey mqttHost = "mqtt.thingspeak.com" Τώρα πρέπει να ορίσουμε το "ωφέλιμο φορτίο" μας

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

Και αυτό είναι! είμαστε έτοιμοι να ξεκινήσουμε την αποστολή δεδομένων στο cloud! Ας ξαναγράψουμε την προηγούμενη λειτουργία βρόχου για να συμπεριλάβουμε και το τμήμα του ThingSpeak.

# Αποστολή όλων των δεδομένων στο ThingSpeak κάθε 1 λεπτό

ενώ (True): 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: published.single (topic, payload = tPayload, hostname = mqttHost, port = tPort, tls = tTLS, transport = tTransport) save_log () εκτός από: εκτύπωση ("

Βήμα 11: Το τελικό σενάριο

Είναι σημαντικό να επισημάνουμε ότι το Jupyter Notebook είναι ένα πολύ καλό εργαλείο για ανάπτυξη και αναφορά, αλλά όχι για τη δημιουργία ενός κώδικα για παραγωγή. Αυτό που πρέπει να κάνετε τώρα είναι να πάρετε το σχετικό μέρος του κώδικα και να δημιουργήσετε ένα σενάριο.py και να το εκτελέσετε στο τερματικό σας.

Για παράδειγμα, "ts_air_quality_logger.py", που πρέπει να εκτελέσετε με την εντολή:

python 3 ts_air_quality_logger.py

Αυτό το σενάριο, καθώς και το Jupyter Notebook και το sds011.py μπορείτε να τα βρείτε στο αποθετήριο μου στη διεύθυνση RPi_Air_Quality_Sensor.

Σημειώστε ότι αυτό το σενάριο είναι εφικτό μόνο για δοκιμή. Το καλύτερο είναι να μην χρησιμοποιείτε καθυστερήσεις στον τελικό βρόχο (που θέτει τον κώδικα σε "παύση"), αντί να χρησιμοποιείτε χρονοδιακόπτες. Or για μια πραγματική εφαρμογή, το καλύτερο είναι να μην χρησιμοποιείτε το βρόχο, έχοντας το Linux προγραμματισμένο να εκτελεί το σενάριο σε τακτική βάση με crontab.

Βήμα 12: Βγάζοντας την οθόνη έξω

Βγάζοντας την οθόνη έξω
Βγάζοντας την οθόνη έξω
Βγάζοντας την οθόνη έξω
Βγάζοντας την οθόνη έξω
Βγάζοντας την οθόνη έξω
Βγάζοντας την οθόνη έξω
Βγάζοντας την οθόνη έξω
Βγάζοντας την οθόνη έξω

Μόλις λειτουργούσε η οθόνη Raspberry Pi Air Quality, συγκέντρωσα το RPi μέσα σε ένα πλαστικό κουτί, κρατώντας τον αισθητήρα έξω και τον τοποθέτησα έξω από το σπίτι μου.

Δημιουργήθηκαν δύο εμπειρίες.

Βήμα 13: Καύση κινητήρα βενζίνης

Καύση μοτέρ βενζίνης
Καύση μοτέρ βενζίνης
Καύση μοτέρ βενζίνης
Καύση μοτέρ βενζίνης

Ο αισθητήρας τοποθετήθηκε περίπου 1m από το καπάκι αερίου της Lambretta και ο κινητήρας του άνοιξε. Ο κινητήρας λειτουργούσε για μερικά λεπτά και έσβησε. Από το παραπάνω αρχείο καταγραφής, το αποτέλεσμα που πήρα. Είναι ενδιαφέρον να επιβεβαιωθεί ότι το 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.

Saludos από τον νότο του κόσμου!

Τα λέμε στο επόμενο διδακτικό μου!

Σας ευχαριστώ, Μαρσέλο

Συνιστάται: