- Απαιτούμενα στοιχεία
- Διάγραμμα κυκλώματος
- Αισθητήρας θερμοκρασίας και υγρασίας DHT11
- Προγραμματισμός NodeMCU ESP8266 Παρακολούθηση θερμοκρασίας και υγρασίας
Οι μικροελεγκτές έχουν μικρή εσωτερική μνήμη, η οποία δεν επαρκεί για την αποθήκευση δεδομένων που δημιουργούνται από αισθητήρες για μεγάλο χρονικό διάστημα, είτε πρέπει να χρησιμοποιήσετε κάποια εξωτερική συσκευή μνήμης είτε να αποθηκεύσετε τα δεδομένα σε κάποιο σύννεφο χρησιμοποιώντας το Διαδίκτυο. Επίσης, μερικές φορές καθίσταται δύσκολη η διαχείριση όταν ο αισθητήρας αναπτύσσεται σε κάποιο σημείο ακραίας κατάστασης όπου δεν μπορεί να φτάσει ο άνθρωπος ή είναι δύσκολο να το επισκέπτεσαι συχνά. Για τη διόρθωση αυτού του είδους των προβλημάτων εξετάζουμε πάντα τους τρόπους με τους οποίους θέλουμε να παρακολουθούμε τα δεδομένα των αισθητήρων σε πραγματικό χρόνο από οπουδήποτε χωρίς φυσική παρουσία σε αυτό το μέρος.
Οι βάσεις δεδομένων σε πραγματικό χρόνο μπορούν να χρησιμοποιηθούν σε αυτό το σενάριο, όπου απλώς πρέπει να διασυνδέσουμε κάποιον ελεγκτή που μπορεί να συνδεθεί στο Διαδίκτυο και να μπορεί να ανταλλάσσει δεδομένα με διακομιστή cloud Τα δεδομένα του διακομιστή μπορούν να είναι χρήσιμα στην παρακολούθηση της συμπεριφοράς του συστήματος σε πραγματικό χρόνο, της ανάλυσης βάσεων δεδομένων, της στατιστικής ανάλυσης και επεξεργασίας και της ερμηνείας για μελλοντική περίπτωση χρήσης. Υπάρχουν πολλές πλατφόρμες υλικού IoT και πλατφόρμες Cloud διαθέσιμες για την εξυπηρέτηση αυτού του σκοπού. Εάν βρείτε δυσκολίες στην εύρεση της σωστής πλατφόρμας για την εφαρμογή IoT, ακολουθήστε τον σύνδεσμο.
Προηγουμένως είχαμε ήδη καλύψει ThingSpeak, Adafruit IO και πολλά άλλα λογισμικά IoT. Σήμερα θα κατασκευάσουμε παρόμοιο έργο όπου θα χρησιμοποιήσουμε έναν αισθητήρα θερμοκρασίας & υγρασίας DHT11 και μια μονάδα NodeMCU ESP8266 για την καταγραφή της θερμοκρασίας και της υγρασίας σε πραγματικό χρόνο στον διακομιστή βάσης δεδομένων της Google Firebase.
Θα χωρίσουμε το έργο σε δύο ενότητες. Πρώτον, θα ξεκινήσουμε με τη συναρμολόγηση των στοιχείων υλικού και τη μεταφόρτωση υλικολογισμικού σε αυτό. Και δεύτερον, θα χρησιμοποιήσουμε το Firebase για εγκατάσταση με το NodeMCU για την ανταλλαγή δεδομένων σε πραγματικό χρόνο. Εάν είστε νέοι στο ESP8266 ή στο Firebase, ακολουθήστε τον προηγούμενο οδηγό μας σχετικά με τον έλεγχο των LED χρησιμοποιώντας το Firebase.
Απαιτούμενα στοιχεία
- Ενότητα NodeMCU ESP8266
- DHT11 Αισθητήρας θερμοκρασίας και υγρασίας
Διάγραμμα κυκλώματος
Αισθητήρας θερμοκρασίας και υγρασίας DHT11
Η μονάδα DHT11 διαθέτει σύμπλεγμα υγρασίας και θερμοκρασίας με βαθμονομημένη έξοδο ψηφιακού σήματος. Η μονάδα αισθητήρα DHT11 είναι μια συνδυασμένη μονάδα για την ανίχνευση υγρασίας και θερμοκρασίας που δίνει βαθμονομημένο ψηφιακό σήμα εξόδου. Το DHT11 μας δίνει πολύ ακριβή τιμή υγρασίας και θερμοκρασίας και εξασφαλίζει υψηλή αξιοπιστία και μακροπρόθεσμη σταθερότητα. Αυτός ο αισθητήρας έχει ένα στοιχείο μέτρησης υγρασίας αντίστασης τύπου και ένα στοιχείο μέτρησης θερμοκρασίας τύπου NTC με ενσωματωμένο μικροελεγκτή 8-bit που έχει γρήγορη απόκριση και οικονομικά αποδοτικό και διατίθεται σε πακέτο μονής σειράς 4 ακίδων.
Χρησιμοποιήσαμε προηγουμένως το ESP12E για να ενημερώσουμε τις ενδείξεις DHT11 στον διακομιστή ιστού, εκτός από αυτό μπορείτε να ελέγξετε όλα τα έργα που βασίζονται στο DHT11 όπου χρησιμοποιήσαμε το DHT11 για διασύνδεση με πολλούς άλλους μικροελεγκτές, όπως Arduino, PIC, Raspberry και ενσωματωμένο μετεωρολογικό σταθμό χρησιμοποιώντας αυτά.
Προγραμματισμός NodeMCU ESP8266 Παρακολούθηση θερμοκρασίας και υγρασίας
Στο τέλος παρέχεται πλήρες πρόγραμμα με λειτουργικό βίντεο. Εδώ εξηγούμε μερικά σημαντικά μέρη του κώδικα.
Πρώτα, συμπεριλάβετε τις βιβλιοθήκες για τη χρήση του ESP8266 και του firebase.
#περιλαμβάνω
Πραγματοποιήστε λήψη και εγκατάσταση των βιβλιοθηκών ακολουθώντας τους παρακάτω συνδέσμους:
github.com/FirebaseExtended/firebase-arduino/blob/master/src/Firebase.h
github.com/bblanchon/ArduinoJson
Κατά τη μεταγλώττιση , εάν εμφανιστεί σφάλμα ότι η βιβλιοθήκη ArduinoJson.h δεν είναι εγκατεστημένη, εγκαταστήστε την χρησιμοποιώντας τον σύνδεσμο που δίνεται παραπάνω.
Θα προγραμματίσουμε το NodeMCU για τη λήψη μετρήσεων από τον αισθητήρα DHT11 και θα το προωθήσουμε στο Firebase κάθε 5 δευτερόλεπτα. Θα ορίσουμε μια διαδρομή για την προώθηση δεδομένων. Αυτή τη στιγμή δύο παράμετροι, δηλαδή η υγρασία και η θερμοκρασία αποστέλλονται στην ίδια γονική διαδρομή και σε διαφορετική παιδική διαδρομή
Αυτές οι δύο παράμετροι είναι πολύ σημαντικές για επικοινωνία με το firebase. Ο καθορισμός αυτών των παραμέτρων θα επιτρέψει την ανταλλαγή δεδομένων μεταξύ και του ESP8266 και του firebase. Για να βρείτε αυτές τις παραμέτρους για το έργο σας, ακολουθήστε το προηγούμενο σεμινάριό μας για το Firebase Setup.
#define FIREBASE_HOST "your-project.firebaseio.com" // η διεύθυνση ονόματος έργου από το αναγνωριστικό firebase #define FIREBASE_AUTH "Uejx9ROxxxxxxxxxxxxxxxxxxxxxxxxfQDDkhN" // το μυστικό κλειδί που δημιουργήθηκε από το firebase
Αφού βρείτε με επιτυχία τα διαπιστευτήρια, αντικαταστήστε τον στον παραπάνω κωδικό.
Εισαγάγετε το SSID και τον κωδικό πρόσβασης Wi-Fi για να συνδεθείτε με το δίκτυό σας.
#define WIFI_SSID "network_name" // εισάγετε το σπίτι σας ή το δημόσιο όνομα wifi
Ορίστε την καρφίτσα δεδομένων DHT στο NodeMCU. Μπορείτε να χρησιμοποιήσετε οποιαδήποτε ψηφιακή καρφίτσα GPIO στο NodeMCU.
# καθορισμός DHTPIN D4
Η βιβλιοθήκη DHT είναι κατασκευασμένη για όλες τις παραλλαγές DHT και συνοδεύεται από την επιλογή του αισθητήρα DHT που θέλετε να χρησιμοποιήσετε π.χ. Απλώς επιλέξτε τον σωστό αισθητήρα DHT και συνεχίστε.
#define DHTTYPE DHT11 // επιλέξτε τύπο dht ως DHT 11 ή DHT22 DHT dht (DHTPIN, DHTTYPE);
Συνδεθείτε στο επιλεγμένο δίκτυο Wi-Fi και συνδεθείτε επίσης στον διακομιστή βάσης δεδομένων firebase.
WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH);
Ξεκινήστε να διαβάζετε στον ακροδέκτη D4 του NodeMCU.
dht.begin ();
Λάβετε μετρήσεις υγρασίας και θερμοκρασίας από τον αισθητήρα DHT και εξοικονομήστε ως τιμή float.
float h = dht.readHumidity (); // Η θερμοκρασία ή η υγρασία ανάγνωσης διαρκεί περίπου 250 χιλιοστά του δευτερολέπτου! float t = dht.readTemperature (); // Διαβάστε τη θερμοκρασία ως Κελσίου (η προεπιλογή)
Απλώς ελέγξτε αν ο αισθητήρας DHT είναι σωστά ενσύρματος ή δεν έχει υποστεί ζημιά και ο ελεγκτής μπορεί να διαβάσει αναγνώσεις από αυτόν. Εάν οι ενδείξεις δεν εμφανίζονται, τότε πιθανότατα ο αισθητήρας είναι κατεστραμμένος, απλώς δείξτε ένα μήνυμα σφάλματος και επιστρέψτε για έλεγχο ξανά χωρίς να προχωρήσετε μπροστά.
if (isnan (h) - isnan (t)) {// Ελέγξτε αν κάποια ανάγνωση απέτυχε και βγείτε νωρίς (για να δοκιμάσετε ξανά). Serial.println (F ("Απέτυχε η ανάγνωση από τον αισθητήρα DHT!")); ΕΠΙΣΤΡΟΦΗ; }
Εκτυπώστε δεδομένα αισθητήρα σε σειριακή οθόνη για εντοπισμό σφαλμάτων και αποθηκεύστε τις τιμές θερμοκρασίας και υγρασίας σε μορφή συμβολοσειράς για να το στείλετε στο firebase. Σημειώστε επίσης ότι η ελάχιστη καθυστέρηση που απαιτείται μεταξύ δύο μετρήσεων από τον αισθητήρα DHT11 είναι 2 δευτερόλεπτα, επομένως χρησιμοποιείτε πάντα καθυστέρηση μεγαλύτερη από 2 δευτερόλεπτα. Για να μάθετε περισσότερα για το DHT11 μπορείτε να δείτε το επίσημο δελτίο δεδομένων.
Serial.print ("Υγρασία:"); Serial.print (h); String fireHumid = String (h) + String ("%"); // μετατροπή ακέραιας υγρασίας σε υγρασία συμβολοσειράς Serial.print ("% Temperature:"); Serial.print (t); Serial.println ("° C"); String fireTemp = String (t) + String ("° C"); καθυστέρηση (4000)
Επιτέλους, στείλτε τα δεδομένα θερμοκρασίας και υγρασίας στο firebase στη διαδρομή "your-project.firebaseio.com/DHT11/Humidity/".
Firebase.pushString ("/ DHT11 / Υγρασία", fireHumid); // διαδρομή εγκατάστασης και αποστολή αναγνώσεων Firebase.pushString ("/ DHT11 / Temperature", fireTemp); // διαδρομή ρύθμισης και αποστολή αναγνώσεων
Μπορείτε να δείτε όλα τα δεδομένα στον λογαριασμό σας στο Firebase. Απλώς μεταβείτε στην ενότητα " Βάση δεδομένων " στο " Το έργο σας " στο " Η κονσόλα μου " στο Firebase.
Για να ρυθμίσετε το Firebase για αποστολή και παρακολούθηση των δεδομένων, μπορείτε να ανατρέξετε στον προηγούμενο οδηγό μας.
Ο πλήρης κώδικας και το βίντεο για αυτήν την παρακολούθηση θερμοκρασίας και υγρασίας βάσει IoT δίνεται παρακάτω.