Isi kandungan:
- Langkah 1: Dapatkan Kunci API dan URL Dari Openweather.org
- Langkah 2: Diagram Sambungan
- Langkah 3: Kod Arduino
- Langkah 4: Memproses Kod
Video: (Projek IOT) Dapatkan Data Cuaca Menggunakan ESP8266 dan Openweather API: 5 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:06
Dalam instruksional ini, kami akan membina sebuah projek IOT sederhana di mana mengambil data cuaca bandar kami dari openweather.com/api dan memaparkannya menggunakan perisian Pemprosesan.
Bekalan:
- Arduino
- ESP8266 atau modul esp lain
- Arduino IDE
- Memproses perisian
- Papan roti
- Jumperwires Lelaki hingga Lelaki dan Lelaki hingga Perempuan
Langkah 1: Dapatkan Kunci API dan URL Dari Openweather.org
- Buat akaun di https://openweathermap.org (Gambar 1)
- Selepas anda masuk, pergi ke kunci API dan anda akan mendapat kunci API seperti yang ditunjukkan dalam gambar. (Gambar 2)
- Salin kunci API dan simpan dalam fail notepad. (Gambar 3)
- Pergi ke pilihan API (Gambar 4)
- Pergi ke pilihan dokumen API seperti yang ditunjukkan dalam gambar (Gambar 5)
- Salin url dari dan ditunjukkan dan simpan dalam fail notepad (Gambar 6)
Langkah 2: Diagram Sambungan
Langkah 3: Kod Arduino
Sebelum menyalin kod ini ke Arduino, pastikan anda telah memuat turun papan ESP8266 ke arduino ide menggunakan pengurus Papan.
#sertakan
#include #include #include const char * ssid = "SSID Anda"; const char * password = "KATA LALUAN SSID Anda"; // Nama Domain anda dengan laluan URL atau alamat IP dengan jalur String openWeatherMapApiKey = "Tampal kunci API anda di sini"; // Ganti dengan kod negara anda dan bandar String city = "Mumbai"; String countryCode = "IN"; Data rentetan [16]; // TIMER DEFAULT DITETAPKAN SEHINGGA 10 SECONDS UNTUK MENGUJI TUJUAN // Untuk aplikasi terakhir, periksa had panggilan API setiap jam / minit untuk mengelakkan dari disekat / dilarang lama terakhir yang tidak ditandatangani = 0; // Pemasa ditetapkan ke 10 minit (600000) // pemasa panjang yang tidak ditandatanganiDelay = 600000; // Tetapkan pemasa hingga 10 saat (10000) pemasa panjang yang tidak ditandatanganiDelay = 10000; Rentetan jsonBuffer; persediaan tidak sah () {Serial.begin (115200); WiFi.begin (ssid, kata laluan); //Serial.println("Connecting "); sementara (WiFi.status ()! = WL_CONNECTED) {kelewatan (500); // Serial.print ("."); } // Serial.println (""); // Serial.print ("Disambungkan ke rangkaian WiFi dengan Alamat IP:"); // Serial.println (WiFi.localIP ()); // // Serial.println ("Pemasa ditetapkan hingga 10 saat (pemboleh ubah timerDelay), ia akan mengambil masa 10 saat sebelum menerbitkan bacaan pertama."); } gelung void () {// Kirim permintaan HTTP GET jika ((milis () - lastTime)> timerDelay) {// Periksa status sambungan WiFi jika (WiFi.status () == WL_CONNECTED) {String serverPath = "https://api.openweathermap.org/data/2.5/weather?q= "+ city +", "+ countryCode +" & APPID = "+" d5b56fd07988143ae141503ed9d81742 "+" & unit = metrik "; jsonBuffer = httpGETRequest (serverPath.c_str ()); //Serial.println(jsonBuffer); JSONVar myObject = JSON.parse (jsonBuffer); // JSON.typeof (jsonVar) boleh digunakan untuk mendapatkan jenis var jika (JSON.typeof (myObject) == "undefined") {//Serial.println("Parsing input gagal! "); kembali; } // Serial.print ("objek JSON ="); // Serial.println (myObject); // Serial.print ("Suhu:"); // Serial.println (myObject ["main"] ["temp"]); // Serial.print ("Tekanan:"); // Serial.println (myObject ["main"] ["tekanan"]); // Serial.print ("Kelembapan:"); // Serial.println (myObject ["main"] ["kelembapan"]); // Serial.print ("Kelajuan Angin:"); // Serial.println (myObject ["angin"] ["kelajuan"]); int temp = myObject ["main"] ["temp"]; long pres = myObject ["main"] ["tekanan"]; int humid = myObject ["main"] ["kelembapan"]; int wind = myObject ["angin"] ["kelajuan"]; String country = JSON.stringify (myObject ["sys"] ["negara"]); String city1 = JSON.stringify (myObject ["nama"]); Cuaca rentetan = JSON.stringify (myObject ["cuaca"] [0] ["keterangan"]); Ikon rentetan = JSON.stringify (myObject ["cuaca"] [0] ["ikon"]); data [0] = Rentetan (temp); data [1] = "/"; data [2] = Rentetan (pres); data [3] = "/"; data [4] = Rentetan (lembab); data [5] = "/"; data [6] = Rentetan (angin); data [7] = "/"; data [8] = negara; data [9] = "/"; data [10] = bandar1; data [11] = "/"; data [12] = cuaca; data [13] = "/"; data [14] = ikon; data [15] = "\ n"; untuk (int i = 0; i0) {// Serial.print ("Kod respons HTTP:"); // Serial.println (httpResponseCode); muatan = http.getString (); } lain {Serial.print ("Kod ralat:"); Serial.println (httpResponseCode); } // Sumber percuma http.end (); muatan pulangan; }
Langkah 4: Memproses Kod
Sebelum menjalankan kod ini, muat turun gambar ikon yang akan digunakan untuk menunjukkan cuaca. Dan simpan gambar dan kod dalam folder yang sama.
pemprosesan import.serial. *;
MyPort bersiri; Imej PImage; 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 suhu; int pres; int lembap; angin int; String city = ""; Negara tali = ""; Cuaca rentetan = ""; Ikon rentetan = ""; batal persediaan () {size (500, 500); myPort = Serial baru (ini, "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"); } undian tidak sah () {latar belakang (72, 209, 204); saiz teks (22); isi (54, 69, 79); teks ("Suhu:", 25, 100); teks (temp + "° C", 200, 100); teks ("Tekanan:", 25, 150); teks (pres + "hpa", 200, 150); teks ("Kelembapan:", 25, 200); teks (lembab + "%", 200, 200); teks ("Angin:", 25, 250); teks (angin + "m / s", 200, 250); teks ("Negara / Bandar:", 25, 300); teks (negara + "-" + bandar, 200, 300); teks ("Cuaca:", 25, 350); teks (cuaca, 200, 350); if (icon.contains ("01d")) {gambar (img, 380, 15); } lain jika (icon.contains ("01n")) {image (img2, 380, 15); } lain jika (icon.contains ("02d")) {image (img3, 380, 15); } lain jika (icon.contains ("02n")) {image (img4, 380, 15); } lain jika (icon.contains ("03d")) {image (img5, 380, 15); } lain jika (icon.contains ("03n")) {image (img6, 380, 15); } lain jika (icon.contains ("04d")) {gambar (img7, 380, 15); } lain jika (icon.contains ("04n")) {image (img8, 380, 15); } lain jika (icon.contains ("09d")) {image (img9, 380, 15); } lain jika (icon.contains ("09n")) {image (img10, 380, 15); } lain jika (icon.contains ("10d")) {image (img11, 380, 15); } lain jika (icon.contains ("10n")) {image (img12, 380, 15); } lain jika (icon.contains ("11d")) {image (img13, 380, 15); } lain jika (icon.contains ("11n")) {image (img14, 380, 15); } lain jika (ikon == "13d") {gambar (img15, 380, 15); } lain jika (icon.contains ("13n")) {image (img16, 380, 15); } lain jika (icon.contains ("50d")) {image (img17, 380, 15); } lain jika (icon.contains ("50n")) {image (img18, 380, 15); }} batal serialEvent (Serial myPort) {if (myPort.available ()> 0) {String data = myPort.readStringUntil ('\ n'); jika (data! = null) {data = trim (data); Item rentetan = split (data, '/'); jika (item.length> 1) {temp = int (item [0]); pres = int (item [1]); lembap = int (item [2]); angin = int (item [3]); city = item [4].replace ("\" "," "); country = item [5].replace (" / "", ""); cuaca = item [6].replace ("\" "," "); icon = item [7].replace (" / "", ""); }}}}
Disyorkan:
Cara Membuat RADAR Menggunakan Arduino untuk Projek Sains - Projek Arduino Terbaik: 5 Langkah
Cara Membuat RADAR Menggunakan Arduino untuk Projek Sains | Projek Arduino Terbaik: Hai rakan-rakan, dalam pengajaran ini saya akan menunjukkan kepada anda bagaimana membuat sistem radar yang menakjubkan yang dibina menggunakan arduino nano projek ini sangat sesuai untuk projek sains dan anda boleh membuatnya dengan pelaburan dan peluang yang sangat rendah jika memenangi hadiah adalah bagus untuk
Data Cuaca Menggunakan Helaian Google dan Skrip Google: 7 Langkah
Data Cuaca Menggunakan Helaian Google dan Skrip Google: Di Blogtut ini, kami akan mengirimkan bacaan sensor SHT25 ke helaian google menggunakan Adafruit huzzah ESP8266 yang membantu menghantar data ke internet. Menghantar data ke sel lembaran google sangat berguna dan cara asas yang menyimpan data dalam
Cuaca Lilin - Cuaca dan Suhu Sekilas: 8 Langkah
Cuaca Lilin - Cuaca dan Suhu Sekilas: Dengan menggunakan lilin ajaib ini, anda dapat mengetahui suhu dan keadaan semasa di luar dengan serta-merta
Cara Membuat Peranti IoT untuk Mengawal Peralatan dan Memantau Cuaca Menggunakan Esp8266: 5 Langkah
Cara Membuat Peranti IoT untuk Mengawal Peralatan dan Memantau Cuaca Menggunakan Esp8266: Internet of things (IoT) adalah rangkaian antara peranti fizikal (juga disebut sebagai "peranti bersambung" dan "peranti pintar"), bangunan, dan item lain - disertakan dengan elektronik, perisian, sensor, penggerak, dan
Stesen Cuaca Acurite 5 dalam 1 Menggunakan Pi Raspberry dan Weewx (Stesen Cuaca lain Sesuai): 5 Langkah (dengan Gambar)
Stesen Cuaca Acurite 5 in 1 Menggunakan Raspberry Pi dan Weewx (Stesen Cuaca yang Lain Sesuai): Semasa saya membeli stesen cuaca Acurite 5 in 1, saya ingin dapat memeriksa cuaca di rumah saya semasa saya tiada. Semasa saya pulang dan menyiapkannya, saya menyedari bahawa saya mesti mempunyai paparan yang disambungkan ke komputer atau membeli hab pintar mereka