Სარჩევი:

(IOT პროექტი) მიიღეთ ამინდის მონაცემები ESP8266 და Openweather API გამოყენებით: 5 ნაბიჯი
(IOT პროექტი) მიიღეთ ამინდის მონაცემები ESP8266 და Openweather API გამოყენებით: 5 ნაბიჯი

ვიდეო: (IOT პროექტი) მიიღეთ ამინდის მონაცემები ESP8266 და Openweather API გამოყენებით: 5 ნაბიჯი

ვიდეო: (IOT პროექტი) მიიღეთ ამინდის მონაცემები ESP8266 და Openweather API გამოყენებით: 5 ნაბიჯი
ვიდეო: პილოტი Cessna მთელს მსოფლიოში! 🛩🌥🌎 - Geographical Adventures GamePlay 🎮📱 🇬🇪 2024, დეკემბერი
Anonim
(IOT პროექტი) მიიღეთ ამინდის მონაცემები ESP8266 და Openweather API გამოყენებით
(IOT პროექტი) მიიღეთ ამინდის მონაცემები ESP8266 და Openweather API გამოყენებით

ამ ინსტრუქციურად ჩვენ ვაპირებთ ავაშენოთ მარტივი IOT პროექტი, რომელშიც მოვიყვანთ ჩვენი ქალაქის ამინდის მონაცემებს openweather.com/api– დან და ვაჩვენებთ მას დამუშავების პროგრამული უზრუნველყოფის გამოყენებით.

მასალები:

  1. არდუინო
  2. ESP8266 ან სხვა esp მოდული
  3. Arduino IDE
  4. პროგრამული უზრუნველყოფის დამუშავება
  5. პურის დაფა
  6. Jumperwires მამაკაცი კაცი და მამაკაცი ქალი

ნაბიჯი 1: მიიღეთ API გასაღები და URL Openweather.org– დან

მიიღეთ API გასაღები და URL Openweather.org– დან
მიიღეთ API გასაღები და URL Openweather.org– დან
მიიღეთ API გასაღები და URL Openweather.org– დან
მიიღეთ API გასაღები და URL Openweather.org– დან
მიიღეთ API გასაღები და URL Openweather.org– დან
მიიღეთ API გასაღები და URL Openweather.org– დან
  1. ანგარიშის შექმნა https://openweathermap.org (სურათი 1)
  2. მას შემდეგ რაც შეხვალთ გადადით API კლავიშებზე და მიიღებთ API გასაღებს როგორც ნაჩვენებია სურათზე. (სურათი 2)
  3. დააკოპირეთ API გასაღები და შეინახეთ იგი notepad ფაილში. (სურათი 3)
  4. გადადით API პარამეტრზე (სურათი 4)
  5. გადადით API დოკუმენტის ვარიანტზე, როგორც ნაჩვენებია სურათზე (სურათი 5)
  6. დააკოპირეთ url და ნაჩვენები და შეინახეთ იგი notepad ფაილში (სურათი 6)

ნაბიჯი 2: კავშირის დიაგრამა

კავშირის დიაგრამა
კავშირის დიაგრამა

ნაბიჯი 3: Arduino კოდი

ამ კოდის Arduino– ში კოპირებამდე დარწმუნდით, რომ გადმოწერილი გაქვთ ESP8266 დაფა arduino ide– ში დაფების მენეჯერის გამოყენებით.

#ჩართეთ

#მოიცავს #მოიცავს #მოიცავს კონსტ char* ssid = "შენი SSID"; const char* პაროლი = "თქვენი SSID PASSWORD"; // თქვენი დომენის სახელი URL ბილიკით ან IP მისამართი ბილიკით String openWeatherMapApiKey = "ჩასვით თქვენი API გასაღები აქ"; // შეცვალეთ თქვენი ქვეყნის კოდი და ქალაქი სიმებიანი ქალაქი = "მუმბაი"; სიმებიანი ქვეყნის კოდი = "IN"; სიმებიანი მონაცემები [16]; // დეფილატორული ტაიმერი დაყენებულია 10 წამის საცდელად // ტაიმერი დაყენებულია 10 წუთზე (600000) // ხელმოუწერელი გრძელი ქრონომეტრი დაგვიანებით = 600000; // დააყენეთ ქრონომეტრი 10 წამზე (10000) ხელმოუწერელ ხანგრძლივ ტაიმერამდე = 10000; სიმებიანი 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 " +" & ერთეულები = მეტრული "; jsonBuffer = httpGETRequest (serverPath.c_str ()); //Serial.println(jsonBuffer); JSONVar myObject = JSON.parse (jsonBuffer); // JSON.typeof (jsonVar) შეიძლება გამოყენებულ იქნას var- ის ტიპის მისაღებად, თუ (JSON.typeof (myObject) == "განუსაზღვრელი") {//Serial.println(" შეყვანის გაშიფვრა ვერ მოხერხდა! "); დაბრუნების; } // Serial.print ("JSON ობიექტი ="); // Serial.println (myObject); // Serial.print ("ტემპერატურა:"); // Serial.println (myObject ["მთავარი"] ["temp"]); // Serial.print ("წნევა:"); // Serial.println (myObject ["მთავარი"] ["წნევა"]); // Serial.print ("ტენიანობა:"); // Serial.println (myObject ["მთავარი"] ["ტენიანობა"]); // Serial.print ("ქარის სიჩქარე:"); // Serial.println (myObject ["ქარი"] ["სიჩქარე"]); int temp = myObject ["მთავარი"] ["temp"]; long pres = myObject ["მთავარი"] ["წნევა"]; int ტენიანი = myObject ["მთავარი"] ["ტენიანობა"]; int wind = myObject ["ქარი"] ["სიჩქარე"]; სიმებიანი ქვეყანა = JSON.stringify (myObject ["sys"] ["country"]); სიმებიანი ქალაქი 1 = JSON.stringify (myObject ["სახელი"]); სიმებიანი ამინდი = JSON.stringify (myObject ["ამინდი"] [0] ["აღწერა"]); სიმებიანი ხატი = JSON.stringify (myObject ["ამინდი"] [0] ["ხატი"]); მონაცემები [0] = სიმებიანი (ტემპი); მონაცემები [1] = "/"; მონაცემები [2] = სიმებიანი (pres); მონაცემები [3] = "/"; მონაცემები [4] = სიმებიანი (ტენიანი); მონაცემები [5] = "/"; მონაცემები [6] = სიმებიანი (ქარი); მონაცემები [7] = "/"; მონაცემები [8] = ქვეყანა; მონაცემები [9] = "/"; მონაცემები [10] = ქალაქი 1; მონაცემები [11] = "/"; მონაცემები [12] = ამინდი; მონაცემები [13] = "/"; მონაცემები [14] = ხატი; მონაცემები [15] = "\ n"; for (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 ტემპერატურა; int pres; int ტენიანი; int ქარი; სიმებიანი ქალაქი = ""; სიმებიანი ქვეყანა = ""; მკაცრი ამინდი = ""; სიმებიანი ხატი = ""; 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 () {ფონი (72, 209, 204); ტექსტის ზომა (22); შევსება (54, 69, 79); ტექსტი ("ტემპერატურა:", 25, 100); ტექსტი (ტემპერატურა +"° C", 200, 100); ტექსტი ("წნევა:", 25, 150); ტექსტი (pres + "hpa", 200, 150); ტექსტი ("ტენიანობა:", 25, 200); ტექსტი (ტენიანი+" %", 200, 200); ტექსტი ("ქარი:", 25, 250); ტექსტი (ქარი+"მ/წ", 200, 250); ტექსტი ("ქვეყანა/ქალაქი:", 25, 300); ტექსტი (ქვეყანა + "-" + ქალაქი, 200, 300); ტექსტი ("ამინდი:", 25, 350); ტექსტი (ამინდი, 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") {სურათი (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 (სერიული myPort) {if (myPort.available ()> 0) {სიმებიანი მონაცემები = myPort.readStringUntil ('\ n'); if (მონაცემები! = null) {data = მორთვა (მონაცემები); სიმებიანი ელემენტები = გაყოფა (მონაცემები, '/'); if (items.length> 1) {temp = int (ერთეული [0]); pres = int (პუნქტები [1]); ტენიანი = int (ერთეულები [2]); ქარი = int (პუნქტები [3]); ქალაქი = ნივთები [4].შეცვლა ("\" "," "); ქვეყანა = ერთეულები [5].შეცვლა (" / "", ""); ამინდი = ნივთები [6].შეცვლა ("\" "," "); icon = ერთეულები [7].შეცვლა (" / "", ""); }}}}

გირჩევთ: