Πίνακας περιεχομένων:
- Βήμα 1: Λάβετε κλειδί API και διεύθυνση URL από το Openweather.org
- Βήμα 2: Διάγραμμα σύνδεσης
- Βήμα 3: Κωδικός Arduino
- Βήμα 4: Κώδικας επεξεργασίας
Βίντεο: (Έργο IOT) Λάβετε δεδομένα καιρού χρησιμοποιώντας το ESP8266 και το Openweather API: 5 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:31
Σε αυτό το διδακτικό θα δημιουργήσουμε ένα απλό έργο IOT στο οποίο θα λαμβάνουμε τα δεδομένα καιρού της πόλης μας από το openweather.com/api και θα τα εμφανίζουμε χρησιμοποιώντας το λογισμικό επεξεργασίας.
Προμήθειες:
- Arduino
- ESP8266 ή οποιαδήποτε άλλη μονάδα esp
- Arduino IDE
- Λογισμικό επεξεργασίας
- Breadboard
- Jumperwires Άνδρας σε άντρας και άνδρας σε γυναίκα
Βήμα 1: Λάβετε κλειδί API και διεύθυνση URL από το Openweather.org
- Δημιουργία λογαριασμού στο https://openweathermap.org (Εικόνα 1)
- Αφού συνδεθείτε, μεταβείτε στα κλειδιά API και θα λάβετε το κλειδί API όπως φαίνεται στην εικόνα. (Εικόνα 2)
- Αντιγράψτε το κλειδί API και αποθηκεύστε το σε ένα σημειωματάριο. (Εικόνα 3)
- Μετάβαση στην επιλογή API (Εικόνα 4)
- Μετάβαση στην επιλογή εγγράφου API όπως φαίνεται στην εικόνα (Εικόνα 5)
- Αντιγράψτε το url από το εμφανιζόμενο και αποθηκεύστε το σε ένα σημειωματάριο (Εικόνα 6)
Βήμα 2: Διάγραμμα σύνδεσης
Βήμα 3: Κωδικός Arduino
Πριν αντιγράψετε αυτόν τον κώδικα στο Arduino, βεβαιωθείτε ότι έχετε κατεβάσει τον πίνακα ESP8266 στο arduino ide χρησιμοποιώντας τον πίνακα διαχείρισης.
#περιλαμβάνω
#include #include #include const char* ssid = "Το SSID σας"; const char* password = "Your SSID PASSWORD"; // Το όνομα τομέα σας με διαδρομή URL ή διεύθυνση IP με διαδρομή String openWeatherMapApiKey = "Επικολλήστε το κλειδί API σας εδώ"; // Αντικαταστήστε με τον κωδικό χώρας και την πόλη σας String city = "Mumbai"; String countryCode = "IN"; Στοιχεία συμβολοσειράς [16]; // Ο ΧΡΟΝΟΔΙΑΓΡΑΦΟΣ ΠΡΟΦΥΛΑΞΗΣ ΡΥΘΜΙΖΕΤΑΙ ΣΕ 10 ΔΕΥΤΕΡΟΠΕΔΑ ΓΙΑ ΣΚΟΠΟΥ ΔΟΚΙΜΗΣ // Για μια τελική εφαρμογή, ελέγξτε τα όρια κλήσεων API ανά ώρα/λεπτό για να αποφύγετε τον αποκλεισμό/την απαγόρευση ανυπόγραφης πολύ lastTime = 0. // Χρονόμετρο ρυθμισμένο σε 10 λεπτά (600000) // ανυπόγραφο χρονοδιακόπτηDelay = 600000; // Ρυθμίστε το χρονόμετρο στα 10 δευτερόλεπτα (10000) ανυπόγραφο χρονοδιακόπτηDelay = 10000; String jsonBuffer; void setup () {Serial.begin (115200); WiFi.begin (ssid, κωδικός πρόσβασης); //Serial.println("Σύνδεση "); while (WiFi.status ()! = WL_CONNECTED) {καθυστέρηση (500); // Serial.print ("."); } // Serial.println (""); // Serial.print ("Σύνδεση σε δίκτυο WiFi με διεύθυνση IP:"); // Serial.println (WiFi.localIP ()); // // Serial.println ("Ο χρονοδιακόπτης έχει οριστεί σε 10 δευτερόλεπτα (μεταβλητή timerDelay), θα χρειαστούν 10 δευτερόλεπτα πριν από τη δημοσίευση της πρώτης ανάγνωσης."); } void loop () {// Αποστολή αιτήματος HTTP GET εάν ((millis () - lastTime)> timerDelay) {// Ελέγξτε την κατάσταση σύνδεσης WiFi εάν (WiFi.status () == WL_CONNECTED) {String serverPath = "https://api.openweathermap.org/data/2.5/weather?q= " + πόλη +", " + countryCode +" & APPID = " +" d5b56fd07988143ae141503ed9d81742 " +" & units = metric "; jsonBuffer = httpGETRequest (serverPath.c_str ()); //Serial.println(jsonBuffer); JSONVar myObject = JSON.parse (jsonBuffer); // JSON.typeof (jsonVar) μπορεί να χρησιμοποιηθεί για να λάβετε τον τύπο του var εάν (JSON.typeof (myObject) == "undefined") {//Serial.println("Αποτυχία εισαγωγής εισόδου! "); ΕΠΙΣΤΡΟΦΗ; } // Serial.print ("αντικείμενο JSON ="); // Serial.println (myObject); // Serial.print ("Θερμοκρασία:"); // Serial.println (myObject ["main"] ["temp"]); // Serial.print ("Πίεση:"); // Serial.println (myObject ["main"] ["πίεση"]); // Serial.print ("Υγρασία:"); // Serial.println (myObject ["κύρια"] ["υγρασία"]); // Serial.print ("Ταχύτητα ανέμου:"); // Serial.println (myObject ["άνεμος"] ["ταχύτητα"]); int temp = myObject ["main"] ["temp"]; long pres = myObject ["main"] ["πίεση"]; int υγρός = myObject ["κύρια"] ["υγρασία"]; int wind = myObject ["άνεμος"] ["ταχύτητα"]; Χώρα συμβολοσειράς = JSON.stringify (myObject ["sys"] ["country"]); String city1 = JSON.stringify (myObject ["name"]); String weather = JSON.stringify (myObject ["weather"] [0] ["description"]); Εικονίδιο συμβολοσειράς = JSON.stringify (myObject ["weather"] [0] ["icon"]); δεδομένα [0] = String (temp); δεδομένα [1] = "/"; δεδομένα [2] = String (pres); δεδομένα [3] = "/"; δεδομένα [4] = Χορδή (υγρό). δεδομένα [5] = "/"; δεδομένα [6] = Χορδή (άνεμος). δεδομένα [7] = "/"; δεδομένα [8] = χώρα. δεδομένα [9] = "/"; δεδομένα [10] = city1; δεδομένα [11] = "/"; δεδομένα [12] = καιρός. δεδομένα [13] = "/"; δεδομένα [14] = εικονίδιο. δεδομένα [15] = "\ n"; για (int i = 0; i0) {// Serial.print ("Κωδικός απόκρισης HTTP:"); // Serial.println (httpResponseCode); ωφέλιμο φορτίο = http.getString (); } else {Serial.print ("Κωδικός σφάλματος:"); Serial.println (httpResponseCode); } // Δωρεάν πόροι http.end (); ωφέλιμο φορτίο επιστροφής · }
Βήμα 4: Κώδικας επεξεργασίας
Πριν από την εκτέλεση αυτού του κωδικού, κατεβάστε τις δεδομένες εικόνες εικονιδίων που θα χρησιμοποιηθούν για την εμφάνιση του καιρού. Και διατηρήστε τις εικόνες και τον κώδικα στον ίδιο φάκελο.
επεξεργασία εισαγωγής.σειρά.*;
Σειριακό myPort; PImage img; PImage img2; PImage img3; PImage img4; PImage img5; PImage img6; PImage img7; PImage img8; PImage img9; PImage img10; PImage img11; PImage img12; PImage img13; PImage img14; PImage img15; PImage img16; PImage img17; PImage img18; int temp? int pres? int υγρό? int άνεμος? String city = ""; Χώρα συμβολοσειράς = ""; String weather = ""; Εικονίδιο συμβολοσειράς = ""; void setup () {μέγεθος (500, 500); myPort = νέο Σειριακό (αυτό, "COM3", 115200); img = loadImage ("01d.png"); img2 = loadImage ("01n.png"); img3 = loadImage ("02d.png"); img4 = loadImage ("02n.png"); img5 = loadImage ("03d.png"); img6 = loadImage ("03n.png"); img7 = loadImage ("04d.png"); img8 = loadImage ("04n.png"); img9 = loadImage ("09d.png"); img10 = loadImage ("09n.png"); img11 = loadImage ("10d.png"); img12 = loadImage ("10n.png"); img13 = loadImage ("11d.png"); img14 = loadImage ("11n.png"); img15 = loadImage ("13d.png"); img16 = loadImage ("13n.png"); img17 = loadImage ("50d.png"); img18 = loadImage ("50n.png"); } void draw () {background (72, 209, 204); textSize (22); γέμισμα (54, 69, 79). κείμενο ("Θερμοκρασία:", 25, 100); κείμενο (θερμοκρασία +"° C", 200, 100); κείμενο ("Πίεση:", 25, 150); κείμενο (pres + "hpa", 200, 150); κείμενο ("Υγρασία:", 25, 200); κείμενο (υγρό+" %", 200, 200); κείμενο ("Wind:", 25, 250); κείμενο (άνεμος+"m/s", 200, 250); κείμενο ("Χώρα/Πόλη:", 25, 300); κείμενο (χώρα + "-" + πόλη, 200, 300); κείμενο ("Καιρός:", 25, 350); κείμενο (καιρός, 200, 350). if (icon.contain ("01d")) {image (img, 380, 15); } else if (icon.contain ("01n")) {image (img2, 380, 15); } else if (icon.contain ("02d")) {image (img3, 380, 15); } else if (icon.contain ("02n")) {image (img4, 380, 15); } else if (icon.contain ("03d")) {image (img5, 380, 15); } else if (icon.contain ("03n")) {image (img6, 380, 15); } else if (icon.contain ("04d")) {image (img7, 380, 15); } else if (icon.contain ("04n")) {image (img8, 380, 15); } else if (icon.contain ("09d")) {image (img9, 380, 15); } else if (icon.contain ("09n")) {image (img10, 380, 15); } else if (icon.contain ("10d")) {image (img11, 380, 15); } else if (icon.contain ("10n")) {image (img12, 380, 15); } else if (icon.contain ("11d")) {image (img13, 380, 15); } else if (icon.contain ("11n")) {image (img14, 380, 15); } else if (icon == "13d") {image (img15, 380, 15); } else if (icon.contain ("13n")) {image (img16, 380, 15); } else if (icon.contain ("50d")) {image (img17, 380, 15); } else if (icon.contain ("50n")) {image (img18, 380, 15); }} void serialEvent (Serial myPort) {if (myPort.available ()> 0) {String data = myPort.readStringUntil ('\ n'); if (data! = null) {data = trim (data); Στοιχεία συμβολοσειράς = split (δεδομένα, '/'); if (items.length> 1) {temp = int (στοιχεία [0]); pres = int (στοιχεία [1]); υγρό = int (στοιχεία [2]); wind = int (στοιχεία [3]); πόλη = στοιχεία [4].αντικατάσταση ("\" "," "); χώρα = στοιχεία [5]. αντικατάσταση (" / "", ""); καιρός = στοιχεία [6]. αντικατάσταση ("\" "," "); εικονίδιο = στοιχεία [7]. αντικατάσταση (" / "", ""); }}}}
Συνιστάται:
Δημιουργήστε όμορφα σχέδια από ζωντανά δεδομένα Arduino (και αποθηκεύστε τα δεδομένα στο Excel): 3 βήματα
Δημιουργήστε όμορφα σχέδια από ζωντανά δεδομένα Arduino (και αποθηκεύστε τα δεδομένα στο Excel): Σε όλους μας αρέσει να παίζουμε με τη λειτουργία P … lotter στο Arduino IDE. Ωστόσο, ενώ μπορεί να είναι χρήσιμο για βασικές εφαρμογές, τα δεδομένα διαγράφονται όσο περισσότερο προστίθενται σημεία και δεν είναι ιδιαίτερα ευχάριστο στα μάτια. Ο σχεδιαστής Arduino IDE δεν
ESP8266 Παρακολούθηση θερμοκρασίας Nodemcu χρησιμοποιώντας DHT11 σε τοπικό διακομιστή ιστοσελίδων - Λάβετε θερμοκρασία δωματίου και υγρασία στο πρόγραμμα περιήγησής σας: 6 βήματα
ESP8266 Παρακολούθηση θερμοκρασίας Nodemcu χρησιμοποιώντας DHT11 σε τοπικό διακομιστή ιστοσελίδων | Λάβετε θερμοκρασία δωματίου και υγρασία στο πρόγραμμα περιήγησής σας: Γεια σας παιδιά σήμερα θα κάνουμε υγρασία & σύστημα παρακολούθησης θερμοκρασίας χρησιμοποιώντας ESP 8266 NODEMCU & Αισθητήρας θερμοκρασίας DHT11. Η θερμοκρασία και η υγρασία θα ληφθούν από τον αισθητήρα DHT11 & μπορεί να δει σε ένα πρόγραμμα περιήγησης ποια ιστοσελίδα θα διαχειριστεί
Δεδομένα καιρού χρησιμοποιώντας Φύλλα Google και Google Script: 7 Βήματα
Δεδομένα καιρού χρησιμοποιώντας φύλλα Google και Google Script: Σε αυτό το Blogtut, θα στείλουμε τις αναγνώσεις του αισθητήρα SHT25 σε φύλλα Google χρησιμοποιώντας Adafruit huzzah ESP8266 που βοηθά στην αποστολή των δεδομένων στο διαδίκτυο. Η αποστολή δεδομένων στο κελί φύλλου Google είναι πολύ χρήσιμη και βασικός τρόπος που αποθηκεύει τα δεδομένα σε
Καταγράψτε δεδομένα και σχεδιάστε ένα γράφημα στο διαδίκτυο χρησιμοποιώντας NodeMCU, MySQL, PHP και Chartjs.org: 4 βήματα
Καταγράψτε δεδομένα και σχεδιάστε ένα γράφημα στο διαδίκτυο χρησιμοποιώντας NodeMCU, MySQL, PHP και Chartjs.org: Αυτό το εγχειρίδιο περιγράφει πώς μπορούμε να χρησιμοποιήσουμε τον πίνακα Node MCU για τη συλλογή δεδομένων από πολλούς αισθητήρες, την αποστολή αυτών των δεδομένων σε ένα φιλοξενούμενο αρχείο PHP το οποίο στη συνέχεια προσθέτει τα δεδομένα σε μια βάση δεδομένων MySQL. Στη συνέχεια, τα δεδομένα μπορούν να προβληθούν στο διαδίκτυο ως γράφημα, χρησιμοποιώντας το chart.js.A ba
Πώς να φτιάξετε μια συσκευή IoT για τον έλεγχο των συσκευών και την παρακολούθηση του καιρού χρησιμοποιώντας το Esp8266: 5 βήματα
Πώς να φτιάξετε μια συσκευή IoT για τον έλεγχο των συσκευών και την παρακολούθηση του καιρού χρησιμοποιώντας το Esp8266: Το Διαδίκτυο των πραγμάτων (IoT) είναι η διασύνδεση φυσικών συσκευών (που αναφέρονται επίσης ως «συνδεδεμένες συσκευές» και «έξυπνες συσκευές»), κτίρια, και άλλα είδη - ενσωματωμένα με ηλεκτρονικά είδη, λογισμικό, αισθητήρες, ενεργοποιητές και