Di artikel sebelumnya kita telah belajar tentang Cara Flashing firmware ESP8266 menggunakan FlashTools. Nah dalam artikel kali ini kita akan langsung mempraktekkan atau membuat project berbasis IOT. dan tentunya masih menggunakan modul esp6288. Berikut cara membuat alat monitoring data covid 19 di indonesia menggunakan nodemcu esp8266
Komponen alat monitoring data covid nodemcu esp8266
- Lcd I2c 16 x 2 I2C
- Modul wifi Nodemcu esp 8266
- Library Json download DISINI
- Library esp8266 download DISINI
Skema alat monitoring data covid nodemcu esp8266
Cara kerja alat monitoring data covid nodemcu esp8266
Pertama nyalakan perangkat nodemcu nya dari port usb ke komputer/laptop kalian. Sistem akan menhubungkan ke perangkat wifi yang telah kita setting pada program seperti pada gambar di bawah ini
Setelah perangkat wifi terhubung, maka alat akan menampilkan data Covid-19 di Indonesia seperti gambar di bawah ini :
Adapun Data yang akan ditampilkan adalah :
case adalah Jumlah data terkonfirmasi atau positif
deaths adalah Total data meninggal
Recovered adalah Total data sembuh
Data yang akan ditampilkan pada alat tersebut merupakan data Negara Indonesia sesuai pada scipt program #define country_code “Indonesia”. Dan String url= “http://coronavirus-19-api.herokuapp.com/countries/” merupakan API dari parsing data JSON yang akan ditampilkan di serial monitor, LCD 16 x 2. Untuk lebih jelas lihat kodingan di bawah ini :
CODE / Sketch program
#include <ESP8266WiFi.h> #include <ESP8266HTTPClient.h> #include "json_parser.h" #include "WifiConnect.h" #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x3F, 16, 2); #include <Wire.h> #define s2ms(second) (second*1000) unsigned long long prev_millis(0); const char* ssid = "Lt2"; const char* password = "1234567"; #define country_code "Indonesia" int interval = s2ms(60); unsigned long long PreviousMillis = 0; unsigned long long CurrentMillis = interval; bool bFirstKickMillis = false; extern bool bGotIpFlag; static String build_url_from_country(String country) { String url = "http://coronavirus-19-api.herokuapp.com/countries/"; url = url + country; return url; } int i = 0; int j = 0; int k = 0; int delayTime2 = 150;// void GeserKeKanan (int garis, char gserkan[]) { i = strlen(gserkan); for (j = 16; j >= 0; j--) { lcd.setCursor(0, garis); for (k = 0; k <= 15; k++) { lcd.print(" "); } lcd.setCursor(j, garis); lcd.print(gserkan); delay(delayTime2);} } void GeserKeKiri (int garis, char gserkan[]) { i = 40 - strlen(gserkan); garis = garis - 1; for (j = i; j <= i + 16; j++) { for (k = 0; k <= 15; k++) { lcd.print(" "); } lcd.setCursor(j, garis); lcd.print(gserkan); delay(delayTime2);} } void setup(void) { lcd.begin(); GeserKeKanan(0, " PRAKTEK"); GeserKeKiri(1, " OTODIDAK"); lcd.clear(); delay(1000); lcd.clear(); #if defined JSON_DEBUG Serial.begin(9600); #endif JSON_LOG("Connecting..."); vConnWifiNetworkViaSdk(); Serial.begin(115200); WiFi.disconnect(); delay(1000); WiFi.begin(ssid, password); Serial.println("Mengkoneksikan ke hotspot"); GeserKeKanan(0, " CONNECTING"); GeserKeKiri(1, " ........."); Serial.println(WiFi.localIP()); } void loop() { while (WiFi.status() != WL_CONNECTED) { WiFi.disconnect(); delay(1000); WiFi.begin(ssid, password); Serial.println("Koneksi ulang ke WiFi.."); delay(10000); } if(bGotIpFlag) bGotIp(); if(bFirstKickMillis) CurrentMillis = millis(); if (!bGotIpFlag && CurrentMillis - PreviousMillis >= interval) { if(!bFirstKickMillis) CurrentMillis = 0; bFirstKickMillis = true; PreviousMillis = CurrentMillis; WiFiClient client; HTTPClient http; http.begin(build_url_from_country(country_code)); int httpCode = http.GET(); if(httpCode > 0) { String payload = http.getString(); char* JsonArray = (char *)malloc(payload.length() + 1); if (!JsonArray) JSON_LOG("upssss "); payload.toCharArray(JsonArray, payload.length() + 1); JSON_LOG(JsonArray); if (json_validate(JsonArray)) { int confirmed = (int)get_json_value(JsonArray, "cases", INT); int deaths = (int)get_json_value(JsonArray, "deaths", INT); int recovered = (int)get_json_value(JsonArray, "recovered", INT); JSON_LOG(confirmed); JSON_LOG(deaths); JSON_LOG(recovered); lcd.clear(); lcd.setCursor(2, 0); lcd.print("TERKONFIRMASI"); lcd.setCursor(4, 1); lcd.print(confirmed); delay(9000); lcd.clear(); lcd.setCursor(3, 0); lcd.print("MENINGGAL"); lcd.setCursor(4, 1); lcd.print(deaths); delay(9000); lcd.clear(); lcd.setCursor(4, 0); lcd.print("SEMBUH "); lcd.setCursor(4, 1); lcd.print(recovered); delay(9000); lcd.clear(); lcd.begin(); lcd.setCursor(1, 0); lcd.print(" MONITORING DATA "); lcd.scrollDisplayLeft(); delay(500); lcd.setCursor(1, 1); lcd.print(" COVID-19"); delay(500); } free(JsonArray); } http.end(); } }
Begitulah Cara membuat alat monitoring data covid-19 di indonesia menggunakan nodemcu esp8266
kalian bisa melihat videonya di bawah ini :
Nice