Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja promjena: 2025-01-13 06:57
Svijet je trenutno u pandemiji koronavirusa, a kao i mnoge druge zemlje zatvoren je i u Indiji, pa sam došao na ovu ideju da napravim IoT zaslon koji će u stvarnom vremenu ažurirati statistiku korone u zemlji. Koristim API koji pruža podatke o Indiji, ali možete koristiti bilo koji API s malom promjenom koda.
Korak 1: Potrebne stvari
Evo što će vam trebati za prikaz IoT -a:
- NodeMCU (ESP8266)
- 16x2 LCD modul (I2C)
- Oglasna ploča (izborno)
- Neke žice/ kratkospojnici
- USB kabl
Korak 2: Veze
Veze su prilično jednostavne. Za spajanje postoje samo 4 žice. Možete koristiti ploču za postavljanje esp8266 u nju, a zatim se spojiti na LCD modul ili za povezivanje jednostavno upotrijebiti izravne žice kratkospojnika za žene.
Priključci su (ESP-> LCD):
- VIN -> VCC (za 5V)
- GND -> GND
- D2 -> SDA
- D1 -> SCL
Sada samo spojite esp8266 USB kabelom na računalo, sada samo trebamo učitati kôd.
Korak 3: Kodiranje
Ovo je najvažniji dio. Mnogi od vas će imati na umu pitanja kako to funkcionira?
Dakle, prvo se povezuje na wifi, a zatim se povezuje s API -jem za prikupljanje JSON podataka, zatim dekodira JSON podatke i pohranjuje te vrijednosti u varijablu, zatim LCD prikazuje vrijednosti i to se nastavlja u petlji.
API koji sam koristio je https://coronago.xyz/api/data.json, koji svoje podatke dobiva s https://www.covid19india.org/, pruža podatke samo za Indiju, ali postoji mnogo API -ja za druge zemlje, možete koristiti bilo koji API, no pobrinite se da mu se može pristupiti putem HTTP -a.
Prvo morate instalirati podršku za ploču ESP8266 za Arduino IDE. Slijedite ovaj vodič.
Druga stvar koju trebate učiniti je instalirati sve potrebne knjižnice, koje možete jednostavno instalirati iz Arduino Library Managera.
Zatim otvorite kôd i promijenite vjerodajnice za WiFi i prenesite kôd.
kôd je ovdje u mom spremištu GitHub-https://github.com/Soumojit28/covid19-iot-display.
Korak 4: Objašnjenje koda i uporaba drugog API -ja
Kôd je prilično jednostavan
U dijelu za postavljanje void inicijalizira LCD modul i prikazuje poruku zurenja, a zatim se povezuje na WiFi mrežu.
U dijelu petlje, dohvaća JSON podatke iz API -ja i dekodira pohranu oglasa u varijablu, a zatim prikazuje one na serijskom monitoru i LCD -u.
za korištenje drugog API -ja morate promijeniti adresu u ovom retku koda
http.begin ("https://coronago.xyz/api/data.json"); // API
Druga stvar koju API mora raditi s HTTP vezom, HTTPS veza neće raditi u ovom kodu i dobit ćete pogrešku -1.
API vraća JSON podatke na ovaj način
Ovaj sljedeći kod samo dekodira JSON i sprema vrijednosti u varijablu, to u potpunosti ovisi o API -ju i JSON podacima koje vraća. No, lako se mijenja, za više informacija možete pogledati ovaj vodič.
StaticJsonBuffer JSONBuffer; // Memorijsko spremište JsonObject & parsed = JSONBuffer.parseObject (korisni teret); // Analiza poruke potvrđena = parsed ["potvrđeno"]; oporavljeno = raščlanjeno ["oporavljeno"]; deaths = parsed ["deaths"]; current_active = parsed ["active"];
Nakon toga kod samo prikazuje varijable na serijskom monitoru i na LCD -u.
Serial.print ("potvrđeno:"); Serial.println (potvrđeno); Serial.print ("oporavljeno:"); Serial.println (oporavljeno); Serial.print ("current_active:"); Serial.println (trenutni_aktivan); Serial.print ("smrti:"); Serial.println (smrti); if (httpCode == 200) {// prikaz podataka u lcd lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Potvrđeno:"); lcd.print (potvrđeno); lcd.setCursor (0, 1); lcd.print ("Smrti:"); lcd.print (smrti); kašnjenje (2500); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Aktivno:"); lcd.print (trenutni_aktivan); lcd.setCursor (0, 1); lcd.print ("Oporavak:"); lcd.print (oporavak); kašnjenje (2500);
}
Korak 5: Zaključak
Ovo je sjajan projekt za stalno praćenje statistike i možete li ga izgraditi da vam provede vrijeme u ovoj situaciji zaključavanja.
Ako vam je potrebna pomoć, možete me pitati putem komentara ili možete otvoriti problem u mom Githubu
github.com/Soumojit28/covid19-iot-display za sve probleme povezane s kodom.
Hvala vam.