Mục lục:
- Bước 1: Lấy Khóa API và URL từ Openweather.org
- Bước 2: Sơ đồ kết nối
- Bước 3: Mã Arduino
- Bước 4: Mã xử lý
Video: (Dự án IOT) Nhận dữ liệu thời tiết bằng API ESP8266 và Openweather: 5 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:30
Trong hướng dẫn này, chúng ta sẽ xây dựng một dự án IOT đơn giản, trong đó lấy dữ liệu thời tiết của thành phố của chúng ta từ openweather.com/api và hiển thị nó bằng phần mềm Xử lý.
Quân nhu:
- Arduino
- ESP8266 hoặc bất kỳ mô-đun esp nào khác
- Arduino IDE
- Xử lý phần mềm
- Breadboard
- Nhảy cầu nam với nam và nam với nữ
Bước 1: Lấy Khóa API và URL từ Openweather.org
- Tạo tài khoản trong https://openweathermap.org (Hình ảnh 1)
- Sau khi bạn đăng nhập, hãy chuyển đến các khóa API và bạn sẽ nhận được khóa API như được hiển thị trong hình ảnh. (Hình ảnh 2)
- Sao chép khóa API và lưu vào tệp notepad. (Hình 3)
- Chuyển đến tùy chọn API (Hình ảnh 4)
- Chuyển đến tùy chọn tài liệu API như được hiển thị trong hình ảnh (Hình ảnh 5)
- Sao chép url từ và được hiển thị và lưu nó trong tệp notepad (Hình 6)
Bước 2: Sơ đồ kết nối
Bước 3: Mã Arduino
Trước khi sao chép mã này vào Arduino, hãy đảm bảo rằng bạn đã tải xuống board ESP8266 vào arduino Ide bằng cách sử dụng Boards manager.
#bao gồm
#include #include #include const char * ssid = "SSID của bạn"; const char * password = "Your SSID PASSWORD"; // Tên miền của bạn với đường dẫn URL hoặc địa chỉ IP với đường dẫn String openWeatherMapApiKey = "Dán khóa API của bạn vào đây"; // Thay thế bằng mã quốc gia và thành phố của bạn String city = "Mumbai"; String countryCode = "IN"; Dữ liệu chuỗi [16]; // HẸN GIỜ DEFAULT ĐƯỢC ĐẶT THÀNH 10 GIÂY CHO MỤC ĐÍCH KIỂM TRA // Đối với ứng dụng cuối cùng, hãy kiểm tra giới hạn lệnh gọi API mỗi giờ / phút để tránh bị chặn / bị cấm không ký lâu lastTime = 0; // Hẹn giờ được đặt thành 10 phút (600000) // timer dài không dấuDelay = 600000; // Đặt hẹn giờ thành 10 giây (10000) dài không dấu timerDelay = 10000; Chuỗi jsonBuffer; void setup () {Serial.begin (115200); WiFi.begin (ssid, mật khẩu); //Serial.println("Connecting "); while (WiFi.status ()! = WL_CONNECTED) {delay (500); // Serial.print ("."); } // Serial.println (""); // Serial.print ("Đã kết nối với mạng WiFi bằng Địa chỉ IP:"); // Serial.println (WiFi.localIP ()); // // Serial.println ("Bộ hẹn giờ được đặt thành 10 giây (biến timerDelay), sẽ mất 10 giây trước khi xuất bản lần đọc đầu tiên."); } void loop () {// Gửi yêu cầu HTTP GET if ((millis () - lastTime)> timerDelay) {// Kiểm tra trạng thái kết nối WiFi if (WiFi.status () == WL_CONNECTED) {String serverPath = "https://api.openweathermap.org/data/2.5/weather?q= "+ city +", "+ countryCode +" & APPID = "+" d5b56fd07988143ae141503ed9d81742 "+" & units = metric "; jsonBuffer = httpGETRequest (serverPath.c_str ()); //Serial.println(jsonBuffer); JSONVar myObject = JSON.parse (jsonBuffer); // JSON.typeof (jsonVar) có thể được sử dụng để lấy kiểu var if (JSON.typeof (myObject) == "undefined") {//Serial.println("Parsing input fail! "); trở lại; } // Serial.print ("Đối tượng JSON ="); // Serial.println (myObject); // Serial.print ("Nhiệt độ:"); // Serial.println (myObject ["main"] ["temp"]); // Serial.print ("Áp suất:"); // Serial.println (myObject ["main"] ["pressure"]); // Serial.print ("Độ ẩm:"); // Serial.println (myObject ["chính"] ["độ ẩm"]); // Serial.print ("Tốc độ gió:"); // Serial.println (myObject ["wind"] ["speed"]); int temp = myObject ["main"] ["temp"]; long pres = myObject ["main"] ["áp lực"]; int ẩm = myObject ["main"] ["độ ẩm"]; int wind = myObject ["wind"] ["speed"]; String country = JSON.stringify (myObject ["sys"] ["country"]); String city1 = JSON.stringify (myObject ["name"]); String weather = JSON.stringify (myObject ["weather"] [0] ["description"]); String icon = JSON.stringify (myObject ["weather"] [0] ["icon"]); data [0] = String (tạm thời); dữ liệu [1] = "/"; data [2] = String (pres); dữ liệu [3] = "/"; data [4] = String (ẩm); dữ liệu [5] = "/"; data [6] = String (gió); dữ liệu [7] = "/"; data [8] = quốc gia; dữ liệu [9] = "/"; data [10] = city1; dữ liệu [11] = "/"; data [12] = thời tiết; dữ liệu [13] = "/"; data [14] = biểu tượng; dữ liệu [15] = "\ n"; for (int i = 0; i0) {// Serial.print ("Mã phản hồi HTTP:"); // Serial.println (httpResponseCode); payload = http.getString (); } else {Serial.print ("Mã lỗi:"); Serial.println (httpResponseCode); } // Tài nguyên miễn phí http.end (); trả lại trọng tải; }
Bước 4: Mã xử lý
Trước khi chạy mã này, hãy tải xuống các hình ảnh biểu tượng đã cho sẽ được sử dụng để hiển thị thời tiết. Và giữ các hình ảnh và mã trong cùng một thư mục.
nhập xử lý.serial. *;
Nối tiếp 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 tạm thời; int trước; int ẩm ướt; int gió; Chuỗi thành phố = ""; Chuỗi quốc gia = ""; String thời tiết = ""; Biểu tượng chuỗi = ""; void setup () {size (500, 500); myPort = new Serial (this, "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); điền (54, 69, 79); text ("Nhiệt độ:", 25, 100); text (temp + "° C", 200, 100); text ("Áp suất:", 25, 150); text (pres + "hpa", 200, 150); text ("Độ ẩm:", 25, 200); text (ẩm + "%", 200, 200); text ("Gió:", 25, 250); văn bản (gió + "m / s", 200, 250); text ("Quốc gia / Thành phố:", 25, 300); text (country + "-" + city, 200, 300); text ("Thời tiết:", 25, 350); văn bản (thời tiết, 200, 350); if (icon.contains ("01d")) {image (img, 380, 15); } else if (icon.contains ("01n")) {image (img2, 380, 15); } else if (icon.contains ("02d")) {image (img3, 380, 15); } else if (icon.contains ("02n")) {image (img4, 380, 15); } else if (icon.contains ("03d")) {image (img5, 380, 15); } else if (icon.contains ("03n")) {image (img6, 380, 15); } else if (icon.contains ("04d")) {image (img7, 380, 15); } else if (icon.contains ("04n")) {image (img8, 380, 15); } else if (icon.contains ("09d")) {image (img9, 380, 15); } else if (icon.contains ("09n")) {image (img10, 380, 15); } else if (icon.contains ("10d")) {image (img11, 380, 15); } else if (icon.contains ("10n")) {image (img12, 380, 15); } else if (icon.contains ("11d")) {image (img13, 380, 15); } else if (icon.contains ("11n")) {image (img14, 380, 15); } else if (icon == "13d") {image (img15, 380, 15); } else if (icon.contains ("13n")) {image (img16, 380, 15); } else if (icon.contains ("50d")) {image (img17, 380, 15); } else if (icon.contains ("50n")) {image (img18, 380, 15); }} void serialEvent (Serial myPort) {if (myPort.available ()> 0) {String data = myPort.readStringUntil ('\ n'); if (data! = null) {data = trim (data); Các mục chuỗi = split (dữ liệu, '/'); if (items.length> 1) {temp = int (items [0]); pres = int (items [1]); ẩm = int (items [2]); wind = int (items [3]); city = items [4].replace ("\" "," "); country = items [5].replace (" / "", ""); weather = items [6].replace ("\" "," "); icon = items [7].replace (" / "", ""); }}}}
Đề xuất:
Trạm thời tiết NaTaLia: Trạm thời tiết sử dụng năng lượng mặt trời Arduino Đã thực hiện đúng cách: 8 bước (có hình ảnh)
Trạm thời tiết NaTaLia: Trạm thời tiết sử dụng năng lượng mặt trời Arduino Đã hoàn thành đúng cách: Sau 1 năm hoạt động thành công trên 2 địa điểm khác nhau, tôi đang chia sẻ kế hoạch dự án trạm thời tiết sử dụng năng lượng mặt trời của mình và giải thích cách nó phát triển thành một hệ thống thực sự có thể tồn tại trong thời gian dài thời kỳ từ năng lượng mặt trời. Nếu bạn theo dõi
Dữ liệu thời tiết bằng Google Trang tính và Google Script: 7 bước
Dữ liệu thời tiết sử dụng Google Sheets và Google Script: Trong Blogtut này, chúng tôi sẽ gửi các kết quả đọc của cảm biến SHT25 tới google sheet bằng cách sử dụng Adafruit huzzah ESP8266 giúp gửi dữ liệu lên internet. Gửi dữ liệu tới ô google sheet rất hữu ích và cách cơ bản giúp lưu dữ liệu trong
Xây dựng Bảng điều khiển thời tiết bằng API Dark Sky: 5 bước (có Hình ảnh)
Xây dựng Bảng điều khiển thời tiết bằng API Dark Sky: Dark Sky chuyên về dự báo và hình dung thời tiết. Khía cạnh thú vị nhất của Dark Sky là API thời tiết của họ mà chúng ta có thể sử dụng để truy xuất dữ liệu thời tiết từ hầu hết mọi nơi trên thế giới. Không chỉ thời tiết mưa hay nắng mà cả thời tiết
Nến thời tiết - Xem nhanh thời tiết và nhiệt độ: 8 bước
Nến thời tiết - Xem nhanh thời tiết và nhiệt độ: Sử dụng ngọn nến kỳ diệu này, bạn có thể cho biết nhiệt độ hiện tại và điều kiện bên ngoài ngay lập tức
Acurite 5 trong 1 Trạm thời tiết sử dụng Raspberry Pi và Weewx (các trạm thời tiết khác tương thích): 5 bước (có Hình ảnh)
Trạm thời tiết Acurite 5 trong 1 Sử dụng Raspberry Pi và Weewx (các Trạm thời tiết khác Tương thích): Khi tôi mua trạm thời tiết Acurite 5 trong 1, tôi muốn có thể kiểm tra thời tiết tại nhà của mình khi tôi đi vắng. Khi tôi về nhà và thiết lập nó, tôi nhận ra rằng tôi phải có màn hình kết nối với máy tính hoặc mua trung tâm thông minh của họ,