Rastreador COVID-19 en Tiempo Real con Sistema de Alerta
Componentes y materiales
| Componente | Cantidad |
|---|---|
| Arduino UNO | 1 |
| Módulo WiFi Bolt IoT (basado en ESP8266) | 1 |
| Pantalla LCD 16x2 con retroiluminación RGB (Adafruit) | 1 |
Sobre el proyecto
Este dispositivo muestra en una LCD el total de casos de COVID-19 a nivel mundial (fuente: worldometers.info) y activa un zumbador durante 5 segundos si los casos aumentan en más de 100 en 10 minutos, alertando de la gravedad de la pandemia.
Configuración del módulo Bolt
Bolt es una capa de simplificación sobre el ESP8266: se controla vía API REST (clave API + Device ID) desde Python, Node.js, etc. No requiere firmware propio.
- Crea cuenta en boltiot.com.
- Añade dispositivo → anota Device ID.
- Habilita API → anota API Key.
Programación en Python (Google Colab recomendado)
- Instala librería:
pip install boltiot(repo: bolt-api-python). - Web scraping de
https://www.worldometers.info/coronavirus/conrequests+BeautifulSouppara extraer el contador global. - Cada ~100 segundos (ajustable a 600s para 10 min): lee casos, compara con valor anterior, si diferencia > 100 → envía
digitalWrite('0','HIGH')al Bolt (pin 0 conectado a zumbador), espera 5s, pone LOW. - Envía el valor actual al Arduino por UART (pines TX/RX del Bolt a RX/TX del Arduino) vía
serialWrite().
Código Python (resumido)
from bs4 import BeautifulSoup
import requests, time
from boltiot import Bolt
def get_cases():
html = requests.get("https://www.worldometers.info/coronavirus/")
soup = BeautifulSoup(html.text, 'html.parser')
tag = soup.find_all("span")
# El elemento [4] contiene el total (puede cambiar si la web se actualiza)
return int(''.join(filter(str.isdigit, tag[4].text)))
apikey = input("API Key: ")
device_id = input("Device ID: ")
bolt = Bolt(apikey, device_id)
bolt.serialBegin(9600)
prev = get_cases()
while True:
time.sleep(100) # usar 600 para 10 min reales
curr = get_cases()
bolt.serialWrite(str(curr))
if curr - prev > 100:
bolt.digitalWrite('0', 'HIGH')
time.sleep(5)
bolt.digitalWrite('0', 'LOW')
prev = curr
Lado Arduino
Recibe el número por UART (Serial) y lo muestra en la LCD 16x2 (pines RS=2, E=3, D4-D7=4-7).
#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
lcd.home();
lcd.print("Total afectados:");
}
void loop() {
lcd.setCursor(0, 1);
if (Serial.available() > 0) {
String x = Serial.readString();
lcd.print(x);
}
}
Conexiones
- Bolt TX → Arduino RX (pin 0)
- Bolt RX → Arduino TX (pin 1)
- Bolt GND ↔ Arduino GND
- Bolt pin 0 (GPIO) → Zumbador → GND (para alerta)
- LCD: RS=2, E=3, D4=4, D5=5, D6=6, D7=7, VSS=GND, VDD=5V, V0=potenciómetro contraste, A/K=5V/GND (RGB requiere pines PWM extra si se usa color).

Nota: El scraping depende de la estructura HTML de worldometers.info; si cambia, hay que actualizar el selector. El proyecto es educativo; para uso real considere APIs oficiales (Johns Hopkins, OMS) y mayor robustez.
Proceso de manufactura
- Construya una API robusta de temperatura y sensores en Raspberry Pi usando el módulo GY‑91
- Configura una Cámara IP en Vivo en Raspberry Pi con Motion: Guía Paso a Paso
- Tipos de tornillos y pernos para un ensamblaje óptimo
- Tornillo vs. perno: diferencias clave, tipos y aplicaciones
- Guía práctica de tipos de cabezas de tornillo para fijación segura
- Llaves de Boca Cerrada (Box Wrenches) Explicadas: Diseño, Uso y Ventajas
- Tornillos de Máquina: Tipos, Usos y Guía de Instalación
- Pestillos de Cerradura: Función, Tipos y Beneficios de Seguridad
- Java 9 (JDK 9) – Características y Beneficios Clave
- Java 9 API de Imagen Multiresolución: Simplificar Gráficos Responsivos
- Mejorar la Concurrencia en Java: Mejoras Clave en la API CompletableFuture