ዝርዝር ሁኔታ:

(IOT ፕሮጀክት) ESP8266 ን እና Openweather API ን በመጠቀም - 5 ደረጃዎች በመጠቀም የአየር ሁኔታ መረጃን ያግኙ
(IOT ፕሮጀክት) ESP8266 ን እና Openweather API ን በመጠቀም - 5 ደረጃዎች በመጠቀም የአየር ሁኔታ መረጃን ያግኙ

ቪዲዮ: (IOT ፕሮጀክት) ESP8266 ን እና Openweather API ን በመጠቀም - 5 ደረጃዎች በመጠቀም የአየር ሁኔታ መረጃን ያግኙ

ቪዲዮ: (IOT ፕሮጀክት) ESP8266 ን እና Openweather API ን በመጠቀም - 5 ደረጃዎች በመጠቀም የአየር ሁኔታ መረጃን ያግኙ
ቪዲዮ: How to control you lights using nodemcu and wifi .ኖድደምኩ እና ዋይፋይ በመጠቀም መብራቶችን እንዴት እንደሚቆጣጠሩ 2024, ህዳር
Anonim
(IOT ፕሮጀክት) ESP8266 ን እና Openweather API ን በመጠቀም የአየር ሁኔታ መረጃን ያግኙ
(IOT ፕሮጀክት) ESP8266 ን እና Openweather API ን በመጠቀም የአየር ሁኔታ መረጃን ያግኙ

በዚህ መመሪያ ውስጥ የከተማችንን የአየር ሁኔታ መረጃ ከ openweather.com/api አምጥቶ ፕሮሰሲንግ ሶፍትዌርን በመጠቀም የምናሳይበት ቀላል የ IOT ፕሮጀክት እንገነባለን።

አቅርቦቶች

  1. አርዱinoኖ
  2. ESP8266 ወይም ሌላ ማንኛውም esp ሞዱል
  3. አርዱዲኖ አይዲኢ
  4. ሶፍትዌርን በማስኬድ ላይ
  5. የዳቦ ሰሌዳ
  6. ጃምፐርወርስ ወንድ ከወንድ ወንድ ከሴት

ደረጃ 1 ከ Openweather.org የኤፒአይ ቁልፍ እና ዩአርኤል ያግኙ

የኤፒአይ ቁልፍ እና ዩአርኤል ከ Openweather.org ያግኙ
የኤፒአይ ቁልፍ እና ዩአርኤል ከ Openweather.org ያግኙ
የኤፒአይ ቁልፍ እና ዩአርኤል ከ Openweather.org ያግኙ
የኤፒአይ ቁልፍ እና ዩአርኤል ከ Openweather.org ያግኙ
የኤፒአይ ቁልፍ እና ዩአርኤል ከ Openweather.org ያግኙ
የኤፒአይ ቁልፍ እና ዩአርኤል ከ Openweather.org ያግኙ
  1. በ https://openweathermap.org ውስጥ መለያ ይፍጠሩ (ምስል 1)
  2. ከገቡ በኋላ ወደ ኤፒአይ ቁልፎች ይሂዱ እና በምስል ላይ እንደሚታየው የኤፒአይ ቁልፍን ያገኛሉ። (ምስል 2)
  3. የኤፒአይ ቁልፍን ይቅዱ እና በማስታወሻ ደብተር ፋይል ውስጥ ያስቀምጡት። (ምስል 3)
  4. ወደ ኤፒአይ አማራጭ ይሂዱ (ምስል 4)
  5. በምስል ላይ እንደሚታየው ወደ ኤፒአይ ሰነድ አማራጭ ይሂዱ (ምስል 5)
  6. ዩአርኤሉን ከእሱ ይቅዱ እና ይታዩ እና በማስታወሻ ደብተር ፋይል ውስጥ ያስቀምጡት (ምስል 6)

ደረጃ 2 የግንኙነት ንድፍ

የግንኙነት ንድፍ
የግንኙነት ንድፍ

ደረጃ 3: የአርዲኖ ኮድ

ይህንን ኮድ ወደ አርዱዲኖ ከመገልበጥዎ በፊት የቦርድ አስተዳዳሪን በመጠቀም የ ESP8266 ሰሌዳውን ወደ አርዱዲኖ ide ማውረዱን ያረጋግጡ።

#ያካትቱ

#ያካትቱ #ያካትቱ #ያካትቱ const char* ssid = "የእርስዎ SSID"; const char* password = "የእርስዎ SSID PASSWORD"; // የጎራዎ ስም በዩአርኤል ዱካ ወይም የአይፒ አድራሻ ከመንገድ ጋር ሕብረቁምፊ openWeatherMapApiKey = "የኤፒአይ ቁልፍዎን እዚህ ይለጥፉ" ፤ // በአገርዎ ኮድ እና በከተማ ስትሪንግ ከተማ = “ሙምባይ” ይተኩ። ሕብረቁምፊ countryCode = "IN"; ሕብረቁምፊ ውሂብ [16]; // የ DEFAULT ሰዓት ቆጣሪ ለሙከራ ዓላማዎች 10 ሰከንዶች ተዘጋጅቷል // ለመጨረሻ ትግበራ ፣ እንዳይታገድ/እንዳይታገድ የተፈረመበት ረጅም የመጨረሻ ጊዜ = 0; // ሰዓት ቆጣሪ ወደ 10 ደቂቃዎች (600000) ተቀናብሯል // ያልተፈረመ ረጅም ሰዓት ቆጣሪ መዘግየት = 600000; // ሰዓት ቆጣሪን ወደ 10 ሰከንዶች (10000) ያልተፈረመ ረጅም ሰዓት ቆጣሪ ያዘጋጁ - መዘግየት = 10000; ሕብረቁምፊ jsonBuffer; ባዶነት ማዋቀር () {Serial.begin (115200); WiFi.begin (ssid ፣ የይለፍ ቃል); //Serial.println (“ማገናኘት”); ሳለ (WiFi.status ()! = WL_CONNECTED) {መዘግየት (500); // Serial.print ("."); } // Serial.println (""); // Serial.print ("ከአይፒ አድራሻ ጋር ከ WiFi አውታረ መረብ ጋር ተገናኝቷል"); // Serial.println (WiFi.localIP ()); // // Serial.println ("ሰዓት ቆጣሪ ወደ 10 ሰከንዶች ተቀናብሯል (የጊዜ ቆጣሪ ተለዋዋጭ) ፣ የመጀመሪያውን ንባብ ከማተም 10 ሰከንዶች ይወስዳል።"); } ባዶነት loop () {// የኤች ቲ ቲ ፒ GET ጥያቄ ይላኩ ((ሚሊስ () - lastTime)> timerDelay) {// የ WiFi ግንኙነት ሁኔታን ያረጋግጡ (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) (JSON.typeof (myObject) == "ያልተገለፀ") {//Serial.println(" ግቤን ማስገባት አልተሳካም! ») ከሆነ የ var ዓይነትን ለማግኘት ሊያገለግል ይችላል ፤ መመለስ; } // Serial.print ("JSON object ="); // 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 humid = myObject ["ዋና"] ["እርጥበት"]; int wind = myObject ["ነፋስ"] ["ፍጥነት"]; ሕብረቁምፊ ሀገር = JSON.stringify (myObject ["sys"] ["አገር"]); ሕብረቁምፊ ከተማ 1 = JSON.stringify (myObject ["ስም"]); ሕብረቁምፊ የአየር ሁኔታ = JSON.stringify (myObject ["የአየር ሁኔታ"] [0] ["መግለጫ"]); ሕብረቁምፊ አዶ = JSON.stringify (myObject ["የአየር ሁኔታ"] [0] ["አዶ"]); ውሂብ [0] = ሕብረቁምፊ (ቴምፕ); ውሂብ [1] = "/"; ውሂብ [2] = ሕብረቁምፊ (ቅድመ); ውሂብ [3] = "/"; ውሂብ [4] = ሕብረቁምፊ (እርጥብ); ውሂብ [5] = "/"; ውሂብ [6] = ሕብረቁምፊ (ነፋስ); ውሂብ [7] = "/"; ውሂብ [8] = አገር; ውሂብ [9] = "/"; ውሂብ [10] = city1; ውሂብ [11] = "/"; ውሂብ [12] = የአየር ሁኔታ; ውሂብ [13] = "/"; ውሂብ [14] = አዶ; ውሂብ [15] = "\ n"; ለ (int i = 0; i0) {// Serial.print ("የኤች ቲ ቲ ፒ ምላሽ ኮድ"); // 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 temp; int pres; እርጥብ እርጥበት; 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) ፤ textSize (22); ሙላ (54 ፣ 69 ፣ 79); ጽሑፍ (“የሙቀት መጠን” ፣ 25 ፣ 100); ጽሑፍ (የሙቀት መጠን +“° ሴ” ፣ 200 ፣ 100); ጽሑፍ ("ግፊት:", 25, 150); ጽሑፍ (pres + “hpa” ፣ 200 ፣ 150); ጽሑፍ ("እርጥበት:", 25, 200); ጽሑፍ (እርጥበት+“%” ፣ 200 ፣ 200); ጽሑፍ ("ነፋስ:", 25, 250); ጽሑፍ (ነፋስ+“ሜ/ሰ” ፣ 200 ፣ 250); ጽሑፍ (“ሀገር/ከተማ” ፣ 25 ፣ 300); ጽሑፍ (ሀገር + "-" + ከተማ ፣ 200 ፣ 300); ጽሑፍ (“የአየር ሁኔታ” ፣ 25 ፣ 350); ጽሑፍ (የአየር ሁኔታ ፣ 200 ፣ 350); ከሆነ (icon.contains ("01d")) {ምስል (img, 380, 15); } ሌላ ከሆነ (icon.contains ("01n")) {ምስል (img2, 380, 15); } ሌላ ከሆነ (icon.contains ("02d")) {ምስል (img3, 380, 15); } ሌላ ከሆነ (icon.contains ("02n")) {ምስል (img4, 380, 15); } ሌላ ከሆነ (icon.contains ("03d")) {ምስል (img5, 380, 15); } ሌላ ከሆነ (icon.contains ("03n")) {ምስል (img6, 380, 15); } ሌላ ከሆነ (icon.contains ("04d")) {ምስል (img7, 380, 15); } ሌላ ከሆነ (icon.contains ("04n")) {ምስል (img8, 380, 15); } ሌላ ከሆነ (icon.contains ("09d")) {ምስል (img9, 380, 15); } ሌላ ከሆነ (icon.contains ("09n")) {ምስል (img10, 380, 15); } ሌላ ከሆነ (icon.contains ("10d")) {ምስል (img11, 380, 15); } ሌላ ከሆነ (icon.contains ("10n")) {ምስል (img12, 380, 15); } ሌላ ከሆነ (icon.contains ("11d")) {ምስል (img13, 380, 15); } ሌላ ከሆነ (icon.contains ("11n")) {ምስል (img14, 380, 15); } ሌላ ከሆነ (icon == "13d") {ምስል (img15, 380, 15); } ሌላ ከሆነ (icon.contains ("13n")) {ምስል (img16, 380, 15); } ሌላ ከሆነ (icon.contains ("50d")) {ምስል (img17, 380, 15); } ሌላ ከሆነ (icon.contains ("50n")) {ምስል (img18, 380, 15); }} ባዶነት serialEvent (ተከታታይ myPort) {ከሆነ (myPort.available ()> 0) {ሕብረቁምፊ ውሂብ = myPort.readStringUntil ('\ n'); ከሆነ (ውሂብ! = ባዶ) {data = trim (data); ሕብረቁምፊ ንጥሎች = ስንጥቅ (ውሂብ ፣ '/') ፤ ከሆነ (ንጥሎች። ርዝመት> 1) {temp = int (ንጥሎች [0]); pres = int (ንጥሎች [1]); እርጥበት = int (ንጥሎች [2]); ንፋስ = int (ንጥሎች [3]); ከተማ = ንጥሎች [4].ተተኩ ("\" "፣" ") ፤ ሀገር = ንጥሎች [5].ተተኩ (" / "" ፣ "") ፤ የአየር ሁኔታ = ንጥሎች [6].ተተካ ("\" "," ") ፤ አዶ = ንጥሎች [7].ተተኩ (" / "" ፣ "") ፤ }}}}

የሚመከር: