El hardware de las sondas funciona con microcontroladores compatibles con Arduino. El firmware, que suele llamarse sketch, lee los sensores a intervalos fijos, da formato JSON a los resultados y los sirve por la red para que el sitio web y otros clientes obtengan datos en vivo sin cables serie.
Qué hace el sketch
- Inicializa los buses de sensores y la pantalla LCD local de 16×2 para lecturas in situ.
- Lee cada sonda DHT22 con reintentos ante errores transitorios del bus.
- Calcula un promedio de las sondas en buen estado como valor resumen rápido en el JSON.
- Responde a las solicitudes HTTP con un documento JSON compacto a través del shield Ethernet.
- Opcionalmente, registra errores por serie para depurar in situ.
Estructura JSON típica
Los clientes esperan un objeto temp en el nivel superior con claves numéricas para cada sonda, además de avg. La humedad aparece junto a la temperatura en cada sonda. Mantener las claves estables importa más que un formato bonito: las asignaciones del dashboard hacen referencia directa a esas claves.
{
"temp": {
"0": { "f": 38.2, "c": 3.4, "h": 41.0 },
"1": { "f": 36.8, "c": 2.7, "h": 43.5 },
"avg": { "f": 37.5, "c": 3.1, "h": 42.2 }
}
} Para la ingesta push, el mismo objeto de sonda puede enviarse a /api/ingest/<key>. Los campos opcionales de nivel superior battery (o battery_pct) y rssi actualizan el estado del dispositivo en la página Devices sin necesidad de claves de sensor adicionales.
{
"temp": {
"0": { "f": 38.2, "c": 3.4, "h": 41.0 }
},
"battery": 87,
"rssi": -62
} Ingesta push desde el shield Ethernet
La pila W5100 de un Uno no admite TLS, así que no puede hacer POST directamente a https://probeharbor.dev. Usa ethernet_dht22_ingest para enviar por HTTP el JSON temp clásico (DHT22 en A4/A5, JSON opcional en el puerto 80 para consultas desde la LAN). Ejecuta push_https_forward.py en una Raspberry Pi, un NAS o un portátil para que esos POST lleguen a ProbeHarbor por HTTPS. Los ejemplos para ESP32 con Wi‑Fi que hablan TLS están en sketches/.
Guías de cableado del hardware
El montaje físico usa un Arduino Uno, un shield Ethernet W5100, una protoboard, un potenciómetro de contraste, una pantalla LCD de 16×2 y dos sensores DHT22. Tres páginas complementarias documentan en detalle los esquemas y el mapa de pines:
Visión general del cableado del circuito Arduino
Cómo encajan la alimentación USB, el protoboard, el potenciómetro de contraste, la LCD, los sensores y el shield Ethernet.
Cableado del Arduino pin a pin
Mapa pin a pin que coincide con el constructor de LiquidCrystal y las líneas de datos de los sensores en el firmware.
Sensores DHT22 y pantalla LCD
Por qué las dos sondas muestran lecturas separadas en la LCD mientras los feeds JSON exponen ambas al sitio web.
Opciones de pila de red
Esta revisión usa un shield Ethernet por SPI. El sketch gestiona DHCP, los bucles de reconexión y el servicio del JSON mientras la LCD sigue mostrando los valores de las sondas en vivo. Cuando TLS es demasiado pesado para el MCU, un relay en Python puede terminar HTTPS: consulta Scripts y feeds en Python. Para la ingesta push desde el mismo shield, consulta ethernet_dht22_ingest.
Flujo de desarrollo
Los sketches se editan en el Arduino IDE o en PlatformIO, se graban por USB y se verifican con registros por serie antes de montar la placa en el espacio vigilado. Comprueba la estructura del JSON con curl antes de añadir la URL del feed al dashboard del sitio.
En este repositorio, dentro de sketches/, hay ejemplos listos para adaptar para DS18B20, MAX31855, MAX6675 y Uno + Ethernet. La Raspberry Pi Pico W / Pico 2 W usa el mismo JSON de ingesta con CircuitPython o MicroPython. Firmware completo de Ethernet + DHT + LCD: arduino-network-json-temperature-sever.
Consejos de fiabilidad
- Los reinicios por watchdog se recuperan de los raros bloqueos de red sin tener que subir a una escalera.
- Separa el ruido de la alimentación de los sensores de la del MCU cuando haya tiradas de cable largas.
- Versiona tu esquema JSON en la documentación cuando añadas campos.
- Documenta qué pines GPIO corresponden a qué etiquetas físicas de sonda; consulta la guía de cableado de pines.
Preguntas frecuentes
¿Dónde están los sketches de ejemplo para Arduino?
En el repositorio de GitHub de probeharbor, en sketches/, además de las guías de Arduino en About. Los ejemplos para ESP32 hacen POST por HTTPS directamente. El Uno + Ethernet W5100 usa ethernet_dht22_ingest (JSON de temperatura clásico en A4/A5) más un relé HTTP→HTTPS en la red local: el shield no puede hacer TLS con probeharbor.dev.