Real-time COVID-19 Case Tracker met Alarm Systeem
Onderdelen en Benodigdheden
| Arduino UNO | 1 |
| Bolt IoT WiFi Module | 1 |
| Adafruit RGB Backlight LCD 16x2 | 1 |
Over dit Project
Dit project toont het wereldwijde aantal COVID-19 gevallen op een LCD en activeert een buzzer (op Bolt pin 0) als het aantal gevallen binnen 10 minuten met meer dan 100 (code) / 500 (beschrijving) stijgt. De Bolt WiFi-module haalt data op via Python-script op een PC/cloud (Google Colab).
Let op: De data-bron (worldometers.info) en de Bolt IoT-platform zijn mogelijk verouderd. Het project dient als voorbeeld voor IoT-data-weergave.
Bolt Module Instellen
- Account aanmaken op boltiot.com.
- Device ID en API Key noteren (Settings → API → Enable).
- Python bibliotheek installeren:
pip install boltiot(van GitHub).
Python Script (op PC/Colab)
Het script scrapet worldometers.info met BeautifulSoup, stuurt het aantal gevallen via Bolt UART naar Arduino, en checkt iedere ~100 seconden (code) of de toename > 10 is. Bij alarm: Bolt pin 0 HIGH voor 5s (buzzer).
from bs4 import BeautifulSoup as bs
import requests, time
from boltiot import Bolt
import ssl
a = []
def check_increase(x, count):
a.insert(count, x)
if count == 1:
print(a)
if a[1] - a[0] > 10: # drempel
a.clear()
return 1
else:
a.clear()
return 0
def get_cases():
html = requests.get("https://www.worldometers.info/coronavirus/")
soup = bs(html.text, 'html.parser')
tag = soup.find_all("span")
# Let op: HTML structuur kan veranderd zijn!
cases_str = tag[4].contents[0]
# Verwijder komma's, haal getal
return int(cases_str.replace(',', ''))
api_key = input("API Key: ")
device_id = input("Device ID: ")
device = Bolt(api_key, device_id)
for i in range(1000):
print(device.isOnline())
device.serialBegin(9600)
x = get_cases()
z = check_increase(x, 0)
device.serialWrite(str(x))
time.sleep(100)
y = get_cases()
z = check_increase(y, 1)
device.serialWrite(str(y))
if z == 1:
device.digitalWrite('0', 'HIGH')
time.sleep(5)
device.digitalWrite('0', 'LOW')
Arduino Code
Ontvangt data via UART (Bolt TX → Arduino RX, Bolt RX → Arduino TX) en toont op LCD.
#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
lcd.home();
Serial.setTimeout(50);
lcd.print("Total affected:");
}
void loop() {
String x;
lcd.setCursor(0, 1);
if (Serial.available() > 0) {
x = Serial.readString();
}
lcd.print(x);
}
Aansluiting
- Bolt TX → Arduino RX (pin 0)
- Bolt RX → Arduino TX (pin 1)
- LCD: RS=2, E=3, D4=4, D5=5, D6=6, D7=7
- Buzzer op Bolt GPIO 0 (niet Arduino!)
- Gemeenschappelijke GND
Schema
Fritzing-afbeelding bijgevoegd (Arduino-LCD + Bolt-Arduino verbinding).
Productieproces
- Een robuuste temperatuur- en sensor-API bouwen op Raspberry Pi met de GY-91-module
- Een Live IP-camera Instellen op Raspberry Pi met Motion – Stap-voor-Stap Gids
- Schroeven en Bouten: Typen, Toepassingen en Optimale Montage
- Schroef vs. Bout: Belangrijkste Verschillen, Typen en Toepassingen
- Praktische Gids voor Boutokoppen voor Veilige Bevestiging
- Bus-sleutels (box wrenches) begrepen: ontwerp, gebruik en voordelen
- Machinebouten Uitgelegd: Types, Toepassingen en Installatiehandleiding
- Kliksloten Begrepen: Functie, Types en Veiligheidsvoordelen
- Java 9 (JDK 9) – Belangrijkste kenmerken & voordelen
- Java 9 Multi-Resolution Image API: Responsive Graphics vereenvoudigen
- Java Concurrency verbeteren: Belangrijke verbeteringen aan de CompletableFuture API