- Απαιτούμενα στοιχεία
- Nova PM Sensor SDS011 για μέτρηση PM2.5 και PM10
- Βασικά στοιχεία της ενότητας οθόνης OLED 0,96 '
- Προετοιμασία του αισθητήρα MQ-7 για τη μέτρηση του μονοξειδίου του άνθρακα (CO)
- Υπολογισμός δείκτη ποιότητας αέρα
- Διάγραμμα κυκλώματος
- Δημιουργία κυκλώματος συστήματος παρακολούθησης της ποιότητας του αέρα στο Perf Board
- Διαμόρφωση Adafruit IO
- Επεξήγηση κωδικού για
- 3D τυπωμένο περίβλημα για σύστημα παρακολούθησης AQI
- Δοκιμή του συστήματος παρακολούθησης AQI
Καθώς μπαίνει ο χειμώνας, ο αέρας που κρέμεται πάνω μας πυκνώνει με καπνό και αέριες εκπομπές από καύση πεδίων, βιομηχανικά εργοστάσια και κυκλοφορία οχημάτων, εμποδίζοντας τον ήλιο και δυσκολεύοντας να αναπνεύσουμε. Οι ειδικοί λένε ότι τα υψηλά επίπεδα ατμοσφαιρικής ρύπανσης και πανδημίας COVID-19 μπορεί να είναι ένα επικίνδυνο μείγμα που μπορεί να έχει σοβαρές συνέπειες. Η ανάγκη παρακολούθησης της ποιότητας του αέρα σε πραγματικό χρόνο είναι πολύ έντονη.
Έτσι, σε αυτό το έργο, πρόκειται να δημιουργήσουμε ένα σύστημα παρακολούθησης ποιότητας αέρα ESP32 χρησιμοποιώντας τον αισθητήρα Nova PM SDS011, τον αισθητήρα MQ-7 και τον αισθητήρα DHT11. Θα χρησιμοποιήσουμε επίσης μια ενότητα OLED Display για να εμφανίσουμε τιμές ποιότητας αέρα. Ο δείκτης ποιότητας αέρα (AQI) στην Ινδία βασίζεται σε οκτώ ρύπους, PM10, PM2.5, SO2 και NO2, CO, Ozone, NH3 και Pb. Ωστόσο, δεν είναι απαραίτητο να μετρηθούν όλοι οι ρύποι. Θα μετρήσουμε λοιπόν τη συγκέντρωση των PM2,5, PM10 και μονοξειδίου του άνθρακα για να υπολογίσουμε τον δείκτη ποιότητας αέρα. Οι τιμές AQI θα δημοσιευτούν στο Adafruit IO, ώστε να μπορούμε να την παρακολουθούμε από οπουδήποτε. Προηγουμένως είχαμε μετρήσει επίσης τη συγκέντρωση αερίου LPG, καπνού και αμμωνίας χρησιμοποιώντας το Arduino.
Απαιτούμενα στοιχεία
- ESP32
- Nova PM Sensor SDS011
- Ενότητα οθόνης OLED 0,96 'SPI
- Αισθητήρας DHT11
- Αισθητήρας MQ-7
- Καλώδια αλτών
Nova PM Sensor SDS011 για μέτρηση PM2.5 και PM10
Ο αισθητήρας SDS011 είναι ένας πολύ πρόσφατος αισθητήρας ποιότητας αέρα που αναπτύχθηκε από τη Nova Fitness. Λειτουργεί με βάση την αρχή της σκέδασης με λέιζερ και μπορεί να πάρει τη συγκέντρωση σωματιδίων μεταξύ 0,3 έως 10μm στον αέρα. Αυτός ο αισθητήρας αποτελείται από έναν μικρό ανεμιστήρα, βαλβίδα εισαγωγής αέρα, δίοδο λέιζερ και φωτοδίοδο. Ο αέρας εισέρχεται μέσω της εισόδου αέρα όπου μια πηγή φωτός (Laser) φωτίζει τα σωματίδια και το διάσπαρτο φως μετατρέπεται σε σήμα από έναν φωτοανιχνευτή. Αυτά τα σήματα στη συνέχεια ενισχύονται και υποβάλλονται σε επεξεργασία για να ληφθεί η συγκέντρωση σωματιδίων των PM2.5 και PM10. Προηγουμένως χρησιμοποιήσαμε τον αισθητήρα Nova PM με Arduino για τον υπολογισμό της συγκέντρωσης των PM10 & PM2.5.
Προδιαγραφές αισθητήρα SDS011:
- Έξοδος: PM2.5, PM10
- Εύρος μέτρησης: 0,0-999,9μg / m3
- Τάση εισόδου: 4,7V έως 5,3V
- Μέγιστο ρεύμα: 100mA
- Ρεύμα ύπνου: 2mA
- Χρόνος απόκρισης: 1 δευτερόλεπτο
- Συχνότητα εξόδου σειριακών δεδομένων: 1 φορά / δευτερόλεπτο
- Ανάλυση διαμέτρου σωματιδίων: ≤0.3μm
- Σχετικό σφάλμα: 10%
- Εύρος θερμοκρασίας: -20 ~ 50 ° C
Βασικά στοιχεία της ενότητας οθόνης OLED 0,96 '
Το OLED (Organic Light Emitting Diode) είναι ένα είδος Light Emitting Diode που παράγεται χρησιμοποιώντας οργανικές ενώσεις που διεγείρουν όταν το ηλεκτρικό ρεύμα επιτρέπεται να ρέει μέσω αυτών. Αυτές οι οργανικές ενώσεις έχουν το δικό τους φως, επομένως δεν απαιτούν κυκλώματα οπίσθιου φωτισμού όπως τα κανονικά LCD. Εξαιτίας αυτού του λόγου, η τεχνολογία οθόνης OLED είναι ενεργειακά αποδοτική και χρησιμοποιείται ευρέως σε τηλεοράσεις και άλλα προϊόντα προβολής.
Διάφοροι τύποι OLED είναι διαθέσιμοι στην αγορά με βάση το χρώμα της οθόνης, τον αριθμό των καρφιτσών, το μέγεθος και τον ελεγκτή IC. Σε αυτό το σεμινάριο, θα χρησιμοποιήσουμε τη μονάδα OLED Monochrome Blue 7-pin SSD1306 0,96 "OLED πλάτους 128 pixels και μήκους 64 pixel. Αυτό το OLED 7 ακίδων υποστηρίζει το πρωτόκολλο SPI και ο ελεγκτής IC SSD1306 βοηθά το OLED να εμφανίζει τους ληφθέντες χαρακτήρες. Μάθετε περισσότερα για το OLED και τη διασύνδεσή του με διαφορετικούς μικροελεγκτές ακολουθώντας τον σύνδεσμο.
Προετοιμασία του αισθητήρα MQ-7 για τη μέτρηση του μονοξειδίου του άνθρακα (CO)
Η μονάδα αισθητήρα αερίου άνθρακα MQ-7 CO ανιχνεύει τις συγκεντρώσεις CO στον αέρα. Ο αισθητήρας μπορεί να μετρήσει συγκεντρώσεις 10 έως 10.000 ppm. Ο αισθητήρας MQ-7 μπορεί να αγοραστεί είτε ως μονάδα είτε ως αισθητήρας μόνο. Προηγουμένως έχουμε χρησιμοποιήσει πολλούς διαφορετικούς τύπους αισθητήρων αερίου για να ανιχνεύσουμε και να μετρήσουμε διάφορα αέρια, μπορείτε επίσης να τα ελέγξετε αν σας ενδιαφέρει. Σε αυτό το έργο, χρησιμοποιούμε τη μονάδα αισθητήρα MQ-7 για τη μέτρηση της συγκέντρωσης μονοξειδίου του άνθρακα στο PPM. Το διάγραμμα κυκλώματος για την πλακέτα MQ-7 δίνεται παρακάτω:
Η αντίσταση φορτίου RL παίζει πολύ σημαντικό ρόλο στη λειτουργία του αισθητήρα. Αυτή η αντίσταση αλλάζει την τιμή αντίστασης ανάλογα με τη συγκέντρωση του αερίου. Η πλακέτα αισθητήρων MQ-7 διαθέτει αντίσταση φορτίου 1KΩ που είναι άχρηστη και επηρεάζει τις ενδείξεις του αισθητήρα. Έτσι, για να μετρήσετε τις κατάλληλες τιμές συγκέντρωσης CO, πρέπει να αντικαταστήσετε την αντίσταση 1KΩ με μια αντίσταση 10KΩ.
Υπολογισμός δείκτη ποιότητας αέρα
Το AQI στην Ινδία υπολογίζεται με βάση τη μέση συγκέντρωση ενός συγκεκριμένου ρύπου που μετράται σε ένα τυπικό χρονικό διάστημα (24 ώρες για τους περισσότερους ρύπους, 8 ώρες για το μονοξείδιο του άνθρακα και το όζον). Για παράδειγμα, το AQI για PM2,5 και PM10 βασίζεται σε μέση συγκέντρωση 24 ωρών και το AQI για μονοξείδιο του άνθρακα βασίζεται στη μέση συγκέντρωση 8 ωρών). Οι υπολογισμοί AQI περιλαμβάνουν τους οκτώ ρύπους που είναι PM10, PM2,5, διοξείδιο του αζώτου (NO 2), διοξείδιο του θείου (SO 2), μονοξείδιο του άνθρακα (CO), όζον στο έδαφος (O 3), αμμωνία (NH 3), και μόλυβδος (Pb). Ωστόσο, όλοι οι ρύποι δεν μετρώνται σε κάθε θέση.
Με βάση τις μετρούμενες 24-ωρες συγκεντρώσεις περιβάλλοντος ενός ρύπου, υπολογίζεται ένας υπο-δείκτης, ο οποίος είναι μια γραμμική συνάρτηση της συγκέντρωσης (π.χ. ο υπο-δείκτης για τα ΑΣ2,5 θα είναι 51 σε συγκέντρωση 31 μg / m3, 100 σε συγκέντρωση 60 μg / m3 και 75 σε συγκέντρωση 45 μg / m3). Ο χειρότερος υπο-δείκτης (ή το μέγιστο όλων των παραμέτρων) καθορίζει το συνολικό AQI.
Διάγραμμα κυκλώματος
Το διάγραμμα κυκλώματος για το σύστημα παρακολούθησης της ποιότητας του αέρα με βάση το IoT είναι πολύ απλό και δίνεται παρακάτω:
Οι αισθητήρες SDS011, DHT11 και MQ-7 τροφοδοτούνται με + 5V, ενώ η μονάδα OLED Display τροφοδοτείται με 3.3V. Οι ακίδες του πομπού και του δέκτη SDS011 συνδέονται με το GPIO16 & 17 του ESP32. Ο αναλογικός ακροδέκτης εξόδου του αισθητήρα MQ-7 συνδέεται με το GPIO 25 και ο ακροδέκτης δεδομένων του αισθητήρα DHT11 είναι συνδεδεμένος με τον αισθητήρα GPIO27. Δεδομένου ότι η μονάδα OLED Display χρησιμοποιεί επικοινωνία SPI, έχουμε δημιουργήσει μια επικοινωνία SPI μεταξύ της μονάδας OLED και του ESP32. Οι συνδέσεις φαίνονται στον παρακάτω πίνακα:
ΝΟ |
Καρφίτσα μονάδας OLED |
Καρφίτσα ESP32 |
1 |
GND |
Εδαφος |
2 |
VCC |
5V |
3 |
Δ0 |
18 |
4 |
Δ1 |
23 |
5 |
ΑΠΕ |
2 |
6 |
DC |
4 |
7 |
CS |
5 |
ΝΟ |
Καρφίτσα SDS011 |
Καρφίτσα ESP32 |
1 |
5V |
5V |
2 |
GND |
GND |
3 |
RX |
17 |
4 |
ΤΧ |
16 |
ΝΟ |
Καρφίτσα DHT |
Καρφίτσα ESP32 |
1 |
Vcc |
5V |
2 |
GND |
GND |
3 |
Δεδομένα |
27 |
ΝΟ |
Καρφίτσα MQ-7 |
Καρφίτσα ESP32 |
1 |
Vcc |
5V |
2 |
GND |
GND |
3 |
Α0 |
25 |
Δημιουργία κυκλώματος συστήματος παρακολούθησης της ποιότητας του αέρα στο Perf Board
Όπως μπορείτε να δείτε από την κύρια εικόνα, η ιδέα ήταν να χρησιμοποιήσετε αυτό το κύκλωμα μέσα σε ένα τρισδιάστατο τυπωμένο περίβλημα. Έτσι, το πλήρες κύκλωμα που φαίνεται παραπάνω συγκολλάται πάνω σε μια σανίδα perf. Βεβαιωθείτε ότι χρησιμοποιείτε καλώδια για να αφήσετε αρκετή απόσταση για να τοποθετήσετε το OLED και τους αισθητήρες. Ο πίνακας perf μου συγκολλήθηκε στο OLED και η μονάδα αισθητήρα φαίνεται παρακάτω.
Διαμόρφωση Adafruit IO
Το Adafruit IO είναι μια ανοιχτή πλατφόρμα δεδομένων που σας επιτρέπει να συγκεντρώνετε, να οπτικοποιείτε και να αναλύετε ζωντανά δεδομένα στο cloud. Χρησιμοποιώντας το Adafruit IO, μπορείτε να ανεβάσετε, να εμφανίσετε και να παρακολουθήσετε τα δεδομένα σας μέσω του Διαδικτύου και να ενεργοποιήσετε το έργο σας IoT. Μπορείτε να ελέγχετε κινητήρες, να διαβάζετε δεδομένα αισθητήρα και να κάνετε δροσερές εφαρμογές IoT μέσω του Διαδικτύου χρησιμοποιώντας το Adafruit IO.
Για να χρησιμοποιήσετε το Adafruit IO, δημιουργήστε πρώτα έναν λογαριασμό στο Adafruit IO. Για να το κάνετε αυτό, μεταβείτε στον ιστότοπο Adafruit IO και κάντε κλικ στο "Ξεκινήστε δωρεάν" στην επάνω δεξιά γωνία της οθόνης.
Αφού ολοκληρώσετε τη διαδικασία δημιουργίας λογαριασμού, συνδεθείτε στον λογαριασμό και κάντε κλικ στο «Προβολή κλειδιού AIO» στην επάνω δεξιά γωνία για να λάβετε το όνομα χρήστη και το κλειδί AIO.
Όταν κάνετε κλικ στο "AIO Key", θα εμφανιστεί ένα παράθυρο με το Adafruit IO AIO Key και το όνομα χρήστη. Αντιγράψτε αυτό το κλειδί και το όνομα χρήστη, θα χρησιμοποιηθεί σε κώδικα.
Τώρα, αφού λάβετε τα κλειδιά AIO, δημιουργήστε μια ροή για να αποθηκεύσετε τα δεδομένα του αισθητήρα DHT. Για να δημιουργήσετε μια ροή, κάντε κλικ στο "Ροή". Στη συνέχεια, κάντε κλικ στο "Ενέργειες" και, στη συνέχεια, επιλέξτε "Δημιουργία νέας ροής" από τις διαθέσιμες επιλογές.
Μετά από αυτό, θα ανοίξει ένα νέο παράθυρο όπου πρέπει να εισαγάγετε το όνομα και την περιγραφή της ροής. Η σύνταξη μιας περιγραφής είναι προαιρετική.
Κάντε κλικ στο "Δημιουργία" μετά από αυτό. θα ανακατευθυνθείτε στη νέα ροή.
Για αυτό το έργο, δημιουργήσαμε συνολικά έξι ροές για τιμές PM10, PM2,5, CO, Θερμοκρασία, Υγρασία και AQI. Ακολουθήστε την ίδια διαδικασία όπως παραπάνω για να δημιουργήσετε τις υπόλοιπες ροές.
Μετά τη δημιουργία ροών, τώρα θα δημιουργήσουμε μια λειτουργία πίνακα εργαλείων Adafruit IO για την οπτικοποίηση των δεδομένων αισθητήρα σε μία σελίδα. Για αυτό, πρώτα, δημιουργήστε έναν πίνακα ελέγχου και, στη συνέχεια, προσθέστε όλες αυτές τις τροφοδοσίες σε αυτόν τον πίνακα ελέγχου.
Για να δημιουργήσετε έναν πίνακα εργαλείων, κάντε κλικ στην επιλογή Πίνακας ελέγχου και, στη συνέχεια, κάντε κλικ στην επιλογή "Ενέργεια" και μετά από αυτό, κάντε κλικ στην επιλογή "Δημιουργία νέου πίνακα ελέγχου".
Στο επόμενο παράθυρο, εισαγάγετε το όνομα του ταμπλό και κάντε κλικ στο "Δημιουργία".
Καθώς δημιουργείται ο πίνακας ελέγχου, τώρα θα χρησιμοποιήσουμε τα μπλοκ Adafruit IO όπως το Gauge και το Slider για να οπτικοποιήσουμε τα δεδομένα. Για να προσθέσετε ένα μπλοκ, κάντε κλικ στο '+' στην επάνω δεξιά γωνία.
Στη συνέχεια, επιλέξτε το μπλοκ "Gauge".
Στο επόμενο παράθυρο, επιλέξτε τα δεδομένα ροής που θέλετε να οπτικοποιήσετε.
Στο τελικό βήμα, αλλάξτε τις ρυθμίσεις μπλοκ για να τις προσαρμόσετε.
Τώρα ακολουθήστε την ίδια διαδικασία όπως παραπάνω για να προσθέσετε μπλοκ οπτικοποίησης για τις υπόλοιπες ροές. Ο πίνακας ελέγχου Adafruit IO έμοιαζε με αυτό:
Επεξήγηση κωδικού για
Ο πλήρης κωδικός για αυτό το έργο δίνεται στο τέλος του εγγράφου. Εδώ εξηγούμε ορισμένα σημαντικά μέρη του κώδικα.
Ο κώδικας χρησιμοποιεί τις SDS011, Adafruit_GFX, Adafruit_SSD1306, Adafruit_MQTT, και DHT.h βιβλιοθήκες. Μπορείτε να κατεβάσετε τις βιβλιοθήκες SDS011, Adafruit_GFX και Adafruit_SSD1306 από τη Διαχείριση βιβλιοθηκών στο Arduino IDE και να τις εγκαταστήσετε από εκεί. Για αυτό, ανοίξτε το Arduino IDE και μεταβείτε στο Σκίτσο <Συμπερίληψη βιβλιοθήκης <Διαχείριση βιβλιοθηκών . Τώρα αναζητήστε SDS011 και εγκαταστήστε τη βιβλιοθήκη αισθητήρα SDS από τον R. Zschiegner.
Ομοίως, εγκαταστήστε τις βιβλιοθήκες Adafruit GFX και Adafruit SSD1306 από το Adafruit. Μπορείτε να κατεβάσετε το Adafruit_MQTT.h και DHT11.h από τους δεδομένους συνδέσμους.
Αφού εγκαταστήσετε τις βιβλιοθήκες στο Arduino IDE, ξεκινήστε τον κώδικα συμπεριλαμβάνοντας τα απαραίτητα αρχεία βιβλιοθηκών.
#περιλαμβάνω
Στις επόμενες γραμμές, ορίστε το πλάτος και το ύψος της οθόνης OLED. Σε αυτό το έργο, έχω χρησιμοποιήσει μια οθόνη OLED 128 × 64 SPI. Μπορείτε να αλλάξετε την SCREEN_WIDTH , και SCREEN_HEIGHT μεταβλητές σύμφωνα με την οθόνη σας.
# καθορισμός SCREEN_WIDTH 128 # καθορισμός SCREEN_HEIGHT 64
Στη συνέχεια, ορίστε τους πείρους επικοινωνίας SPI όπου είναι συνδεδεμένη η οθόνη OLED.
# καθορισμός OLED_MOSI 23 # καθορισμός OLED_CLK 18 # καθορισμός OLED_DC 4 # καθορισμός OLED_CS 5 # καθορισμός OLED_RESET 2
Στη συνέχεια, δημιουργήστε μια παρουσία για την οθόνη Adafruit με το πλάτος και το ύψος και το πρωτόκολλο επικοινωνίας SPI που ορίστηκε νωρίτερα.
Οθόνη Adafruit_SSD1306 (SCREEN_WIDTH, SCREEN_HEIGHT, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS).
Στη συνέχεια, συμπεριλάβετε τα διαπιστευτήρια WiFi και Adafruit IO που αντιγράψατε από το διακομιστή Adafruit IO. Σε αυτά περιλαμβάνονται ο διακομιστής MQTT, ο αριθμός θύρας, το όνομα χρήστη και το κλειδί AIO.
const char * ssid = "Galaxy-M20"; const char * pass = "ac312124"; #define MQTT_SERV "io.adafruit.com" #define MQTT_PORT 1883 # καθορισμός MQTT_NAME "choudharyas" # καθορισμός MQTT_PASS "988c4e045ef64c1b9bc8b5bb7ef5f2d9"
Στη συνέχεια, ρυθμίστε τις τροφοδοσίες Adafruit IO για την αποθήκευση των δεδομένων αισθητήρα. Στην περίπτωσή μου, έχω ορίσει έξι τροφοδοσίες για την αποθήκευση διαφορετικών δεδομένων αισθητήρα, συγκεκριμένα: AirQuality, Temperature, Humidity, PM10, PM25 και CO.
Adafruit_MQTT_Client mqtt (& client, MQTT_SERV, MQTT_PORT, MQTT_NAME, MQTT_PASS); Adafruit_MQTT_Publish AirQuality = Adafruit_MQTT_Publish (& mqtt, MQTT_NAME "/ f / AirQuality"); Adafruit_MQTT_Publish Temperature = Adafruit_MQTT_Publish (& mqtt, MQTT_NAME "/ f / Θερμοκρασία"); Adafruit_MQTT_Publish Humidity = Adafruit_MQTT_Publish (& mqtt, MQTT_NAME "/ f / Υγρασία"); Adafruit_MQTT_Publish PM10 = Adafruit_MQTT_Publish (& mqtt, MQTT_NAME "/ f / PM10"); Adafruit_MQTT_Publish PM25 = Adafruit_MQTT_Publish (& mqtt, MQTT_NAME "/ f / PM25"); Adafruit_MQTT_Publish CO = Adafruit_MQTT_Publish (& mqtt, MQTT_NAME "/ f / CO");
Τώρα μέσα στη λειτουργία setup () , αρχικοποιήστε το Serial Monitor με ρυθμό baud 9600 για σκοπούς εντοπισμού σφαλμάτων. Επίσης, αρχικοποιήστε την οθόνη OLED, τον αισθητήρα DHT και τον αισθητήρα SDS011 με τη λειτουργία έναρξης () .
άκυρη ρύθμιση () {my_sds.begin (16,17); Serial.begin (9600); dht.begin (); display.begin (SSD1306_SWITCHCAPVCC);
Ο βρόχος για μέσα στη λειτουργία εγκατάστασης χρησιμοποιείται για τη συλλογή των τιμών έως έναν καθορισμένο αριθμό και στη συνέχεια ορίστε τον μετρητή στο μηδέν.
για (int thisReading1 = 0; thisReading1 <numReadingsPM10; thisReading1 ++) {readingsPM10 = 0; }
Διαβάζοντας τις τιμές αισθητήρα:
Τώρα μέσα στη λειτουργία βρόχου, χρησιμοποιήστε τη μέθοδο millis () για να διαβάσετε τις τιμές του αισθητήρα κάθε μία ώρα. Κάθε ένας από τους αισθητήρες αερίου εξάγει μια αναλογική τιμή από 0 έως 4095. Για να μετατρέψετε αυτήν την τιμή σε τάση, χρησιμοποιήστε την ακόλουθη εξίσωση: RvRo = MQ7Raw * (3.3 / 4095); όπου το MQ7Raw είναι η αναλογική τιμή από τον αναλογικό πείρο του αισθητήρα. Επίσης, διαβάστε τις ενδείξεις PM2,5 και PM10 από τον αισθητήρα SDS011.
if ((unsigned long) (currentMillis - previousMillis)> = διάστημα) {MQ7Raw = analogRead (iMQ7); RvRo = MQ7Raw * (3.3 / 4095); MQ7ppm = 3,027 * exp (1,0698 * (RvRo)); Serial.println (MQ7ppm); σφάλμα = my_sds.read (& p25, & p10); εάν (! σφάλμα) {Serial.println ("P2.5:" + String (p25)); Serial.println ("P10:" + String (σελ10)); }}
Μετατροπή των τιμών:
Οι τιμές PM2,5 και PM10 είναι ήδη σε μg / m 3, αλλά πρέπει να μετατρέψουμε τις τιμές μονοξειδίου του άνθρακα από PPM σε mg / m 3. Ο τύπος μετατροπής δίνεται παρακάτω:
Συγκέντρωση (mg / m 3) = Συγκέντρωση (PPM) × (Μοριακή μάζα (g / mol) / Μοριακός όγκος (L))
Πού: Η μοριακή μάζα CO είναι 28,06 g / mol και ο μοριακός όγκος είναι 24,45L στους 25 0 C
Συγκέντρωση INmgm3 = MQ7ppm * (28.06 / 24.45); Serial.println (ΣυγκέντρωσηINmgm3);
Υπολογισμός μέσου όρου 24 ωρών:
Στη συνέχεια, στις επόμενες γραμμές, υπολογίστε το μέσο όρο 24 ωρών για την ένδειξη PM10, PM2,5 και το μέσο όρο 8 ωρών για τις μετρήσεις μονοξειδίου του άνθρακα. Στην πρώτη γραμμή κώδικα, πάρτε το τρέχον σύνολο και αφαιρέστε το πρώτο στοιχείο στον πίνακα, αποθηκεύστε το τώρα ως το νέο σύνολο. Αρχικά, θα είναι μηδέν. Στη συνέχεια, λάβετε τις τιμές του αισθητήρα και προσθέστε την τρέχουσα ένδειξη στο σύνολο και αυξήστε τον αριθμό ευρετηρίου. Εάν η τιμή του ευρετηρίου είναι ίση ή μεγαλύτερη από το numReadings, ρυθμίστε ξανά το δείκτη στο μηδέν.
totalPM10 = totalPM10 - αναγνώσειςPM10; αναγνώσεις PM10 = p10; totalPM10 = totalPM10 + αναγνώσειςPM10; readIndexPM10 = readIndexPM10 + 1; εάν (readIndexPM10> = numReadingsPM10) {readIndexPM10 = 0; }
Στη συνέχεια, επιτέλους, δημοσιεύστε αυτές τις τιμές στο Adafruit IO.
εάν (! Temperature.publish (θερμοκρασία)) {καθυστέρηση (30000); } εάν (! Humidity.publish (υγρασία)) {καθυστέρηση (30000); ………………………………………………………. ……………………………………………………….
3D τυπωμένο περίβλημα για σύστημα παρακολούθησης AQI
Στη συνέχεια, μέτρησα τις διαστάσεις της εγκατάστασης χρησιμοποιώντας το βερνίκι μου και επίσης μέτρησα τις διαστάσεις των αισθητήρων και OLED για να σχεδιάσω ένα περίβλημα. Το σχέδιό μου έμοιαζε κάπως έτσι παρακάτω, μόλις τελειώσει.
Αφού ήμουν ικανοποιημένος με το σχέδιο, το εξήγαγα ως αρχείο STL, το έκοψα με βάση τις ρυθμίσεις του εκτυπωτή και τελικά το εκτύπωσε. Και πάλι το αρχείο STL είναι επίσης διαθέσιμο για λήψη από το Thingiverse και μπορείτε να εκτυπώσετε το περίβλημά σας χρησιμοποιώντας το.
Μετά την εκτύπωση, προχώρησα στη συναρμολόγηση του έργου που δημιουργήθηκε σε ένα μόνιμο περίβλημα για να το εγκαταστήσω σε μια εγκατάσταση. Με την ολοκληρωμένη σύνδεση, συναρμολόγησα το κύκλωμα στο περίβλημά μου και όλα ήταν ωραία εφαρμογή όπως μπορείτε να δείτε εδώ.
Δοκιμή του συστήματος παρακολούθησης AQI
Μόλις το υλικό και ο κωδικός είναι έτοιμοι, είναι καιρός να δοκιμάσετε τη συσκευή. Χρησιμοποιήσαμε έναν εξωτερικό προσαρμογέα 12V 1A για να τροφοδοτήσουμε τη συσκευή. Όπως μπορείτε να δείτε, η συσκευή θα εμφανίσει τη συγκέντρωση PM10, PM2.5 και μονοξειδίου του άνθρακα στην οθόνη OLED. Η συγκέντρωση των ΑΣ2,5 και ΑΣ10 σε μg / m 3 ενώ η συγκέντρωση του μονοξειδίου του άνθρακα είναι σε mg / m 3.
Αυτές οι αναγνώσεις θα δημοσιευτούν επίσης στον πίνακα ελέγχου Adafruit IO. Το μέγιστο όλων των παραμέτρων (PM10, PM2.5 & CO) θα είναι το AQI.
Οι τιμές AQI των τελευταίων 30 ημερών θα εμφανίζονται ως γράφημα.
Έτσι μπορείτε να χρησιμοποιήσετε τους αισθητήρες SDS011 και MQ-7 για τον υπολογισμό του Δείκτη ποιότητας αέρα. Η πλήρης εργασία του έργου μπορεί επίσης να βρεθεί στο παρακάτω βίντεο. Ελπίζω να σας άρεσε το έργο και βρήκατε ενδιαφέρον να δημιουργήσετε το δικό σας. Αν έχετε απορίες, αφήστε τις στην παρακάτω ενότητα σχολίων.