Πίνακας περιεχομένων:
- Προμήθειες
- Βήμα 1: Μετρήστε τη θερμοκρασία και την υγρασία
- Βήμα 2: Δημιουργία και διαμόρφωση έργου
- Βήμα 3: Εγκατάσταση Βιβλιοθηκών
- Βήμα 4: Συνδέστε έναν αισθητήρα DHT11
- Βήμα 5: Αποστολή δεδομένων στο Cloud
- Βήμα 6: Διαγνωστικά
- Βήμα 7: Έναρξη και εντοπισμός σφαλμάτων στο έργο
- Βήμα 8: Διαμόρφωση πίνακα ελέγχου
- Βήμα 9: Συμπέρασμα
Βίντεο: Σύνδεση αισθητήρα DHT11/DHT22 στο σύννεφο με πίνακα που βασίζεται σε ESP8266: 9 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:34
Στο προηγούμενο άρθρο, συνέδεσα την πλακέτα NodeMCU που βασίζεται σε ESP8266 σε μια υπηρεσία Cloud4RPi. Τώρα, ήρθε η ώρα για ένα πραγματικό έργο!
Προμήθειες
Απαιτήσεις υλικού:
- Οποιοσδήποτε πίνακας βασίζεται σε ένα τσιπ ESP8266 (για παράδειγμα, NodeMCU)
- Αισθητήρας DHT11 ή DHT22
Λογισμικό και υπηρεσίες:
- Βιβλιοθήκη αισθητήρων DHT από την Adafruit - v1.3.7
- Adafruit Unified Sensor - v1.0.3
- cloud4rpi-esp-arduino-v0.1.0
- Cloud4RPI - Πίνακας ελέγχου cloud για συσκευές IoT
- PlatformIO IDE για VSCode
Βήμα 1: Μετρήστε τη θερμοκρασία και την υγρασία
Είχα ήδη έναν αισθητήρα DHT11, οπότε αποφάσισα να τον χρησιμοποιήσω για μετρήσεις θερμοκρασίας και υγρασίας. Ας επιλέξουμε μια βιβλιοθήκη Arduino για την ανάγνωση δεδομένων αισθητήρα.
Το μητρώο Arduino περιέχει πολλές βιβλιοθήκες, από τις οποίες επέλεξα τη δημοφιλέστερη.
Σύμφωνα με το αποθετήριο GitHub, απαιτείται επίσης να προσθέσουμε ένα πακέτο Adafruit Unified Sensor.
Βήμα 2: Δημιουργία και διαμόρφωση έργου
Έχω ήδη περιγράψει πώς να δημιουργήσετε ένα έργο PlatformIO και να εγκαταστήσετε βιβλιοθήκες στο πρώτο μέρος. Το έργο μου ονομάζεται "MyNodeMCU". Η δομή φαίνεται παραπάνω.
Αυτό το έργο είναι ένα ελαφρώς τροποποιημένο παράδειγμα Cloud4RPi. Αποφάσισα να αποθηκεύσω το διακριτικό συσκευής και τα διαπιστευτήρια Wi-Fi στο αρχείο ρυθμίσεων αντί του κώδικα.
Το αρχείο platform.io φαίνεται ως εξής:
[platformio] default_envs = nodemcuv2 [env: nodemcuv2] platform = espressif8266 framework = arduino board = nodemcuv2
Βήμα 3: Εγκατάσταση Βιβλιοθηκών
Η εγκατάσταση των βιβλιοθηκών είναι αρκετά απλή. Μπορείτε να το κάνετε από τη γραφική διεπαφή του IDE ή προσθέτοντας τα απαιτούμενα ονόματα βιβλιοθηκών στην ενότητα lib_deps του αρχείου platform.io:
? … Lib_deps = cloud4rpi -esp -arduino Adafruit Unified Sensor DHT sensor_blotage build_flags = -D MQTT_MAX_PACKET_SIZE = 1024 -D MQTT_MAX_TRANSFER_SIZE = 128 -D CLOUD4RPI_DWID_ID_ D CLOUD4RPI_TOKEN = / "_ YOUR_DEVICE_TOKEN _ \"
Οι βιβλιοθήκες που προστέθηκαν θα εγκατασταθούν αυτόματα στον υποφάκελο ενός έργου.
Η κεφαλίδα main.cpp φαίνεται ως εξής:
#include #include #include #include "DHT.h"
Βήμα 4: Συνδέστε έναν αισθητήρα DHT11
Το Adafruit παρέχει ένα παράδειγμα DHTtester.ino σύνδεσης αισθητήρα.
Αυτός ο κώδικας εκκινεί έναν αισθητήρα και ορίζει μια δομή για την αποθήκευση του αποτελέσματος μέτρησης (σε περίπτωση που ήταν επιτυχής):
#define DHTPIN 2 // Digitalηφιακή ακίδα συνδεδεμένη στον αισθητήρα DHT#define DHTTYPE DHT11 // DHT 11 //… DHT dht (DHTPIN, DHTTYPE); dht.begin (); //… struct DHT_Result {float h; επιπλέουν t? }; DHT_Result dhtResult;
Η επόμενη λειτουργία δείχνει πώς να διαβάζετε δεδομένα αισθητήρων και να τα αποθηκεύετε στη δομή δεδομένων που περιγράφεται παραπάνω
void readSensors () {float h = dht.readHumidity (); // Διαβάστε τη θερμοκρασία ως Κελσίου (η προεπιλογή) επιπλέει t = dht.readTemperature ();
// Ελέγξτε αν απέτυχε η ανάγνωση και βγείτε
if (isnan (h) || isnan (t)) {Serial.println (F ("Απέτυχε η ανάγνωση από τον αισθητήρα DHT!")); ΕΠΙΣΤΡΟΦΗ; } dhtResult.h = h; dhtResult.t = t; }
Βήμα 5: Αποστολή δεδομένων στο Cloud
Μόλις έχουμε αυτά τα δεδομένα, το επόμενο βήμα είναι να τα στείλουμε στην υπηρεσία Cloud4RPi.
Η σελίδα Cloud4RPi για Arduino περιγράφει το API βιβλιοθήκης, το οποίο είναι ένα σύνολο μεθόδων που χρησιμοποιούνται για:
- δημιουργία, ανάγνωση και ενημέρωση μεταβλητών,
- αποστολή μεταβλητών τιμών στο cloud χρησιμοποιώντας το πρωτόκολλο MQTT.
Η βιβλιοθήκη υποστηρίζει τρεις τύπους μεταβλητών: Bool, Numeric και String.
Η ροή εργασιών της βιβλιοθήκης ξεκινά με τη δημιουργία ενός στιγμιότυπου API χρησιμοποιώντας το Διακριτικό συσκευής από τον ιστότοπο του cloud4rpi.io (ανατρέξτε στο μέρος 1 του άρθρου για λεπτομέρειες).
#if καθορισμένα (CLOUD4RPI_TOKEN) Cloud4RPi c4r (CLOUD4RPI_TOKEN); #else Cloud4RPi c4r ("!!! _ NO_DEVICE_TOKEN _ !!!"); #τέλος εαν
Στη συνέχεια, δηλώστε μεταβλητές για αναγνώσεις DHT11:
c4r.declareNumericVariable ("DHT11_Temp"); c4r.declareNumericVariable ("DHT11_Hum");
Στη συνέχεια, λάβετε δεδομένα από τον αισθητήρα, αποθηκεύστε τα σε μεταβλητές και δημοσιεύστε τα δεδομένα στο Cloud4RPi:
c4r.setVariable ("DHT11_Temp", dhtResult.t); c4r.setVariable ("DHT11_Hum", dhtResult.h); c4r.publishData ();
Η θερμοκρασία και η υγρασία δεν αλλάζουν γρήγορα, επομένως δεν απαιτείται αποστολή περισσότερων από μία τιμές ανά 5 λεπτά.
Βήμα 6: Διαγνωστικά
Το Cloud4RPi υποστηρίζει διαγνωστικά δεδομένα μαζί με μεταβλητές τιμές. Χρησιμοποίησα χρόνο λειτουργίας, ισχύ σήματος Wi-Fi και διεύθυνση IP ως διαγνωστικά δεδομένα:
c4r.declareDiagVariable ("IP_Address"); c4r.declareDiagVariable ("RSSI"); // Ισχύς σήματος WiFi c4r.declareDiagVariable ("Uptime");
Σημείωση: Η συνάρτηση millis που χρησιμοποιώ για να μηδενίζει τις ρυθμίσεις χρόνου λειτουργίας στο μηδέν κάθε ~ 50 ημέρες. Αυτό είναι κάτι παραπάνω από αρκετό για το έργο μου.
Ο ακόλουθος κώδικας ορίζει τιμές διαγνωστικών μεταβλητών:
c4r.setDiagVariable ("RSSI", (String) WiFi. RSSI () + "dBm"); c4r.setDiagVariable ("IP_Address", WiFi.localIP (). toString ()); c4r.setDiagVariable ("Uptime", uptimeHumanReadable (currentMillis)); c4r.publishDiag ();
Η συνάρτηση uptimeHumanReadable μετατρέπει χιλιοστά του δευτερολέπτου σε μια βολική μορφή:
String uptimeHumanReadable (ανυπόγραφο μεγάλο χιλιοστό του δευτερολέπτου) {static char uptimeStr [32]; ανυπόγραφα μεγάλα δευτερόλεπτα = χιλιοστά του δευτερολέπτου / 1000; ανυπόγραφο μεγάλο λεπτό = δευτ. / 60; ανυπόγραφο int ώρες = λεπτά / 60; ανυπόγραφο int ημέρες = ώρες / 24; δευτερόλεπτα -= λεπτά * 60; λεπτά -= ώρες * 60; ώρες -= ημέρες * 24; sprintf (uptimeStr, "%d ημέρες%2.2d:%2.2d:%2.2d", (byte) ημέρες, (byte) ώρες, (byte) λεπτά, (byte) δευτερόλεπτα); επιστροφή συμβολοσειράς (uptimeStr); }
Η συνάρτηση εξάγει μια συμβολοσειρά όπως αυτή 5 ημέρες 10:23:14 αντί για έναν περίεργο μεγάλο αριθμό.
Βήμα 7: Έναρξη και εντοπισμός σφαλμάτων στο έργο
Αφού καταρτίσετε τον κώδικα που δημιουργήσατε και τον αναβοσβήνετε στο NodeMCU, η συσκευή συνδέεται σε μια υπηρεσία cloud και αρχίζει να στέλνει δεδομένα.
Μπορείτε να αυξήσετε τη βαρύτητα καταγραφής ορίζοντας τη μεταβλητή προεπεξεργαστή CLOUD4RPI_DEBUG σε 1 (προσθέστε -D CLOUD4RPI_DEBUG = 1 στην ενότητα build_flags στο αρχείο platform.io).
Στη συνέχεια, ανοίξτε τον ιστότοπο cloud4rpi.io και παρατηρήστε τη νέα συσκευή στο διαδίκτυο. Ανοίξτε το για να δείτε όλες τις μεταβλητές τιμές που λαμβάνονται από τη συσκευή: αισθητήρας και διαγνωστικά.
Βήμα 8: Διαμόρφωση πίνακα ελέγχου
Σε αυτό το βήμα, η σύνδεση δεδομένων στο cloud είναι σε λειτουργία. Τώρα, ας διαμορφώσουμε την οπτική αναπαράσταση των δεδομένων.
Χρησιμοποίησα τη διεπαφή διαμόρφωσης του Πίνακα ελέγχου για να δημιουργήσω τον ακόλουθο πίνακα ελέγχου.
Το ταμπλό είναι κοινόχρηστο, οπότε το μοιράζομαι αμέσως με τον φίλο μου.
Βήμα 9: Συμπέρασμα
Ο πλήρης κωδικός του έργου είναι διαθέσιμος στην ουσία.
Αυτα για τωρα!
Ερωτήσεις και προτάσεις είναι ευπρόσδεκτα στα σχόλια.
Συνιστάται:
Σύστημα οπτικής παρακολούθησης που βασίζεται σε LoRa για τη γεωργία Iot - Σχεδιάζοντας μια μπροστινή εφαρμογή χρησιμοποιώντας Firebase & Angular: 10 βήματα
Σύστημα οπτικής παρακολούθησης που βασίζεται σε LoRa για τη γεωργία Iot | Σχεδιάζοντας μια Fronted Application χρησιμοποιώντας Firebase & Angular: Στο προηγούμενο κεφάλαιο μιλάμε για τον τρόπο με τον οποίο οι αισθητήρες λειτουργούν με τη μονάδα loRa για να συμπληρώσουν τη βάση δεδομένων Realtime της βάσης firebase και είδαμε το διάγραμμα πολύ υψηλού επιπέδου πώς λειτουργεί ολόκληρο το έργο μας. Σε αυτό το κεφάλαιο θα μιλήσουμε για το πώς μπορούμε
Πώς να δημιουργήσετε και να εισαγάγετε έναν πίνακα και να προσθέσετε επιπλέον στήλες και/ή σειρές σε αυτόν τον πίνακα στο Microsoft Office Word 2007: 11 βήματα
Πώς να δημιουργήσετε και να εισαγάγετε έναν πίνακα και να προσθέσετε επιπλέον στήλες και/ή σειρές σε αυτόν τον πίνακα στο Microsoft Office Word 2007: Είχατε ποτέ πολλά δεδομένα με τα οποία εργάζεστε και σκεφτήκατε τον εαυτό σας … " πώς μπορώ να κάνω όλα αυτά τα δεδομένα φαίνονται καλύτερα και είναι πιο εύκολα κατανοητά; " Αν ναι, τότε η απάντησή σας μπορεί να είναι ένας πίνακας στο Microsoft Office Word 2007
Αυτόματο σύστημα κήπου που βασίζεται σε Raspberry Pi για εξωτερικούς ή εσωτερικούς χώρους - MudPi: 16 βήματα (με εικόνες)
Αυτόματο σύστημα κήπου που βασίζεται στο Raspberry Pi για εξωτερικούς ή εσωτερικούς χώρους - MudPi: Σας αρέσει η κηπουρική αλλά δεν βρίσκετε χρόνο για να το συντηρήσετε; Perhapsσως έχετε κάποια φυτά εσωτερικού χώρου που ψάχνουν λίγο διψασμένα ή ψάχνουν έναν τρόπο να αυτοματοποιήσουν την υδροπονία σας; Σε αυτό το έργο θα λύσουμε αυτά τα προβλήματα και θα μάθουμε τα βασικά
Αυτοματοποιημένη έξυπνη Aquaponics (Με πίνακα ελέγχου βασισμένη στο σύννεφο): 11 βήματα
Αυτοματοποιημένη Έξυπνη Aquaponics (Με Πίνακα Ελέγχου Νέφους): Η Aquaponics σας επιτρέπει να καλλιεργείτε τα δικά σας βιολογικά τρόφιμα οπουδήποτε (εσωτερικούς ή εξωτερικούς χώρους), σε πολύ λιγότερο χώρο, με περισσότερη ανάπτυξη, λιγότερη χρήση νερού και χωρίς εξωτερικά χημικά λιπάσματα. Επίσης, μπορείτε να παρακολουθείτε τις συνθήκες σε έναν πίνακα εργαλείων που βασίζεται σε σύννεφο
Ρολόι κινούμενων σχεδίων SMART LED συνδεδεμένο στο Web με πίνακα ελέγχου που βασίζεται στο Web, συγχρονισμένος διακομιστής χρόνου: 11 βήματα (με εικόνες)
Ρολόι κινούμενων σχεδίων SMART LED συνδεδεμένο στο Web με πίνακα ελέγχου Web, συγχρονισμένος διακομιστής χρόνου: Η ιστορία αυτού του ρολογιού πηγαίνει πολύ πίσω-περισσότερα από 30 χρόνια. Ο πατέρας μου πρωτοστάτησε σε αυτή την ιδέα όταν ήμουν μόλις 10 ετών, πολύ πριν από την επανάσταση των LED - πίσω όταν τα LED ήταν 1/1000 της φωτεινότητας της τρέχουσας εκτυφλωτικής λαμπρότητας τους. Μια αληθεια