thumbnail monitoring covid indonesia dengan arduino

Tutorial IOT Monitoring data COVID di Indonesia menggunakan Arduino

Tutorial iot kali ini akan mencoba untuk monitoring data covid-19 khususnya di indonesia menggunakan Arduino (wemos d1 mini) pada web alicestech*com.

Dimana web tersebut menyediakan data JSON untuk detail data covid secara update.

monitoring covid via Wemos d1 mini + LCD 20x4

Metode yang digunakan hampir sama pada artikel sebelumnya :

  1. Realtime Clock via NTP SERVER
  2. Monitoring Weather / Cuaca Jakarta menggunakan Wemos d1 mini
  3. Project monitoring bitcoin menggunakan NODEMCU ESP8266
  4. Realtime Monitoring subcriber youtube

Secara prinsip hampir sama yaitu mengolah data json yang sudah disediakan dengan metode parsing data dan ditampilkan di serial monitor, LCD 20×4 ataupun di LED dotmatrix 4×8.

Data yang akan ditampilkan antara lain :

  1. Time Clock : waktu update terakhir data yang meliputi jam, dan tanggal
  2. Jumlah kasus yang sembuh
  3. Total kasus yang telah tiada
  4. Total kasus yang terjangkit virus

Tutorial Pertama Monitoring Data Covid via Serial Monitor

Bahan yang perlu dipersiapkan

  1. Wemos D1 mini
  2. Kabel micro USB
  3. Breadboard
  4. Koneksi Wifi – internet
  5. Komputer + Arduino IDE

Wiring Schematic sederhana

Skema serial monitoring Data Covid menggunakan Wemos D1 mini

Hal yang pertama dilakukan yaitu instalasai Libraries ESP8266

Kadang ini menjadi gagalnya upload program karena lupa setting Tools Board untuk Wemos D1 mini. Dengan catatan sudah instalasi Boards ESP8266 agar list wemos d1 mini keluar pada Board yang akan dipilih.

Langkah – langkah untuk installing Boards ESP8266 dengan catatan terhubung internet :

  1. Klik File > Preferences pada Arduino IDE
  2. Pada kolom Additional Boards Manager URLs isikan ini : http://arduino.esp8266.com/stable/package_esp8266com_index.json
  3. Klik OK
  4. Klik Tools > Board > Boards Manager
  5. Pada kolom searching ketikan “ESP8266”
  6. Pilih dan install esp8266 by ESP8266 Community
  7. Done

add boards in arduino IDE

Langkah – langkah setting ke boards wemos d1 mini

  1. Klik Tools > Board > LOLIN(WEMOS) D1 R2 & MINI
  2. Pilih Port
  3. Jika menggunakan USB Driver CH340G harus instalasi driver tersebut dapat dicek dilink ini

[irp posts=”3063″ name=”Tutorial mudah install usb driver CH340G Arduino IDE”]

Koding Program

//monitoring data covid indonesia 2020
//www.nyebarilmu.com

#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <WiFiClient.h>

const char* ssid     = "Blok21no12"; //Nama wifi target kalian
const char* password = "Komponen08"; //Password wifi
String payload, positif, tiada, sembuh, hari, tanggal, bulan, tahun, waktu;
String d[10];
int i;

void setup() {
 Serial.begin(115200);
 Serial.print("Connecting to ");
 Serial.println(ssid);
 WiFi.begin(ssid, password);
    while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
    }
    Serial.println("");
    Serial.println("IP address device ini: ");
    Serial.println(WiFi.localIP());
}

void tampilkandata()
{
      int j=0;
      d[j]="";

      //proses parsing data
      for(i=1;i<payload.length();i++)
      {
             if ((payload[i] == '#') || (payload[i] == ','))
             {
                   j++;
                  d[j]=""; //inisialisasi variabel array dt[j]
             }
             else
             {
                  d[j] = d[j] + payload[i];
             }
      }

     positif = d[0];
     tiada = d[1];
     sembuh = d[2];
     hari = d[3];
     tanggal = d[4];
     bulan = d[5];
     tahun = d[6];
     waktu = d[7];

      //menampilkan data
      Serial.print("Data Update : ");
      Serial.print(hari);
      Serial.print(", ");
      Serial.print(tanggal);
      Serial.print(" ");
      Serial.print(bulan);
      Serial.print(" ");
      Serial.print(tahun);
      Serial.print("\n"); //enter line

      Serial.print("Pukul : ");
      Serial.print(waktu);
      Serial.print("\n");

      Serial.print("Positif Corona : ");
      Serial.print(positif);
      Serial.print("\n");

      Serial.print("Kasus tiada : ");
      Serial.print(tiada);
      Serial.print("\n");

      Serial.print("Sembuh : ");
      Serial.print(sembuh);
      Serial.print("\n");
}


void ambildata(){
  if ((WiFi.status() == WL_CONNECTED)) {
    HTTPClient http;
    Serial.print("\n");
    Serial.println("Data COVID di Indonesia");
    Serial.println("------------------------------");
    String addressurl = "http://alicestech.com/covid19/corona.php"; //thanks for your data json
    const char* sendurl = addressurl.c_str();
    http.begin(sendurl);
    int httpCode = http.GET();
    if (httpCode > 0) {
        payload = http.getString();
        //Serial.println();
      }
    else {
      Serial.println("Error on HTTP request");
    }
    http.end();
  }
}

void loop() {
  ambildata();
  tampilkandata();
  delay(60000); //delay selama 1 menit
}

Hasil Koding program diatas

serial monitoring Data Covid

Penjelasan singkat

Data yang ditampilkan tersebut merupakan parsing data JSON dari web http://alicestech.com/covid19/corona.php seperti penjelasan gambar dibawah ini

data json covid di indonesia


Tutorial Kedua Pantau Data Covid via display LCD 20×4

Pada tutorial ini memindahkan display data dari serial monitor menjadi display LCD 20×4 sehingga tidak tergantung sama komputer.

Bahan yang perlu dipersiapkan

  1. Wemos D1 mini
  2. Kabel micro USB
  3. Breadboard
  4. LCD 20×4 dan driver PCF8574
  5. Koneksi Wifi – internet
  6. Komputer + Arduino IDE

Wiring Skematik sederhana

wemos + i2c lcd 20x4 - MONITORING COVID ONLINE

Langkah – langkah untuk installing library driver PCF8574 dengan catatan terhubung internet :

  1. Buka Software arduino uno IDE
  2. Arahkan cursor pada menu sketch -> include libraries -> manage libraries
  3. Ketikan “PCF8574
  4. Pilih “LiquidCrystal_PCF8574 by Matthias Hertel
  5. Klik install dan closed

Instalasi library driver i2c lcd pcf8574

Sebelum masuk ke program harap dicek dahulu untuk address driver lcd nya menggunakan i2c scanner dapat dicek pada link ini :

[irp posts=”657″ name=”Cara mencari tahu alamat interface i2c module arduino”]

Koding program

[sociallocker id=1344]

//monitoring data covid indonesia 2020
//www.nyebarilmu.com

#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <WiFiClient.h>
#include <LiquidCrystal_PCF8574.h>
#include <Wire.h>

LiquidCrystal_PCF8574 lcd(0x27);

const char* ssid     = "Blok21no12"; //Nama wifi target kalian
const char* password = "Komponen08"; //Password wifi
String payload, positif, tiada, sembuh, hari, tanggal, bulan, tahun, waktu;
String hari1, bulan1;
String d[10];
int i,a;

void setup() {
 Serial.begin(115200);
 lcd.begin(20, 4);
 lcd.setBacklight(255);
 lcd.setCursor(0,0);
 lcd.print("Connecting to ");
 lcd.setCursor(0,1);
 lcd.print("wifi:");
 lcd.print(ssid);
 Serial.print("Connecting to ");
 Serial.println(ssid);
 a=0;
 WiFi.begin(ssid, password);
    while (WiFi.status() != WL_CONNECTED) {
        delay(500);
         lcd.setCursor(a,2);
         lcd.print(".");
        Serial.print(".");
        a++;
    }
 lcd.clear();
 Serial.println("");
 lcd.setCursor(0,0);
 lcd.print("ip address");
 lcd.setCursor(0,1);
 lcd.print(WiFi.localIP());
 delay(3000);
 Serial.println("IP address device ini: ");
 Serial.println(WiFi.localIP());
 lcd.clear();
}

void tampilkandata()
{
      int j=0;
      d[j]="";

      //proses parsing data
      for(i=1;i<payload.length();i++)
      {
             if ((payload[i] == '#') || (payload[i] == ','))
             {
                   j++;
                  d[j]=""; //inisialisasi variabel array dt[j]
             }
             else
             {
                  d[j] = d[j] + payload[i];
             }
      }

     positif = d[0];
     tiada = d[1];
     sembuh = d[2];
     hari = d[3];
     tanggal = d[4];
     bulan = d[5];
     tahun = d[6];
     waktu = d[7];

      //menampilkan data
      Serial.print("Data Update : ");
      Serial.print(hari);
      Serial.print(", ");
      Serial.print(tanggal);
      Serial.print(" ");
      Serial.print(bulan);
      Serial.print(" ");
      Serial.print(tahun);
      Serial.print("\n"); //enter line

      lcd.setCursor(0,0);
      lcd.print("Data:");
      //lcd.print(hari);
      //lcd.print(",");
      lcd.print(tanggal);
      lcd.print("-");
      lcd.print(bulan);
      lcd.print("-");
      lcd.print(tahun);

      Serial.print("Pukul : ");
      Serial.print(waktu);
      Serial.print("\n");

      lcd.setCursor(0,1);
      lcd.print("Jam :");
      lcd.print(waktu);

      Serial.print("Positif Corona : ");
      Serial.print(positif);
      Serial.print("\n");

      lcd.setCursor(0,2);
      lcd.print("+ : ");
      lcd.print(positif);

      Serial.print("Kasus tiada : ");
      Serial.print(tiada);
      Serial.print("\n");

      lcd.setCursor(11,2);
      lcd.print("- : ");
      lcd.print(tiada);

      Serial.print("Sembuh : ");
      Serial.print(sembuh);
      Serial.print("\n");

      lcd.setCursor(0,3);
      lcd.print("^ : ");
      lcd.print(sembuh);
}

void ambildata(){
  if ((WiFi.status() == WL_CONNECTED)) {
    HTTPClient http;
    Serial.print("\n");
    Serial.println("Data COVID di Indonesia");
    Serial.println("------------------------------");
    String addressurl = "http://alicestech.com/covid19/corona.php"; //thanks for your data json
    const char* sendurl = addressurl.c_str();
    http.begin(sendurl);
    int httpCode = http.GET();
    if (httpCode > 0) {
        payload = http.getString();
        //Serial.println();
      }
    else {
      Serial.println("Error on HTTP request");
    }
    http.end();
  }
}

void loop() {
  ambildata();
  tampilkandata();
  delay(60000); //delay selama 1 menit
}

[/sociallocker]

Hasil dari koding program diatas

monitoring covid via Wemos d1 mini + LCD 20x4

Penjelasan data display LCD diatas

hasil data display monitoring wemos d1 mini + lcd 20x4

Keterangan :

  1. Data tanggal update terakhir
  2. Jam terakhir update data
  3. Kasus Positif yang terkena
  4. Sudah tiada
  5. Sembuh

Video tutorial via Youtube 

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *