Daftar Isi:
- Langkah 1: Dapatkan Kunci API dan URL Dari Openweather.org
- Langkah 2: Diagram Koneksi
- Langkah 3: Kode Arduino
- Langkah 4: Memproses Kode
Video: (Proyek IOT) Dapatkan Data Cuaca Menggunakan ESP8266 dan Openweather API: 5 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:53
Dalam instruksi ini kita akan membangun proyek IOT sederhana yang mengambil data cuaca kota kita dari openweather.com/api dan menampilkannya menggunakan perangkat lunak Processing.
Perlengkapan:
- Arduino
- ESP8266 atau modul esp lainnya
- Arduino IDE
- Perangkat lunak pemrosesan
- Papan tempat memotong roti
- Jumperwires Pria ke Pria dan Pria ke Wanita
Langkah 1: Dapatkan Kunci API dan URL Dari Openweather.org
- Buat akun di https://openweathermap.org (Gambar 1)
- Setelah Anda masuk, buka kunci API dan Anda akan mendapatkan kunci API seperti yang ditunjukkan pada gambar. (Gambar 2)
- Salin kunci API dan simpan dalam file notepad. (Gambar 3)
- Buka opsi API (Gambar 4)
- Buka opsi dokumen API seperti yang ditunjukkan pada gambar (Gambar 5)
- Salin url dari dan ditampilkan dan simpan dalam file notepad (Gambar 6)
Langkah 2: Diagram Koneksi
Langkah 3: Kode Arduino
Sebelum menyalin kode ini ke Arduino pastikan Anda telah mengunduh board ESP8266 ke arduino ide menggunakan Boards manager.
#termasuk
#include #include #include const char* ssid = "SSID Anda"; const char* password = "PASSWORD SSID Anda";// Nama domain Anda dengan jalur URL atau alamat IP dengan jalur String openWeatherMapApiKey = "Tempelkan kunci API Anda di sini"; // Ganti dengan kode negara dan kota Anda String city = "Mumbai"; String kode negara = "IN"; String data[16]; // TIMER DEFAULT DISET KE 10 DETIK UNTUK TUJUAN PENGUJIAN // Untuk aplikasi akhir, periksa batas panggilan API per jam/menit untuk menghindari pemblokiran/banned unsigned long lastTime = 0; // Timer disetel ke 10 menit (60000) //waktu lama tidak ditandatanganiDelay = 600000; // Atur timer ke 10 detik (10000) unsigned long timerDelay = 10000; String jsonBuffer; void setup() { Serial.begin(115200); WiFi.begin(ssid, kata sandi); //Serial.println("Menghubungkan"); while(WiFi.status() != WL_CONNECTED) { delay(500); // Serial.print("."); } // Serial.println(""); // Serial.print("Terhubung ke jaringan WiFi dengan Alamat IP: "); // Serial.println(WiFi.localIP()); // // Serial.println("Timer disetel ke 10 detik (variabel timerDelay), ini akan memakan waktu 10 detik sebelum memublikasikan pembacaan pertama."); } void loop() { // Kirim permintaan GET HTTP if ((millis() - lastTime) > timerDelay) { // Periksa status koneksi WiFi if(WiFi.status()== WL_CONNECTED){ String serverPath = "https://api.openweathermap.org/data/2.5/weather?q=" + kota + ", " + kode negara + "&APPID=" + "d5b56fd07988143ae141503ed9d81742" + "&units=metric"; jsonBuffer = httpGETRequest(serverPath.c_str()); //Serial.println(jsonBuffer); JSONVar myObject = JSON.parse(jsonBuffer); // JSON.typeof(jsonVar) dapat digunakan untuk mendapatkan tipe var if (JSON.typeof(myObject) == "undefined") { //Serial.println("Input parsing gagal!"); kembali; } // Serial.print("Objek JSON = "); // Serial.println(objek saya); // Serial.print("Suhu: "); // Serial.println(objek saya["utama"]["temp"]); // Serial.print("Tekanan: "); // Serial.println(objek saya["utama"]["tekanan"]); // Serial.print("Kelembaban: "); // Serial.println(objek saya["utama"]["kelembaban"]); // Serial.print("Kecepatan Angin: "); // Serial.println(objek saya["angin"]["kecepatan"]); int suhu = myObject["utama"]["temp"]; lama pres = myObject["utama"]["tekanan"]; int lembab = myObject["utama"]["kelembaban"]; int angin = myObject["angin"]["kecepatan"]; String negara = JSON.stringify(myObject["sys"]["country"]); String city1 = JSON.stringify(myObject["nama"]); String cuaca = JSON.stringify(myObject["cuaca"][0]["deskripsi"]); Ikon string = JSON.stringify(myObject["cuaca"][0]["ikon"]); data[0]= String(temp); data[1]= "/"; data[2]= String(tekan); data[3]= "/"; data[4]= String(lembab); data[5]= "/"; data[6]= String(angin); data[7]= "/"; data[8]= negara; data[9]= "/"; data[10]= kota1; data[11]= "/"; data[12]= cuaca; data[13]= "/"; data[14]= ikon; data[15]= "\n"; for(int i=0;i0) { // Serial.print("Kode Respon HTTP: "); // Serial.println(httpResponseCode); muatan = http.getString(); } else { Serial.print("Kode kesalahan: "); Serial.println(httpResponseCode); } // Sumber daya gratis http.end(); mengembalikan muatan; }
Langkah 4: Memproses Kode
Sebelum menjalankan kode ini, unduh gambar ikon yang diberikan yang akan digunakan untuk menunjukkan cuaca. Dan simpan gambar dan kode di folder yang sama.
import processing.serial.*;
Port saya serial; img gambar; PGambar img2; PGambar img3; PGambar img4; PGambar img5; PGambar img6; PGambar img7; PGambar img8; PGambar img9; PGambar img10; PGambar img11; PGambar img12; PGambar img13; PGambar img14; PGambar img15; PGambar img16; PGambar img17; PGambar img18; int suhu; int pra; int lembab; int angin; String kota = " "; String negara = " "; String cuaca =" "; Ikon string = " "; batalkan pengaturan(){ ukuran(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"); } batal draw(){ latar belakang(72, 209, 204); ukuran teks(22); isi(54, 69, 79); teks("Suhu: ", 25, 100); teks(suhu +"°C", 200, 100); teks("Tekanan:", 25, 150); teks(tekan + " hpa", 200, 150); text("Kelembaban: ",25,200); teks(lembab+" %", 200, 200); text("Angin: ", 25, 250); teks(angin+" m/s", 200, 250); text("Negara/Kota: ", 25, 300); teks(negara +"-"+ kota, 200, 300); teks("Cuaca: ", 25, 350); teks (cuaca, 200, 350); if(icon.contains("01d")){ gambar(img, 380, 15); } else if(icon.contains("01n")){ gambar(img2, 380, 15); } else if(icon.contains("02d")){ gambar(img3, 380, 15); } else if(icon.contains("02n")){ gambar(img4, 380, 15); } else if(icon.contains("03d")){ gambar(img5, 380, 15); } else if(icon.contains("03n")){ gambar(img6, 380, 15); } else if(icon.contains("04d")){ gambar(img7, 380, 15); } else if(icon.contains("04n")){ gambar(img8, 380, 15); } else if(icon.contains("09d")){ gambar(img9, 380, 15); } else if(icon.contains("09n")){ gambar(img10, 380, 15); } else if(icon.contains("10d")){ gambar(img11, 380, 15); } else if(icon.contains("10n")){ gambar(img12, 380, 15); } else if(icon.contains("11d")){ gambar(img13, 380, 15); } else if(icon.contains("11n")){ gambar(img14, 380, 15); } else if(ikon == "13d"){ gambar(img15, 380, 15); } else if(icon.contains("13n")){ gambar(img16, 380, 15); } else if(icon.contains("50d")){ gambar(img17, 380, 15); } else if(icon.contains("50n")){ gambar(img18, 380, 15); } } void serialEvent(Serial myPort){ if (myPort.available() > 0){ String data = myPort.readStringUntil('\n'); if(data != null){ data = trim(data); String item = split(data, '/'); if (items.length > 1) { temp = int(items[0]); pres = int(item[1]); lembab = int(item[2]); angin = int(item[3]); kota = item[4].replace("\"", ""); negara = item[5].replace("\"", ""); cuaca = item[6].replace("\"", ""); icon = item[7].replace("\"", ""); } } } }
Direkomendasikan:
Cara Membuat RADAR Menggunakan Arduino untuk Proyek Sains - Proyek Arduino Terbaik: 5 Langkah
Cara Membuat RADAR Menggunakan Arduino untuk Proyek Sains | Proyek Arduino Terbaik: Hai teman-teman, dalam instruksi ini saya akan menunjukkan kepada Anda bagaimana membuat sistem radar luar biasa yang dibangun menggunakan arduino nano, proyek ini sangat ideal untuk proyek sains dan Anda dapat dengan mudah membuatnya dengan investasi dan peluang yang sangat sedikit jika memenangkan hadiah besar untuk
Data Cuaca Menggunakan Google Spreadsheet dan Google Script: 7 Langkah
Data Cuaca Menggunakan Google Sheets dan Google Script: Dalam Blogtut ini, kita akan mengirimkan hasil pembacaan sensor SHT25 ke google sheets menggunakan Adafruit huzzah ESP8266 yang membantu pengiriman data ke internet. Mengirim data ke google sheet cell sangat berguna dan cara dasar yang menyimpan data di
Cara Membuat Perangkat IoT untuk Mengontrol Peralatan dan Memantau Cuaca Menggunakan Esp8266: 5 Langkah
Cara Membuat Perangkat IoT untuk Mengontrol Peralatan dan Memantau Cuaca Menggunakan Esp8266: Internet of things (IoT) adalah jaringan antar perangkat fisik (juga disebut sebagai "perangkat yang terhubung" dan "perangkat pintar"), gedung, dan item lainnya-disematkan dengan elektronik, perangkat lunak, sensor, aktuator, dan
Dapatkan Sensor Berat Gantung dari Timbangan Bagasi untuk Proyek Arduino Anda: 4 Langkah
Dapatkan Sensor Berat Gantung dari Timbangan Bagasi untuk Proyek Arduino Anda: Dalam tutorial ini saya menunjukkan cara mendapatkan sensor berat gantung untuk proyek Arduino dari timbangan koper/memancing yang murah dan umum dan modul ADC HX711 yang sering digunakan. Latar Belakang: Untuk sebuah proyek saya membutuhkan sebuah sensor untuk mengukur berat tertentu yang ha
Stasiun Cuaca 5 in 1 Acurite Menggunakan Raspberry Pi dan Weewx (Stasiun Cuaca lain Kompatibel): 5 Langkah (dengan Gambar)
Stasiun Cuaca Acurite 5 in 1 Menggunakan Raspberry Pi dan Weewx (Stasiun Cuaca Lainnya Kompatibel): Ketika saya membeli stasiun cuaca Acurite 5 in 1, saya ingin dapat memeriksa cuaca di rumah saya saat saya pergi. Ketika saya sampai di rumah dan memasangnya, saya menyadari bahwa saya harus menghubungkan layar ke komputer atau membeli hub pintar mereka