Πίνακας περιεχομένων:

ΕΦΑΡΜΟΓΗ ΘΕΡΜΟΚΡΑΣΙΑΣ THINGSPEAK ΚΑΙ ΥΓΡΑΣΙΑΣ ΧΡΗΣΗ ΧΡΗΣΗΣ ESP8266: 9 βήματα
ΕΦΑΡΜΟΓΗ ΘΕΡΜΟΚΡΑΣΙΑΣ THINGSPEAK ΚΑΙ ΥΓΡΑΣΙΑΣ ΧΡΗΣΗ ΧΡΗΣΗΣ ESP8266: 9 βήματα

Βίντεο: ΕΦΑΡΜΟΓΗ ΘΕΡΜΟΚΡΑΣΙΑΣ THINGSPEAK ΚΑΙ ΥΓΡΑΣΙΑΣ ΧΡΗΣΗ ΧΡΗΣΗΣ ESP8266: 9 βήματα

Βίντεο: ΕΦΑΡΜΟΓΗ ΘΕΡΜΟΚΡΑΣΙΑΣ THINGSPEAK ΚΑΙ ΥΓΡΑΣΙΑΣ ΧΡΗΣΗ ΧΡΗΣΗΣ ESP8266: 9 βήματα
Βίντεο: Lesson 11: What is Arduino library and How to use DHT11 Temperature and Humidity Sensor | SunFounder 2024, Νοέμβριος
Anonim
ΕΦΑΡΜΟΓΗ ΘΕΡΜΟΚΡΑΣΙΑΣ THINGSPEAK ΚΑΙ ΥΓΡΑΣΙΑΣ ΧΡΗΣΗ ΧΡΗΣΗΣ ESP8266
ΕΦΑΡΜΟΓΗ ΘΕΡΜΟΚΡΑΣΙΑΣ THINGSPEAK ΚΑΙ ΥΓΡΑΣΙΑΣ ΧΡΗΣΗ ΧΡΗΣΗΣ ESP8266

Ενώ ασχολιόμουν με τα ηλεκτρονικά μου πράγματα, μου ήρθε αυτή η ιδέα να φτιάξω διαδικτυακή εφαρμογή καιρού. Αυτή η εφαρμογή ιστού χρησιμοποιεί τον αισθητήρα SHT31 για λήψη δεδομένων θερμοκρασίας και υγρασίας σε πραγματικό χρόνο. Έχουμε αναπτύξει το έργο μας στη μονάδα WiFi ESP8266. Online ή offline! Δεν χρειάζεται να ανησυχείτε, είτε είστε συνδεδεμένοι είτε εκτός σύνδεσης, θα λαμβάνετε ενημερώσεις για τον καιρό από οπουδήποτε και οποτεδήποτε. Αυτή η εφαρμογή ιστού δημοσιεύει δεδομένα στον τοπικό διακομιστή ιστού καθώς και στο cloud. Για λειτουργίες cloud, χρησιμοποιούμε το ThingSpeak API. Το SHT31 χρησιμοποιεί I2C για να λάβει τα δεδομένα από τον αισθητήρα.

Το SHT 31 είναι αισθητήρες θερμοκρασίας και υγρασίας που κατασκευάζεται από την Sensirion. Το SHT31 παρέχει υψηλό επίπεδο ακρίβειας περίπου ± 2% RH. Το εύρος υγρασίας του κυμαίνεται από 0 έως 100% και το εύρος θερμοκρασίας μεταξύ -40 και 125 ° C. Είναι πολύ πιο αξιόπιστο και γρήγορο με 8 δευτερόλεπτα χρόνου απόκρισης αισθητήρα. Η λειτουργικότητά του περιλαμβάνει βελτιωμένη επεξεργασία σήματος και συμβατότητα με I2C. Διαθέτει διαφορετικούς τρόπους λειτουργίας που το καθιστούν ενεργειακά αποδοτικό.

Σε αυτό το σεμινάριο, έχουμε διασυνδέσει το SHT 31 με τον πίνακα Adafruit Huzzah. Για την ανάγνωση τιμών θερμοκρασίας και υγρασίας χρησιμοποιήσαμε ασπίδα ESP8266 I2C. Αυτός ο προσαρμογέας καθιστά όλες τις ακίδες προσβάσιμες στον χρήστη και προσφέρει φιλικό προς το χρήστη περιβάλλον I2C.

Βήμα 1: Απαιτείται υλικό

Απαιτείται υλικό
Απαιτείται υλικό
Απαιτείται υλικό
Απαιτείται υλικό
Απαιτείται υλικό
Απαιτείται υλικό

Υλικό που χρησιμοποιήθηκε για την ολοκλήρωση αυτής της εργασίας:

  1. SHT 31
  2. Adafruit Huzzah ESP8266
  3. Προσαρμογέας ESP8266 I2C
  4. Καλώδιο I2C

Βήμα 2: Συνδέσεις υλικού

Συνδέσεις υλικού
Συνδέσεις υλικού

Αυτό το βήμα περιλαμβάνει τον οδηγό σύνδεσης υλικού. Αυτή η ενότητα εξηγεί βασικά τις συνδέσεις καλωδίωσης που απαιτούνται μεταξύ του αισθητήρα και του ESP8266. Οι συνδέσεις έχουν ως εξής.

  1. Το SHT31 λειτουργεί μέσω I2C. Η παραπάνω εικόνα δείχνει τη σύνδεση μεταξύ της μονάδας ESP8266 και της μονάδας SHT31. Χρησιμοποιούμε καλώδιο I2C για αυτό είτε μπορούμε να χρησιμοποιήσουμε καλώδια άλματος 4 F έως F.
  2. ένα σύρμα χρησιμοποιείται για Vcc, το δεύτερο σύρμα για GND και άλλα δύο για SDA και SCL αντίστοιχα
  3. Σύμφωνα με τον προσαρμογέα I2C, τα pin2 και pin 14 μιας πλακέτας ESP8266 χρησιμοποιούνται ως SDA και SCL αντίστοιχα

Βήμα 3: Κωδικός για τον προγραμματισμό εργασιών

Κωδικός για τον προγραμματισμό εργασιών
Κωδικός για τον προγραμματισμό εργασιών

Σε αυτό το σεμινάριο, εκτελούμε τρεις λειτουργίες

  • Διαβάστε τα δεδομένα από το SHT11 χρησιμοποιώντας το πρωτόκολλο I2C
  • φιλοξενεί τον διακομιστή ιστού και δημοσιεύει την ανάγνωση του αισθητήρα στην ιστοσελίδα
  • δημοσιεύστε τις ενδείξεις αισθητήρα στο ThingSpeak API

Για να το πετύχουμε αυτό χρησιμοποιούμε τη βιβλιοθήκη TaskScheduler. Έχουμε προγραμματίσει τρεις διαφορετικές εργασίες που αναφέρονται σε τρεις διαφορετικές λειτουργίες ελέγχου. αυτό γίνεται ως εξής

  • Η εργασία 1 είναι για την ανάγνωση της τιμής του αισθητήρα, η οποία εκτελείται για 1 δευτερόλεπτο έως ότου φτάσει το χρονικό όριο των 10 δευτερολέπτων.
  • Όταν το Task1 φτάσει στο χρόνο λήξης του Το Task 2 είναι ενεργοποιημένο και το Task1 είναι απενεργοποιημένο.
  • Συνδεόμαστε στο AP σε αυτήν την επανάκληση, Δύο boolean μεταβλητές λαμβάνονται για να φροντίσουν για την εναλλαγή μεταξύ STA και AP
  • Στην Εργασία 2 φιλοξενούμε έναν διακομιστή ιστού στη διεύθυνση 192.168.1.4. Αυτή η εργασία εκτελείται κάθε 5 δευτερόλεπτα έως ότου φτάσει το χρονικό όριο λήξης της, το οποίο είναι 50 δευτερόλεπτα

  • Όταν η εργασία 2 φτάσει στο χρονικό όριο, η εργασία 3 είναι ενεργοποιημένη και η εργασία 2 είναι απενεργοποιημένη.
  • Συνδεόμαστε με το STA (τοπική IP) σε αυτό το calback Στην Εργασία 3 δημοσιεύουμε την ανάγνωση του αισθητήρα στο cloud ThingSpeak API
  • Η εργασία 3 εκτελείται κάθε πέντε δευτερόλεπτα έως ότου φτάσει το χρονικό όριο λήξης της, δηλαδή 50 δευτερόλεπτα
  • Όταν το Task3 φτάσει στο χρόνο λήξης του Το Task 1 ενεργοποιείται ξανά και το Task3 απενεργοποιείται.
  • Όταν δεν καλείται καμία επανάκληση ή η συσκευή είναι αδρανής, πηγαίνει στο Light Sleep εξοικονομώντας ενέργεια.

void taskI2CCallback ();

void taskI2CDsable (); void taskAPCallback (); void taskAPDisable (); void taskWiFiCallback (); void taskWiFiDisable (); // Εργασίες για i2c, φιλοξενία διακομιστή ιστού και ανάρτηση στο thingspeak Task tI2C (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL, & taskI2CDsable); Εργασία tI2C (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL, & taskI2CDsable); Εργασία tAP (5*TASK_SECOND, TASK_FOREVER, & taskAPCallback, & ts, false, NULL, & taskAPDisable); Εργασία tWiFi (5* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable); // χρονικό όριο για εργασίες tI2C.setTimeout (10 * TASK_SECOND); tAP.setTimeout (50 * TASK_SECOND); tWiFi.setTimeout (50 * TASK_SECOND); // ενεργοποίηση I2C task tI2C.enable ();

Βήμα 4: Κωδικός για ανάγνωση τιμών θερμοκρασίας και υγρασίας

Κωδικός για ανάγνωση τιμών θερμοκρασίας και υγρασίας
Κωδικός για ανάγνωση τιμών θερμοκρασίας και υγρασίας

Χρησιμοποιούμε τη βιβλιοθήκη Wire.h για να διαβάσουμε τις τιμές θερμοκρασίας και υγρασίας. Αυτή η βιβλιοθήκη διευκολύνει την επικοινωνία i2c μεταξύ του αισθητήρα και της κύριας συσκευής. 0x44 είναι η διεύθυνση I2C για SHT31.

Το SHT31 λειτουργεί με διαφορετικό τρόπο λειτουργίας. Μπορείτε να ανατρέξετε στο φύλλο δεδομένων για αυτό. Χρησιμοποιούμε 0x2C και 0x06 ως MSB και LSB αντίστοιχα για λειτουργία με μία λήψη.

// I2C task callback void taskI2CCallback () {Serial.println ("taskI2CStarted"); χωρίς υπογραφή int root [6]; // έναρξη μετάδοσης από 0x44. Wire.beginTransmission (Addr); // για μετάδοση ενός πυροβολισμού με υψηλή επαναληψιμότητα χρησιμοποιούμε 0x2C (MSB) και 0x06 (LSB) Wire.write (0x2C). Wire.write (0x06); // τερματισμός μετάδοσης Wire.endTransmission (); // ζητήστε byte από 0x44 Wire.beginTransmission (Addr); Wire.endTransmission (); Wire.requestFrom (Addr, 6)? εάν (Wire.available () == 6) {// δεδομένα [0] και δεδομένα [1] περιέχουν 16 bit θερμοκρασίας. root [0] = Wire.read (); root [1] = Wire.read (); // τα δεδομένα [2] περιέχουν 8 bit ρίζας CRC [2] = Wire.read (); // δεδομένα [3] και δεδομένα [4] περιέχουν 16 bit ρίζας υγρασίας [3] = Wire.read (); root [4] = Wire.read (); // δεδομένα [5] αποτελούνται από ρίζα CRC 8 bit [5] = Wire.read (); } int temp = (ρίζα [0] * 256) + ρίζα [1]; // μετατόπιση MSB κατά 8 bit προσθήκη LSB float cTemp = -45.0 + (175.0 * temp /65535.0); float fTemp = (cTemp * 1.8) + 32.0; // μετατοπίστε το MSB κατά 8 bits προσθέστε LSB σε αυτό διαχωρίστε με πλήρη ανάλυση και * 100 για ποσοστό υγρασίας επίπλευσης = (100.0 * ((ρίζα [3] * 256.0) + ρίζα [4])) /65535.0; tempC = cTemp; tempF = fTemp; υγρασία = υγρασία? Serial.print ("Θερμοκρασία σε C: / t"); Serial.println (String (cTemp, 1)); Serial.print ("Θερμοκρασία σε F: / t"); Serial.println (String (fTemp, 1)); Serial.print ("Υγρασία: / t"); Serial.println (String (υγρασία, 1)); }

Βήμα 5: Κωδικός για τη φιλοξενία ενός διακομιστή ιστοσελίδων

Κωδικός για τη φιλοξενία διακομιστή ιστοσελίδων
Κωδικός για τη φιλοξενία διακομιστή ιστοσελίδων
Κωδικός για τη φιλοξενία διακομιστή ιστοσελίδων
Κωδικός για τη φιλοξενία διακομιστή ιστοσελίδων

Έχουμε φιλοξενήσει έναν διακομιστή ιστού από τη συσκευή μας σε στατική IP.

Η βιβλιοθήκη ESP8266WebServer χρησιμοποιείται για τη φιλοξενία του διακομιστή ιστού

  • Πρώτα πρέπει να δηλώσουμε διεύθυνση IP, Gateway και μάσκα υποδικτύου για να δημιουργήσουμε τη στατική μας IP
  • Τώρα δηλώστε ssid και κωδικό πρόσβασης για το σημείο πρόσβασής σας. Συνδεθείτε στο σημείο πρόσβασης από οποιαδήποτε συσκευή STA
  • φιλοξενεί τον διακομιστή στη θύρα 80, η οποία είναι μια προεπιλεγμένη θύρα για πρωτόκολλο επικοινωνίας Διαδικτύου, το Πρωτόκολλο μεταφοράς υπερκειμένου (HTTP) εισάγετε 192.168.1.4 στο πρόγραμμα περιήγησής σας για εισαγωγή ιστοσελίδας και 192.168.1.4/Value για ανάγνωση ιστοσελίδας αισθητήρα

// στατική Ip για APIPAddress ap_local_IP (192, 168, 1, 4); IPAddress ap_gateway (192, 168, 1, 254). IPAddress ap_subnet (255, 255, 255, 0); // ssid και AP για τοπικό WiFi σε λειτουργία STA const char WiFissid = "*********"; const char WiFipass = "*********"; // ssid και pass για AP const char APssid = "********"; const char APpass = "********"; Διακομιστής ESP8266WebServer (80); void setup {server.on ("/", onHandleDataRoot); server.on ("/Value", onHandleDataFeed); server.onNotFound (onHandleNotFound);} void taskAPCallback () {Serial.println ("taskAP start"); server.handleClient (); } void onHandleDataRoot () {server.send (200, "text/html", PAGE1); } void onHandleDataFeed () {server.send (200, "text/html", PAGE2); } void onHandleNotFound () {String message = "Το αρχείο δεν βρέθηκε / n / n"; μήνυμα += "URI:"; μήνυμα += server.uri (); μήνυμα += "\ nΜέθοδος:"; μήνυμα += (server.method () == HTTP_GET)? "GET": "POST"; μήνυμα += "\ nΕπιχειρήματα:"; μήνυμα += server.args (); μήνυμα += "\ n"; server.send (404, "text/plain", message); } void επανασύνδεσηAPWiFi () {WiFi.mode (WIFI_AP_STA); καθυστέρηση (100)? WiFi.disconnect (); boolean status = WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet); if (status == true) {Serial.print ("Setting soft-AP …"); boolean ap = WiFi.softAP (APssid, APpass); if (ap == true) {Serial.print ("συνδεδεμένο με: / t"); // IPAddress myIP = WiFi.softAPIP (); Serial.println (WiFi.softAPIP ()); } server.begin ();

}

Βήμα 6: Ρύθμιση Thingspeak

Ρύθμιση Thingspeak
Ρύθμιση Thingspeak
Ρύθμιση Thingspeak
Ρύθμιση Thingspeak
Ρύθμιση Thingspeak
Ρύθμιση Thingspeak

Το ThingSpeak είναι μια πλατφόρμα IoT. Το ThingSpeak είναι μια δωρεάν διαδικτυακή υπηρεσία που σας επιτρέπει να συλλέγετε και να αποθηκεύετε δεδομένα αισθητήρων στο cloud.

Σε αυτό το βήμα, θα σας δώσω μια σύντομη διαδικασία για τη δημιουργία του λογαριασμού σας Thing Speak

  • Εγγραφείτε για νέο λογαριασμό χρήστη στο ThingSpeak
  • Δημιουργήστε ένα νέο κανάλι επιλέγοντας Κανάλια, Τα Κανάλια μου και, στη συνέχεια, Νέο κανάλι
  • Επεξεργαστείτε τα πεδία σας
  • Αυτά τα πεδία περιέχουν τα δεδομένα του αισθητήρα σας
  • Σημειώστε το Κλειδί εγγραφής API και το αναγνωριστικό καναλιού
  • Στο σκίτσο του Arduino, μπορείτε να χρησιμοποιήσετε τη βιβλιοθήκη ThingSpeak για το Arduino ή μπορείτε να δημοσιεύσετε απευθείας τα δεδομένα στο ThingSpeak API
  • Το επόμενο βήμα επεξεργάζεται την ανάρτηση του περιεχομένου στο Thing Speak API

Βήμα 7: Κωδικός για τη δημοσίευση δεδομένων στο Thing Speak

Κωδικός για τη δημοσίευση δεδομένων στο Thing Speak
Κωδικός για τη δημοσίευση δεδομένων στο Thing Speak
Κωδικός για τη δημοσίευση δεδομένων στο Thing Speak
Κωδικός για τη δημοσίευση δεδομένων στο Thing Speak
Κωδικός για τη δημοσίευση δεδομένων στο Thing Speak
Κωδικός για τη δημοσίευση δεδομένων στο Thing Speak
Κωδικός για τη δημοσίευση δεδομένων στο Thing Speak
Κωδικός για τη δημοσίευση δεδομένων στο Thing Speak

Εδώ δημοσιεύουμε τις ενδείξεις των αισθητήρων στο Thing Speak. τα ακόλουθα βήματα είναι απαραίτητα για την ολοκλήρωση αυτής της εργασίας-

  • Δημιουργήστε το λογαριασμό σας σε πράγμα talkCreate κανάλια και πεδία για να αποθηκεύσετε τα δεδομένα του αισθητήρα σας
  • μπορούμε να πάρουμε και να δημοσιεύσουμε τα δεδομένα από το ESP στο thingSpeak και αντίστροφα χρησιμοποιώντας αιτήματα GET και POST στο api.
  • μπορούμε να δημοσιεύσουμε τα δεδομένα μας στο ThingSpeak ως εξής

id taskWiFiCallback () {WiFiClient wifiClient; if (wifiClient.connect (hostId, 80)) {String postStr = apiKey; postStr += "& field1 ="; postStr += Χορδή (υγρό); postStr += "& field2 ="; postStr += String (tempC); postStr += "& field3 ="; postStr += String (tempF); postStr += "\ r / n / r / n"; wifiClient.print ("POST /ενημέρωση HTTP /1.1 / n"); wifiClient.print ("Host: api.thingspeak.com / n"); wifiClient.print ("Σύνδεση: κλείσιμο / n"); wifiClient.print ("X-THINGSPEAKAPIKEY:"+apiKey+"\ n"); wifiClient.print ("Τύπος περιεχομένου: application/x-www-form-urlencoded / n"); wifiClient.print ("Περιεχόμενο-Μήκος:"); wifiClient.print (postStr.length ()); wifiClient.print ("\ n / n"); wifiClient.print (postStr); } wifiClient.stop (); }

Βήμα 8: Συνολικός κώδικας

Ο συνολικός κώδικας είναι διαθέσιμος στο αποθετήριο GitHub μου

Βήμα 9: Μονάδες

  • Arduino JSON
  • ESP826WebServer
  • Χρονοδιάγραμμα εργασιών
  • SHT 31
  • Σάρωση I2C
  • Εκπαιδευτικό σεμινάριο HIH6130
  • Σύρμα
  • NCD.io

Συνιστάται: