Η υγρασία και η θερμοκρασία είναι πολύ συνηθισμένες παράμετροι για τη μέτρηση σε πολλά μέρη όπως αγρόκτημα, θερμοκήπιο, ιατρική, βιομηχανία και γραφεία. Έχουμε ήδη καλύψει τη μέτρηση υγρασίας και θερμοκρασίας χρησιμοποιώντας το Arduino και εμφανίζουμε τα δεδομένα στην οθόνη LCD.
Σε αυτό το έργο IoT θα παρακολουθούμε την υγρασία και τη θερμοκρασία μέσω του Διαδικτύου χρησιμοποιώντας το ThingSpeak όπου θα δείξουμε τα τρέχοντα δεδομένα υγρασίας και θερμοκρασίας μέσω του Διαδικτύου χρησιμοποιώντας τον διακομιστή ThingSpeak. Επιτυγχάνεται με την επικοινωνία δεδομένων μεταξύ Arduino, DHT11 Sensor Module, ESP8266 WIFI module και LCD. Το θερμόμετρο κλίμακας Κελσίου και ο μετρητής υγρασίας κλίμακας ποσοστού εμφανίζει τη θερμοκρασία περιβάλλοντος και την υγρασία μέσω μιας οθόνης LCD και το στέλνει επίσης στο διακομιστή ThingSpeak για ζωντανή παρακολούθηση από οπουδήποτε στον κόσμο.
Ρύθμιση εργασίας και ThingSpeak:
Αυτό το έργο που βασίζεται στο IoT έχει τέσσερα τμήματα, πρώτα τον αισθητήρα υγρασίας και θερμοκρασίας . Δεύτερον, το Arduino Uno εξάγει τα δεδομένα του αισθητήρα DHT11 ως κατάλληλο αριθμό σε ποσοστό και κλίμακα Κελσίου, και τα στέλνει στο Wi-Fi Module. Τρίτον, το Wi-Fi Module ESP8266 στέλνει τα δεδομένα στο ThingSpeak's Sever. Και τέλος, το ThingSpeak αναλύει τα δεδομένα και τα εμφανίζει σε μορφή γραφήματος. Προαιρετική οθόνη LCD χρησιμοποιείται επίσης για την εμφάνιση της θερμοκρασίας και της υγρασίας.
Το ThingSpeak παρέχει πολύ καλό εργαλείο για έργα που βασίζονται σε IoT για το Arduino. Χρησιμοποιώντας τον ιστότοπο ThingSpeak, μπορούμε να παρακολουθούμε τα δεδομένα μας μέσω Διαδικτύου από οπουδήποτε και μπορούμε επίσης να ελέγξουμε το σύστημά μας μέσω Διαδικτύου, χρησιμοποιώντας τα κανάλια και τις ιστοσελίδες που παρέχονται από το ThingSpeak. ThingSpeak «Συλλέγει» τα δεδομένα από τους αισθητήρες, «Ανάλυση και οπτικοποίηση» των δεδομένων και «Πράξεις» ενεργοποιώντας μια αντίδραση. Εδώ εξηγούμε πώς μπορείτε να στείλετε δεδομένα στον διακομιστή ThingSpeak χρησιμοποιώντας το ESP8266 WIFI Module:
1. Πρώτα απ 'όλα, τις ανάγκες των χρηστών για να δημιουργήσετε έναν λογαριασμό στο ThingSpeak.com, τότε Συνδεθείτε και κάντε κλικ στο Get Started.
2. Τώρα μεταβείτε στο μενού «Κανάλια» και κάντε κλικ στην επιλογή Νέο κανάλι στην ίδια σελίδα για περαιτέρω διαδικασία.
3. Τώρα θα δείτε μια φόρμα για τη δημιουργία του καναλιού, συμπληρώστε το Όνομα και την Περιγραφή σύμφωνα με την επιλογή σας. Στη συνέχεια, συμπληρώστε «Υγρασία» και «Θερμοκρασία» στις ετικέτες Field 1 και Field 2, σημειώστε τα πλαίσια ελέγχου και για τα δύο Fields. Επιλέξτε επίσης το πλαίσιο ελέγχου για την επιλογή "Δημοσίευση" παρακάτω στη φόρμα και, τέλος, Αποθηκεύστε το κανάλι. Τώρα το νέο κανάλι σας έχει δημιουργηθεί.
4. Τώρα κάντε κλικ στην καρτέλα «API κλειδιά» και αποθηκεύστε τα πλήκτρα εγγραφής και ανάγνωσης API, εδώ χρησιμοποιούμε μόνο το πλήκτρο εγγραφής. Πρέπει να αντιγράψετε αυτό το κλειδί στο char * api_key στον κώδικα.
5. Μετά από αυτό, κάντε κλικ στο «Εισαγωγή / Εξαγωγή Δεδομένων» και αντιγράψτε το URL Ενημέρωσης Ροής καναλιού GET Request, το οποίο είναι:
api.thingspeak.com/update?api_key=SIWOYBX26OXQ1WMS&field1=0
6. Τώρα ο χρήστης πρέπει να ανοίξει το "api.thingspeak.com" χρησιμοποιώντας τη λειτουργία httpGet με το postUrl ως "ενημέρωση? Api_key = SIWOYBX26OXQ1WMS & field1 = 0" και στη συνέχεια να στείλει δεδομένα χρησιμοποιώντας τη ροή δεδομένων ή τη διεύθυνση αιτήματος ενημέρωσης.
Πριν από την αποστολή των δεδομένων, ο χρήστης πρέπει να επεξεργαστεί αυτήν τη συμβολοσειρά ερωτήματος ή postUrl με πεδία δεδομένων θερμοκρασίας και υγρασίας, όπως φαίνεται παρακάτω. Εδώ έχουμε προσθέσει και τις δύο παραμέτρους στη συμβολοσειρά που πρέπει να στείλουμε μέσω της αίτησης GET στον διακομιστή, αφού χρησιμοποιήσαμε το httpGet για να στείλουμε τα δεδομένα στον διακομιστή. Ελέγξτε τον πλήρη κώδικα παρακάτω.
Sprintf (postUrl, "ενημέρωση? Api_key =% s & field1 =% s & field2 =% s", api_key, humidStr, tempStr); httpGet ("api.thingspeak.com", postUrl, 80);
Η όλη διαδικασία παρουσιάζεται στην ενότητα Βίντεο, στο τέλος αυτού του άρθρου.
Η εργασία αυτού του έργου βασίζεται σε σειριακή επικοινωνία με ένα καλώδιο για τη λήψη δεδομένων από το DHT11. Το πρώτο Arduino στέλνει ένα σήμα έναρξης στη μονάδα DHT και στη συνέχεια το DHT δίνει ένα σήμα απόκρισης με δεδομένα που περιέχουν. Το Arduino συλλέγει και εξάγει τα δεδομένα σε δύο μέρη πρώτα είναι η υγρασία και το δεύτερο είναι η θερμοκρασία και έπειτα τα στέλνουν σε διακομιστή LCD 16x2 και ThingSpeak. Το ThingSpeak εμφανίζει τα δεδομένα σε μορφή γραφήματος όπως παρακάτω:
Μπορείτε να μάθετε περισσότερα για τον αισθητήρα DHT11 και τη διασύνδεσή του με το Arduino εδώ.
Περιγραφή κυκλώματος:
Οι συνδέσεις για αυτό το έργο παρακολούθησης θερμοκρασίας και υγρασίας ThingSpeak είναι πολύ απλές. Εδώ μια οθόνη υγρών κρυστάλλων χρησιμοποιείται για την εμφάνιση θερμοκρασίας και υγρασίας, η οποία συνδέεται απευθείας με το Arduino σε λειτουργία 4-bit. Οι ακίδες LCD, RS, EN, D4, D5, D6 και D7 συνδέονται με τον ψηφιακό ακροδέκτη Arduino με αριθμό 14, 15, 16, 17, 18 και 19. Αυτή η LCD είναι προαιρετική.
Η μονάδα αισθητήρα DHT11 συνδέεται με τον ψηφιακό πείρο 12 του Arduino. Οι ακροδέκτες Vcc και GND της μονάδας Wi-Fi ESP8266 συνδέονται απευθείας με 3.3V και το GND του Arduino και το CH_PD συνδέονται επίσης με 3.3V. Οι ακίδες Tx και Rx του ESP8266 συνδέονται απευθείας με τους ακροδέκτες 2 και 3 του Arduino. Το λογισμικό Serial Library χρησιμοποιείται επίσης εδώ για να επιτρέπει τη σειριακή επικοινωνία στους ακροδέκτες 2 και 3 του Arduino. Έχουμε ήδη καλύψει λεπτομερώς την ενότητα Interfacing του ESP8266 Wi-Fi στο Arduino.
Μέρος προγραμματισμού:
Ο προγραμματισμός μέρος αυτού του έργου παίζει πολύ σημαντικό ρόλο για την εκτέλεση όλων των λειτουργιών. Πρώτα απ 'όλα συμπεριλαμβάνουμε τις απαιτούμενες βιβλιοθήκες και αρχικοποιούμε μεταβλητές.
#include "dht.h" // Συμπεριλαμβανομένης της βιβλιοθήκης για το dht #include
Αφού εισάγετε το κλειδί API εγγραφής και λάβετε μερικές χορδές.
char * api_key = "SIWOYBX26OXQ1WMS"; // Εισαγάγετε το κλειδί του API εγγραφής από το ThingSpeak static char postUrl; int humi, tem; void httpGet (String ip, String path, int port = 80).
Στη λειτουργία Void loop () διαβάζουμε τη θερμοκρασία και την υγρασία και μετά δείχνουμε αυτές τις μετρήσεις στην οθόνη LCD.
Η λειτουργία void send2server () χρησιμοποιείται για την αποστολή των δεδομένων στον διακομιστή. Η λειτουργία Send2server είναι μια ρουτίνα υπηρεσίας διακοπής χρονοδιακόπτη, που καλεί κάθε 20 δευτερόλεπτα. Όταν καλούμε τη λειτουργία ενημέρωσης, καλείται η ρουτίνα υπηρεσίας διακοπής χρονοδιακόπτη.
void send2server () {char tempStr; char humidStr; dtostrf (tem, 5, 3, tempStr); dtostrf (humi, 5, 3, humidStr); sprintf (postUrl, "ενημέρωση? api_key =% s & field1 =% s & field2 =% s", api_key, humidStr, tempStr); httpGet ("api.thingspeak.com", postUrl, 80); }