Monitoring data covid 19 menggunakan nodemcu esp8266

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

monitoring data covid nodemcu

 

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 

monitoring data covid nodemcu

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 :

1 komentar untuk “Monitoring data covid 19 menggunakan nodemcu esp8266”

Tinggalkan Balasan

Scroll to Top