EnglishThis website is also available in English

COVID-19 CORONA Tracker: ESP32 & Arduino IDE

Jika Anda ingin mengikuti situasi sehubungan dengan distribusi COVID-19 24/7, Anda dapat menggunakan mikrokontroler untuk ini. Bersama dengan LCD, Anda dapat mengkompilasi pelacak COVID-19 CORONA Tracker langsung. Misalnya dengan M5StickC, yang dilengkapi dengan ESP32 dan LCD warna. Jika Anda ingin melakukan hal yang sama tetapi dengan mikrokontroler ESP8266, baca blog ESP8266 Monitor Data COVID-19 Waktu-Nyata.

Jika Anda ingin tahu cara mengambil data dengan PHP, baca posting blog “COVID-19 CORONA dapatkan data dengan PHP

COVID-19 CORONA Tracker ESP32 & Arduino IDE - M5StickC
COVID-19 CORONA Tracker ESP32 & Arduino IDE – M5StickC

M5StickC dan Arduino IDE

Pertama-tama, kita membutuhkan papan pengembangan yang kompatibel dengan ESP32 dengan LCD, seperti M5StickC. Anda bisa, tentu saja, menggunakan ESP32 yang berbeda, selama Anda menyesuaikan sketsa. Seperti biasa, instal Arduino IDE dengan ESP32 core. Saat Anda menggunakan M5StickC, Anda juga menginstal pustaka M5StickC. Untuk informasi lebih lanjut, Anda dapat berkonsultasi dengan blog sebelumnya “Memprogram M5StickC dengan Arduino IDE“.

Akhirnya, Anda masih membutuhkan perpustakaan ArduinoJson. Anda dapat menginstalnya dengan manajer perpustakaan di Arduino IDE.

M5StickC ESP32 PICO Color LCD Mini IoT Development Board
Diuji dan direkomendasikan oleh OneGuyOneBlog.com:

M5StickC ESP32 PICO Color LCD Mini IoT Development Board
Banggood.com
Coronavirus COVID-19 Global Cases
Coronavirus COVID-19 Global Cases

Dataset coronavirus

Maka, tentu saja, kita membutuhkan data. Mereka dapat ditemukan di situs web Coronavirus Disease (COVID-19) GIS Hub, misalnya. Situs web itu juga menyediakan REST API, tempat Anda dapat meminta data dalam format JSON. Melalui API Explorer di situs web itu, Anda dapat dengan mudah menyusun URL kueri yang benar.

COVID-19 CORONA Tracker: ESP32 & Arduino IDE - REST API Query-URL
COVID-19 CORONA Tracker: ESP32 & Arduino IDE – REST API Query-URL

Dalam hal ini, Anda memilih pengaturan berikut:

  • Di “Di mana” Anda memilih “Country_Region” dan kemudian, misalnya, masukkan “Netherlands”.
  • Di bawah “Dari bidang”, periksa “Last_Update”, “Confirmed”, “Deaths”, “Recovered” dan sisanya mati.
  • Pada “Opsi keluaran” Anda mengatur “Geometri permintaan” ke “Salah”, dan sisanya juga.

Di kanan atas Anda sekarang melihat URL permintaan yang dihasilkan:

https://services1.arcgis.com/0MSEUqKaxRlEPj5g/arcgis/rest/services/Coronavirus_2019_nCoV_Cases/FeatureServer/1/query?where=Country_Region%20like%20'%25NETHERLANDS%25'&outFields=Last_Update,Confirmed,Deaths,Recovered&returnGeometry=false&outSR=4326&f=json

Click on “Try Now” or paste the URL into a new browser window, the output of that query will look like this:

{
   "objectIdFieldName": "OBJECTID",
   "uniqueIdField": {
      "name": "OBJECTID",
      "isSystemMaintained": true
   },
   "globalIdFieldName": "",
   "geometryType": "esriGeometryPoint",
   "spatialReference": {
      "wkid": 4326,
      "latestWkid": 4326
   },
   "fields": [
      {
         "name": "Last_Update",
         "type": "esriFieldTypeDate",
         "alias": "Last Update",
         "sqlType": "sqlTypeOther",
         "length": 8,
         "domain": null,
         "defaultValue": null
      },
      {
         "name": "Confirmed",
         "type": "esriFieldTypeInteger",
         "alias": "Confirmed",
         "sqlType": "sqlTypeOther",
         "domain": null,
         "defaultValue": null
      },
      {
         "name": "Deaths",
         "type": "esriFieldTypeInteger",
         "alias": "Deaths",
         "sqlType": "sqlTypeOther",
         "domain": null,
         "defaultValue": null
      },
      {
         "name": "Recovered",
         "type": "esriFieldTypeInteger",
         "alias": "Recovered",
         "sqlType": "sqlTypeOther",
         "domain": null,
         "defaultValue": null
      }
   ],
   "features": [
      {
         "attributes": {
            "Last_Update": 1583777591000,
            "Confirmed": 321,
            "Deaths": 3,
            "Recovered": 0
         }
      }
   ]
}
COVID-19 CORONA Tracker: ESP32 & Arduino IDE - JSON data
COVID-19 CORONA Tracker: ESP32 & Arduino IDE – JSON data

Parsing data JSON

Kode yang perlu kita baca di data JSON dapat dihasilkan secara otomatis dengan “ArduinoJson Assistant” online. Rekatkan data JSON yang kami hasilkan di atas ke dalam ArduinoJson Assistant, dan situs web menghasilkan kode program.

COVID-19 CORONA Tracker: ESP32 & Arduino IDE - ArduinoJson Assistant
COVID-19 CORONA Tracker: ESP32 & Arduino IDE – ArduinoJson Assistant

Dari kode program itu, kami hanya menyalin aturan yang diperlukan, dan kami menyesuaikan garis “deserializeJson”. Lihat hasil akhirnya di bawah ini:

    const size_t capacity = JSON_ARRAY_SIZE(1) + JSON_ARRAY_SIZE(4) + JSON_OBJECT_SIZE(1) + 2 * JSON_OBJECT_SIZE(2) + JSON_OBJECT_SIZE(4) + 3 * JSON_OBJECT_SIZE(6) + 2 * JSON_OBJECT_SIZE(7) + 690;
    DynamicJsonDocument doc(capacity);

    deserializeJson(doc, payload);

    JsonArray fields = doc["fields"];

    JsonObject features_0_attributes = doc["features"][0]["attributes"];

    long features_0_attributes_Last_Update = features_0_attributes["Last_Update"];
    int features_0_attributes_Confirmed = features_0_attributes["Confirmed"];
    int features_0_attributes_Deaths = features_0_attributes["Deaths"];
    int features_0_attributes_Recovered = features_0_attributes["Recovered"];

Anda akan melihat fragmen ini di sketsa di bagian bawah halaman ini.

COVID-19 CORONA Tracker: sketsa

Dengan informasi ini, Anda sekarang dapat dengan mudah mengumpulkan pelacak Corona Anda sendiri. Sketsa di bagian bawah artikel ini tidak melakukan apa-apa selain mengambil data baru setiap 10 menit (LED merah akan menyala). Pada layar M5StickC, Anda dapat melihat jumlah infeksi di area yang bersangkutan (dalam angka kuning), di bawah jumlah kematian (angka merah) dan jumlah yang pulih (angka hijau).

Anda masih harus memasukkan nama jaringan dan kata sandi dalam sketsa.

Sketsa ini juga tersedia di GitHub: https://github.com/oneguyoneblog/COVID-19-Corona-ESP32

COVID-19 CORONA Tracker: hanya sebuah contoh

Seperti biasa di blog ini, kode hanya titik awal untuk proyek Anda sendiri. Sketsa itu sangat mendasar, tetapi Anda bisa membuat sesuatu yang indah sendiri. Sudahkah Anda membuat sesuatu yang menarik, kemudian beri tahu di bagian komentar di bawah artikel ini!

Jika Anda ingin tahu cara mengambil data dengan PHP, baca posting blog “COVID-19 CORONA dapatkan data dengan PHP“.

#include <M5StickC.h>
#include <WiFi.h>
#include <HTTPClient.h>
#include <ArduinoJson.h>

const char* url = "https://services1.arcgis.com/0MSEUqKaxRlEPj5g/arcgis/rest/services/Coronavirus_2019_nCoV_Cases/FeatureServer/1/query?where=Country_Region%20like%20'%25NETHERLANDS%25'&outFields=Last_Update,Confirmed,Deaths,Recovered&returnGeometry=false&outSR=4326&f=json";

const char* ssid = "mijnwifinetwerk";
const char* password = "mijnwifiwachtwoord";

const int redLED = 10;

void setup() {

  pinMode(redLED, OUTPUT);
  Serial.begin(115200);
  delay(2000);

  M5.begin();
  M5.Lcd.setRotation(3);
  M5.Lcd.setTextColor(WHITE);
  M5.Lcd.setTextSize(2);

  digitalWrite(redLED, LOW);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    M5.Lcd.fillScreen(BLACK);
    M5.Lcd.setCursor(0, 10);
    M5.Lcd.printf("Connecting..");
  }

  M5.Lcd.fillScreen(BLACK);
  M5.Lcd.setCursor(0, 10);
  M5.Lcd.printf("Connected");
  digitalWrite(redLED, HIGH);
}

void loop() {

  HTTPClient http;
  String data;

  digitalWrite(redLED, LOW);
  http.begin(url);
  digitalWrite(redLED, HIGH);

  int httpCode = http.GET();

  if (httpCode > 0) { //Check for the returning code

    String payload = http.getString();
    char charBuf[500];
    payload.toCharArray(charBuf, 500);
    
    M5.Lcd.fillScreen(BLACK);
    M5.Lcd.setCursor(0, 10);

    Serial.println(payload);

    const size_t capacity = JSON_ARRAY_SIZE(1) + JSON_ARRAY_SIZE(4) + JSON_OBJECT_SIZE(1) + 2 * JSON_OBJECT_SIZE(2) + JSON_OBJECT_SIZE(4) + 3 * JSON_OBJECT_SIZE(6) + 2 * JSON_OBJECT_SIZE(7) + 690;
    DynamicJsonDocument doc(capacity);

    deserializeJson(doc, payload);

    JsonArray fields = doc["fields"];

    JsonObject features_0_attributes = doc["features"][0]["attributes"];

    long features_0_attributes_Last_Update = features_0_attributes["Last_Update"];
    int features_0_attributes_Confirmed = features_0_attributes["Confirmed"];
    int features_0_attributes_Deaths = features_0_attributes["Deaths"];
    int features_0_attributes_Recovered = features_0_attributes["Recovered"];

    M5.Lcd.setTextSize(4);
    M5.Lcd.setTextColor(ORANGE);
    M5.Lcd.println(features_0_attributes_Confirmed);

    M5.Lcd.setTextSize(3);
    M5.Lcd.setTextColor(RED);
    M5.Lcd.println(features_0_attributes_Deaths);
    
    M5.Lcd.setTextSize(2);
    M5.Lcd.setTextColor(GREEN);
    M5.Lcd.println(features_0_attributes_Recovered);
    
  } else {

    M5.Lcd.fillScreen(BLACK);
    M5.Lcd.setCursor(0, 10);
    M5.Lcd.printf("Error on HTTP request");
  }

  http.end();

  delay(60000);
}

Buat proyek pelacak ESP32 COVID-19 Anda sendiri

Gunakan informasi di atas untuk membuat proyek Anda sendiri yang luar biasa. Seperti Saša Čavlović dari Kroasia, ia menggunakan ESP-32S bersama dengan LCD berwarna:

Sudahkah Anda membuat sesuatu yang menarik? Beri tahu kami di komentar!

VNG Systems

M5StickC ESP32 PICO Color LCD Mini IoT Development Board
Diuji dan direkomendasikan oleh OneGuyOneBlog.com:

M5StickC ESP32 PICO Color LCD Mini IoT Development Board
Banggood.com

Add a Comment

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *