- Απαιτούμενα συστατικά:
- Διάγραμμα κυκλώματος και επεξήγηση:
- Επεξήγηση εργασίας:
- Επεξήγηση κώδικα:
- "; ιστοσελίδα + =" Η ποιότητα του αέρα είναι "; ιστοσελίδα + = air_quality; ιστοσελίδα + =" 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 ("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 (); // διαβάστε τον επόμενο χαρακτήρα. απόκριση + = c; }} if (εντοπισμός σφαλμάτων) {Serial.print (απόκριση); } απάντηση επιστροφής; }
- Δοκιμές και αποτελέσματα του έργου:
Σε αυτό το έργο πρόκειται να φτιάξουμε ένα σύστημα παρακολούθησης της ατμοσφαιρικής ρύπανσης με βάση το IoT, στο οποίο θα παρακολουθούμε την Ποιότητα του αέρα μέσω ενός διακομιστή διαδικτύου χρησιμοποιώντας Διαδίκτυο και θα ενεργοποιήσουμε έναν συναγερμό όταν η ποιότητα του αέρα πέσει πέρα από ένα συγκεκριμένο επίπεδο, σημαίνει όταν υπάρχει επαρκής ποσότητα επιβλαβών αερίων υπάρχουν στον αέρα όπως CO2, καπνός, αλκοόλ, βενζόλιο και NH3. Θα δείξει την ποιότητα του αέρα σε PPM στην οθόνη LCD καθώς και στην ιστοσελίδα, έτσι ώστε να μπορούμε να την παρακολουθούμε πολύ εύκολα.
Προηγουμένως είχαμε κατασκευάσει τον ανιχνευτή LPG χρησιμοποιώντας αισθητήρα MQ6 και ανιχνευτή καπνού χρησιμοποιώντας αισθητήρα MQ2, αλλά αυτή τη φορά χρησιμοποιήσαμε τον αισθητήρα MQ135 ως αισθητήρα ποιότητας αέρα, ο οποίος είναι η καλύτερη επιλογή για την παρακολούθηση της ποιότητας του αέρα, καθώς μπορεί να ανιχνεύσει τα περισσότερα επιβλαβή αέρια και να μετρήσει την ποσότητα με ακρίβεια. Σε αυτό το έργο IOT, μπορείτε να παρακολουθείτε το επίπεδο ρύπανσης από οπουδήποτε χρησιμοποιώντας τον υπολογιστή ή το κινητό σας. Μπορούμε να εγκαταστήσουμε αυτό το σύστημα οπουδήποτε και μπορεί επίσης να ενεργοποιήσει κάποια συσκευή όταν η ρύπανση ξεπεράσει κάποιο επίπεδο, όπως μπορούμε να ενεργοποιήσουμε τον ανεμιστήρα εξάτμισης ή να στείλουμε ειδοποίηση SMS / mail στον χρήστη.
Απαιτούμενα συστατικά:
- Αισθητήρας αερίου MQ135
- Arduino Uno
- Μονάδα Wi-Fi ESP8266
- LCD 16Χ2
- Ψωμί
- Ποτενσιόμετρο 10Κ
- 1K ohm αντιστάσεις
- 220 ohm αντίσταση
- Βομβητής
Μπορείτε να αγοράσετε όλα τα παραπάνω στοιχεία από εδώ.
Διάγραμμα κυκλώματος και επεξήγηση:
Πρώτα απ 'όλα θα συνδέσουμε το ESP8266 με το Arduino. Το ESP8266 λειτουργεί με 3.3V και αν το δώσετε 5V από το Arduino τότε δεν θα λειτουργήσει σωστά και μπορεί να προκληθεί ζημιά. Συνδέστε το VCC και το CH_PD στον ακροδέκτη 3.3V του Arduino. Ο ακροδέκτης RX του ESP8266 λειτουργεί σε 3.3V και δεν θα επικοινωνεί με το Arduino όταν θα το συνδέσουμε απευθείας στο Arduino. Έτσι, θα πρέπει να φτιάξουμε ένα διαχωριστικό τάσης για αυτό που θα μετατρέψει το 5V σε 3.3V. Αυτό μπορεί να γίνει συνδέοντας τρεις αντιστάσεις σε σειρά όπως κάναμε στο κύκλωμα. Συνδέστε τον ακροδέκτη TX του ESP8266 στον ακροδέκτη 10 του Arduino και τον ακροδέκτη RX του esp8266 στον ακροδέκτη 9 του Arduino μέσω των αντιστάσεων.
Η μονάδα ESP8266 Wi-Fi παρέχει στα έργα σας πρόσβαση σε Wi-Fi ή internet. Είναι μια πολύ φθηνή συσκευή και κάνουν τα έργα σας πολύ ισχυρά. Μπορεί να επικοινωνήσει με οποιονδήποτε μικροελεγκτή και είναι οι πιο κορυφαίες συσκευές στην πλατφόρμα IOT. Μάθετε περισσότερα σχετικά με τη χρήση του ESP8266 με το Arduino εδώ.
Στη συνέχεια, θα συνδέσουμε τον αισθητήρα MQ135 με το Arduino. Συνδέστε το VCC και τον πείρο γείωσης του αισθητήρα στο 5V και τη γείωση του Arduino και τον αναλογικό πείρο του αισθητήρα στο A0 του Arduino.
Συνδέστε έναν βομβητή στον ακροδέκτη 8 του Arduino, ο οποίος θα αρχίσει να ηχεί όταν η κατάσταση γίνει αληθινή.
Τελευταία, θα συνδέσουμε την οθόνη LCD με το Arduino. Οι συνδέσεις της οθόνης LCD έχουν ως εξής
- Συνδέστε τον πείρο 1 (VEE) στη γείωση.
- Συνδέστε τον πείρο 2 (VDD ή VCC) στο 5V.
- Συνδέστε τον πείρο 3 (V0) στον μεσαίο πείρο του ποτενσιόμετρου 10Κ και συνδέστε τα άλλα δύο άκρα του ποτενσιόμετρου με το VCC και το GND. Το ποτενσιόμετρο χρησιμοποιείται για τον έλεγχο της αντίθεσης οθόνης της οθόνης LCD. Το ποτενσιόμετρο τιμών εκτός των 10K θα λειτουργήσει επίσης.
- Συνδέστε τον πείρο 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 ohm. Η αντίσταση θα χρησιμοποιηθεί για τη ρύθμιση της φωτεινότητας του πίσω φωτός. Μεγαλύτερες τιμές θα κάνουν το πίσω φως πολύ πιο σκοτεινό.
- Συνδέστε τον πείρο 16 στο έδαφος.
Επεξήγηση εργασίας:
Ο αισθητήρας MQ135 μπορεί να ανιχνεύσει NH3, NOx, αλκοόλ, βενζόλιο, καπνό, CO2 και μερικά άλλα αέρια, οπότε είναι τέλειος αισθητήρας αερίου για το Έργο Παρακολούθησης Ποιότητας Αέρα. Όταν θα το συνδέσουμε με το Arduino τότε θα αισθανθούν τα αέρια και θα πάρουμε το επίπεδο ρύπανσης σε PPM (μέρη ανά εκατομμύριο). Ο αισθητήρας αερίου MQ135 δίνει την έξοδο με τη μορφή επιπέδων τάσης και πρέπει να το μετατρέψουμε σε PPM. Έτσι, για τη μετατροπή της εξόδου σε PPM, εδώ έχουμε χρησιμοποιήσει μια βιβλιοθήκη για τον αισθητήρα MQ135, εξηγείται λεπτομερώς στην ενότητα «Επεξήγηση κώδικα» παρακάτω.
Ο αισθητήρας μας έδινε τιμή 90 όταν δεν υπήρχε αέριο κοντά του και το ασφαλές επίπεδο ποιότητας αέρα είναι 350 PPM και δεν πρέπει να υπερβαίνει τα 1000 PPM. Όταν ξεπεράσει το όριο των 1000 PPM, τότε αρχίζει να προκαλεί πονοκεφάλους, υπνηλία και στάσιμο, μπαγιάτικο, βουλωμένο αέρα και εάν υπερβεί το 2000 PPM τότε μπορεί να προκαλέσει αυξημένο καρδιακό ρυθμό και πολλές άλλες ασθένειες.
Όταν η τιμή θα είναι μικρότερη από 1000 PPM, τότε η οθόνη LCD και η ιστοσελίδα θα εμφανίζουν "Fresh Air". Όποτε η τιμή θα αυξηθεί 1000 PPM, τότε ο βομβητής θα αρχίσει να ηχεί και η οθόνη LCD και η ιστοσελίδα θα εμφανίζουν "Κακό αέρα, ανοιχτά παράθυρα" Εάν αυξηθεί το 2000, τότε ο βομβητής θα συνεχίσει να ηχεί και η οθόνη LCD και η ιστοσελίδα θα εμφανίσουν «Κίνδυνος! Μετακίνηση στον καθαρό αέρα ».
Επεξήγηση κώδικα:
Πριν ξεκινήσουμε την κωδικοποίηση αυτού του έργου, πρέπει πρώτα να βαθμονομήσουμε τον αισθητήρα αερίου MQ135. Υπάρχουν πολλοί υπολογισμοί που εμπλέκονται στη μετατροπή της εξόδου του αισθητήρα σε τιμή PPM, έχουμε ήδη κάνει αυτόν τον υπολογισμό στο προηγούμενο έργο ανιχνευτή καπνού. Αλλά εδώ χρησιμοποιούμε τη Βιβλιοθήκη για το MQ135, μπορείτε να κατεβάσετε και να εγκαταστήσετε αυτήν τη βιβλιοθήκη MQ135 από εδώ:
Χρησιμοποιώντας αυτήν τη βιβλιοθήκη μπορείτε να λάβετε απευθείας τις τιμές PPM, χρησιμοποιώντας μόνο τις ακόλουθες δύο γραμμές:
Αισθητήρας αερίου MQ135 = MQ135 (A0); float air_quality = gasSensor.getPPM ();
Αλλά πριν από αυτό πρέπει να βαθμονομήσουμε τον αισθητήρα MQ135, για τη βαθμονόμηση του αισθητήρα ανεβάστε τον παρακάτω δεδομένο κωδικό και αφήστε τον να τρέξει για 12 έως 24 ώρες και, στη συνέχεια, λάβουμε την τιμή RZERO .
#include "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 9 ως τον πείρο RX και τον πείρο 10 ως τον πείρο TX για το ESP8266. Στη συνέχεια, έχουμε συμπεριλάβει τη βιβλιοθήκη για την οθόνη LCD και έχουμε ορίσει τις ακίδες για την ίδια. Έχουμε, επίσης, ορίζονται δύο μεταβλητές: το ένα για το αναλογικό αισθητήρα pin και άλλων για την αποθήκευση air_quality αξία.
#περιλαμβάνω
Στη συνέχεια, θα δηλώσουμε τον πείρο 8 ως τον πείρο εξόδου όπου έχουμε συνδέσει τον βομβητή. Η εντολή l cd.begin (16,2) θα ξεκινήσει την οθόνη LCD για τη λήψη δεδομένων και στη συνέχεια θα ρυθμίσουμε τον κέρσορα στην πρώτη γραμμή και θα εκτυπώσουμε το «circuitdigest» . Στη συνέχεια, θα θέσουμε τον κέρσορα στη δεύτερη γραμμή και θα εκτυπώσουμε το «Sensor Warming» .
pinMode (8, ΕΞΟΔΟΣ); lcd.begin (16,2); lcd.setCursor (0,0); lcd.print ("circuitdigest"); lcd.setCursor (0,1); lcd.print ("Θέρμανση αισθητήρα"); καθυστέρηση (1000)
Στη συνέχεια, θα ορίσουμε το ρυθμό baud για τη σειριακή επικοινωνία. Διαφορετικά ESP έχουν διαφορετικούς ρυθμούς baud, οπότε γράψτε το σύμφωνα με το ρυθμό baud του 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. Έτσι, έχουμε δημιουργήσει μια συμβολοσειρά που ονομάζεται ιστοσελίδα και αποθηκεύσαμε την έξοδο σε αυτήν. Αφαιρούμε το 48 από την έξοδο επειδή η συνάρτηση read () επιστρέφει την δεκαδική τιμή ASCII και ο πρώτος δεκαδικός αριθμός που είναι 0 ξεκινά από 48.
if (esp8266.available ()) {if (esp8266.find ("+ IPD,")) {καθυστέρηση (1000); int connectionId = esp8266.read () - 48; Ιστοσελίδα συμβολοσειράς = "
Σύστημα παρακολούθησης της ατμοσφαιρικής ρύπανσης IOT
"; ιστοσελίδα + =""; ιστοσελίδα + =" Η ποιότητα του αέρα είναι "; ιστοσελίδα + = air_quality; ιστοσελίδα + =" 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 ("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 (); // διαβάστε τον επόμενο χαρακτήρα. απόκριση + = c; }} if (εντοπισμός σφαλμάτων) {Serial.print (απόκριση); } απάντηση επιστροφής; }
Δοκιμές και αποτελέσματα του έργου:
Πριν ανεβάσετε τον κωδικό, βεβαιωθείτε ότι είστε συνδεδεμένοι στο Wi-Fi της συσκευής ESP8266. Μετά τη μεταφόρτωση, ανοίξτε τη σειριακή οθόνη και θα εμφανίσει τη διεύθυνση IP όπως φαίνεται παρακάτω.
Πληκτρολογήστε αυτήν τη διεύθυνση IP στο πρόγραμμα περιήγησής σας, θα σας δείξει την έξοδο όπως φαίνεται παρακάτω. Θα πρέπει να ανανεώσετε ξανά τη σελίδα εάν θέλετε να δείτε την τρέχουσα τιμή ποιότητας αέρα στο PPM.
Έχουμε ρυθμίσει έναν τοπικό διακομιστή για να αποδείξει τη λειτουργία του, μπορείτε να δείτε το παρακάτω βίντεο. Ωστόσο, για να παρακολουθείτε την ποιότητα του αέρα από οπουδήποτε στον κόσμο, πρέπει να προωθήσετε τη θύρα 80 (που χρησιμοποιείται για HTTP ή internet) στην τοπική ή ιδιωτική διεύθυνση IP (192.168 *) της συσκευής σας. Μετά την προώθηση της θύρας, όλες οι εισερχόμενες συνδέσεις θα προωθηθούν σε αυτήν την τοπική διεύθυνση και μπορείτε να ανοίξετε την παραπάνω ιστοσελίδα, εισάγοντας απλώς τη δημόσια διεύθυνση IP του διαδικτύου σας από οπουδήποτε. Μπορείτε να προωθήσετε τη θύρα πραγματοποιώντας είσοδο στο δρομολογητή σας (192.168.1.1) και να βρείτε την επιλογή ρύθμισης της προώθησης θύρας.