สารบัญ:
- ขั้นตอนที่ 1: รับคีย์ API และ URL จาก Openweather.org
- ขั้นตอนที่ 2: แผนภาพการเชื่อมต่อ
- ขั้นตอนที่ 3: รหัส Arduino
- ขั้นตอนที่ 4: กำลังประมวลผลรหัส
วีดีโอ: (โครงการ IOT) รับข้อมูลสภาพอากาศโดยใช้ ESP8266 และ Openweather API: 5 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:02
ในคำแนะนำนี้ เราจะสร้างโครงการ IOT อย่างง่าย ซึ่งดึงข้อมูลสภาพอากาศของเมืองของเราจาก openweather.com/api และแสดงโดยใช้ซอฟต์แวร์การประมวลผล
เสบียง:
- Arduino
- ESP8266 หรือโมดูล esp อื่นๆ
- Arduino IDE
- ซอฟต์แวร์ประมวลผล
- เขียงหั่นขนม
- 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"; สตริง countryCode = "IN"; ข้อมูลสตริง[16]; // ตัวตั้งเวลาเริ่มต้นถูกตั้งค่าเป็น 10 วินาทีสำหรับวัตถุประสงค์ในการทดสอบ // สำหรับแอปพลิเคชันสุดท้าย ให้ตรวจสอบขีดจำกัดการเรียก API ต่อชั่วโมง/นาทีเพื่อหลีกเลี่ยงการถูกบล็อก/แบนที่ไม่ได้ลงชื่อ long lastTime = 0; // ตั้งเวลาเป็น 10 นาที (6000000) // ตัวจับเวลานานที่ไม่ได้ลงนาม = 6000000; // ตั้งค่าตัวจับเวลาเป็น 10 วินาที (10,000) ตัวจับเวลานานที่ไม่ได้ลงนาม Delay = 10000; สตริง jsonBuffer; การตั้งค่าเป็นโมฆะ () { Serial.begin (115200); WiFi.begin(ssid, รหัสผ่าน); //Serial.println("กำลังเชื่อมต่อ"); ในขณะที่ (WiFi.status () != WL_CONNECTED) { ล่าช้า (500); // Serial.print("."); } // Serial.println(""); // Serial.print("เชื่อมต่อกับเครือข่าย WiFi ด้วยที่อยู่ IP: "); // Serial.println(WiFi.localIP()); // // Serial.println("Timer set to 10 seconds (ตัวแปร timerDelay) จะใช้เวลา 10 วินาทีก่อนที่จะเผยแพร่การอ่านครั้งแรก"); } void loop () { // ส่งคำขอ HTTP GET ถ้า ((มิลลิวินาที () - เวลาสุดท้าย) > timerDelay) { // ตรวจสอบสถานะการเชื่อมต่อ WiFi ถ้า (WiFi.status ()== WL_CONNECTED) { String serverPath = "https://api.openweathermap.org/data/2.5/weather?q=" + เมือง + ", " + รหัสประเทศ + "&APPID=" + "d5b56fd07988143ae141503ed9d81742" + "&units=metric"; jsonBuffer = httpGETRequest(serverPath.c_str()); // Serial.println (jsonBuffer); JSONVar myObject = JSON.parse (jsonBuffer); // JSON.typeof (jsonVar) สามารถใช้เพื่อรับประเภทของ var if (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"]["pressure"]); // Serial.print("ความชื้น: "); // Serial.println(myObject["main"]["humidity"]); // Serial.print("ความเร็วลม: "); // Serial.println(myObject["wind"]["speed"]); int temp = myObject["main"]["temp"]; กดยาว = myObject["main"]["pressure"]; int humid = myObject["main"]["humidity"]; int ลม = myObject["wind"]["speed"]; ประเทศสตริง = JSON.stringify(myObject["sys"]["country"]); สตริง city1 = JSON.stringify(myObject["name"]); สตริงสภาพอากาศ = JSON.stringify(myObject["weather"][0]["description"]); ไอคอนสตริง = JSON.stringify(myObject["weather"][0]["icon"]); data[0]= สตริง (ชั่วคราว); ข้อมูล[1]= "/"; data [2] = สตริง (pres); ข้อมูล[3]= "/"; data[4]= สตริง (ชื้น); ข้อมูล[5]= "/"; data[6]= สตริง (ลม); ข้อมูล[7]= "/"; ข้อมูล[8]= ประเทศ; ข้อมูล[9]= "/"; ข้อมูล[10]= city1; ข้อมูล[11]= "/"; ข้อมูล[12]= สภาพอากาศ; ข้อมูล[13]= "/"; ข้อมูล[14]= ไอคอน; ข้อมูล[15]= "\n"; สำหรับ (int i = 0; i0) { // Serial.print ("รหัสตอบกลับ HTTP:"); // Serial.println (httpResponseCode); เพย์โหลด = http.getString(); } อื่น ๆ { Serial.print ("รหัสข้อผิดพลาด: "); Serial.println (httpResponseCode); } // ทรัพยากรฟรี http.end(); ส่งคืนน้ำหนักบรรทุก; }
ขั้นตอนที่ 4: กำลังประมวลผลรหัส
ก่อนเรียกใช้รหัสนี้ให้ดาวน์โหลดภาพไอคอนที่กำหนดซึ่งจะใช้เพื่อแสดงสภาพอากาศ และเก็บรูปภาพและรหัสไว้ในโฟลเดอร์เดียวกัน
นำเข้าการประมวลผล.ซีเรียล.*;
อนุกรม myPort; รูปภาพ img; รูปภาพ img2; รูปภาพ img3; รูปภาพ img4; รูปภาพ img5; รูปภาพ img6; รูปภาพ img7; รูปภาพ img8; รูปภาพ img9; รูปภาพ img10; รูปภาพ img11; รูปภาพ img12; รูปภาพ img13; รูปภาพ img14; รูปภาพ img15; รูปภาพ img16; รูปภาพ img17; รูปภาพ img18; อุณหภูมิภายใน; พรีเซ็นเตอร์ int; ชื้น; ลมภายใน; เมืองสตริง = " "; ประเทศสตริง = " "; สตริงสภาพอากาศ =" "; ไอคอนสตริง = " "; การตั้งค่าเป็นโมฆะ () { ขนาด (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"); } วาดเป็นโมฆะ () { พื้นหลัง (72, 209, 204); ขนาดข้อความ(22); กรอก (54, 69, 79); text("อุณหภูมิ: ", 25, 100); ข้อความ (อุณหภูมิ +"°C", 200, 100); text("ความดัน:", 25, 150); ข้อความ(pres + " hpa", 200, 150); text("ความชื้น: ", 25, 200); ข้อความ(ชื้น+" %", 200, 200); text("ลม: ", 25, 250); ข้อความ(ลม+" m/s", 200, 250); text("ประเทศ/เมือง: ", 25, 300); ข้อความ(ประเทศ +"-"+ เมือง 200, 300); text("สภาพอากาศ: ", 25, 350); ข้อความ(สภาพอากาศ 200, 350); if(icon.contains("01d")){ ภาพ (img, 380, 15); } อื่น if(icon.contains("01n")){ image(img2, 380, 15); } อื่น if(icon.contains("02d")){ image(img3, 380, 15); } อื่น if(icon.contains("02n")){ image(img4, 380, 15); } อื่น ๆ if(icon.contains("03d")){ image(img5, 380, 15); } อื่น ๆ if(icon.contains("03n")){ image(img6, 380, 15); } อื่น ๆ if(icon.contains("04d")){ image(img7, 380, 15); } อื่น ๆ if(icon.contains("04n")){ image(img8, 380, 15); } อื่น ๆ if(icon.contains("09d")){ image(img9, 380, 15); } อื่น if(icon.contains("09n")){ image(img10, 380, 15); } อื่น ๆ if(icon.contains("10d")){ image(img11, 380, 15); } อื่น ๆ if(icon.contains("10n")){ image(img12, 380, 15); } อื่น ๆ if(icon.contains("11d")){ image(img13, 380, 15); } อื่น if(icon.contains("11n")){ image(img14, 380, 15); } อื่น ๆ if(icon == "13d"){ image(img15, 380, 15); } อื่น if(icon.contains("13n")){ image(img16, 380, 15); } อื่น ๆ if(icon.contains("50d")){ image(img17, 380, 15); } อื่น ๆ if(icon.contains("50n")){ image(img18, 380, 15); } } ถือเป็นโมฆะ serialEvent(Serial myPort){ if (myPort.available() > 0){ String data = myPort.readStringUntil('\n'); ถ้า (data != null){ data = trim(data); รายการสตริง = แยก (ข้อมูล, '/'); ถ้า (items.length > 1) { temp = int(items[0]); pres = int(รายการ [1]); ชื้น = int(รายการ [2]); ลม = int(รายการ[3]); เมือง = รายการ[4].replace("\"", ""); ประเทศ = รายการ[5].replace("\"", ""); สภาพอากาศ = รายการ[6].replace("\"", ""); icon = items[7].replace("\"", ""); } } } }
แนะนำ:
Blinds Control ด้วย ESP8266, Google Home และ Openhab Integration และ Webcontrol: 5 ขั้นตอน (พร้อมรูปภาพ)
การควบคุมมู่ลี่ด้วย ESP8266, Google Home และ Openhab Integration และ Webcontrol: ในคำแนะนำนี้ ฉันจะแสดงให้คุณเห็นว่าฉันเพิ่มระบบอัตโนมัติให้กับมู่ลี่ของฉันอย่างไร ฉันต้องการเพิ่มและลบระบบอัตโนมัติได้ ดังนั้นการติดตั้งทั้งหมดจึงเป็นแบบหนีบ ส่วนหลักคือ: สเต็ปเปอร์มอเตอร์ ตัวขับสเต็ปควบคุม bij ESP-01 เกียร์และการติดตั้ง
การรู้จำเสียงโดยใช้ Google Speech API และ Python: 4 ขั้นตอน
การรู้จำเสียงโดยใช้ Google Speech API และ Python: การรู้จำเสียงการรู้จำเสียงเป็นส่วนหนึ่งของการประมวลผลภาษาธรรมชาติซึ่งเป็นฟิลด์ย่อยของปัญญาประดิษฐ์ พูดง่ายๆ ก็คือ การรู้จำคำพูดเป็นความสามารถของซอฟต์แวร์คอมพิวเตอร์ในการระบุคำและวลีในภาษาพูด
โครงการ IoT อันดับต้นๆ ที่ใช้ ESP8266: 8 ขั้นตอน
โครงการ IoT อันดับต้นๆ ที่ใช้ ESP8266: ปัจจุบัน Machine มีข้อมูลที่ต้องแชร์บนคลาวด์เพื่อวัตถุประสงค์หลายอย่าง เช่น การตรวจสอบ การวิเคราะห์ หรือการเปิดใช้งานแอคทูเอเตอร์ เครื่องจักรกำลังพูดคุยกัน ESP8266 เป็นหนึ่งในโมดูลที่ใช้งานได้ ESP8266 สามารถโพสต์ข้อมูลไปที่ Go
ESP8266 NODEMCU BLYNK IOT บทช่วยสอน - Esp8266 IOT โดยใช้ Blunk และ Arduino IDE - การควบคุมไฟ LED ผ่านอินเทอร์เน็ต: 6 ขั้นตอน
ESP8266 NODEMCU BLYNK IOT บทช่วยสอน | Esp8266 IOT โดยใช้ Blunk และ Arduino IDE | การควบคุม LEDs ผ่านอินเทอร์เน็ต: สวัสดีทุกคนในคำแนะนำนี้ เราจะเรียนรู้วิธีใช้ IOT กับ ESP8266 หรือ Nodemcu ของเรา เราจะใช้แอป blynk สำหรับสิ่งนั้น ดังนั้นเราจะใช้ esp8266/nodemcu ของเราเพื่อควบคุมไฟ LED ผ่านอินเทอร์เน็ต ดังนั้นแอป Blynk จะเชื่อมต่อกับ esp8266 หรือ Nodemcu ของเรา
Google Vision API โดยใช้ Raspberry Pi และ Node: 11 ขั้นตอน
Google Vision API ที่ใช้ Raspberry Pi และ Node: นี่คือคู่มือเริ่มต้นใช้งาน Google Vision API ใช้การเชื่อมต่ออินเทอร์เน็ต Raspberry Pi Zero W Arch Linux NodeJS ต่อไปนี้ ไม่รู้จัก Arch Linux หรือไม่ หรือจะตั้งค่า Raspberry Pi ได้อย่างไร? ไม่ต้องห่วง ฉันได้เขียนบทความชุดหนึ่งซึ่ง