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.


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.


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.


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 } } ] }


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.


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!