Le matériel des sondes tourne sur des microcontrôleurs compatibles Arduino. Le firmware, qu’on appelle couramment un sketch, lit les capteurs à intervalle régulier, met les résultats au format JSON et les sert sur le réseau, pour que le site web et d’autres clients récupèrent les données en direct sans câble série.
Rôle du sketch
- Initialiser les bus des capteurs et l’écran LCD 16×2 local pour une lecture sur place.
- Lire chaque sonde DHT22, avec nouvelles tentatives en cas d’erreur passagère du bus.
- Calculer une moyenne des sondes en bon état, comme valeur de synthèse rapide dans le JSON.
- Répondre aux requêtes HTTP avec un document JSON compact via le shield Ethernet.
- En option, journaliser les erreurs sur le port série pour le débogage sur place.
Structure JSON type
Les clients attendent un objet temp au premier niveau, avec une clé numérique par sonde plus avg. L’humidité figure à côté de la température pour chaque sonde. Garder des clés stables compte plus qu’une mise en forme soignée : les correspondances du dashboard font directement référence à ces clés.
{
"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 }
}
} Pour l’ingestion push, le même objet sonde peut être envoyé à /api/ingest/<key>. Les champs optionnels de premier niveau battery (ou battery_pct) et rssi mettent à jour l’état de l’appareil sur la page Devices sans clé de capteur supplémentaire.
{
"temp": {
"0": { "f": 38.2, "c": 3.4, "h": 41.0 }
},
"battery": 87,
"rssi": -62
} Ingestion push depuis le shield Ethernet
La pile W5100 d’un Uno ne gère pas TLS : elle ne peut donc pas envoyer de POST directement à https://probeharbor.dev. Utilisez ethernet_dht22_ingest pour envoyer en HTTP le JSON temp classique (DHT22 sur A4/A5, JSON optionnel sur le port 80 pour une lecture depuis le LAN). Lancez push_https_forward.py sur un Raspberry Pi, un NAS ou un ordinateur portable pour que ces POST atteignent ProbeHarbor en HTTPS. Les exemples ESP32 en Wi‑Fi qui parlent TLS se trouvent dans sketches/.
Guides de câblage du matériel
Le montage utilise un Arduino Uno, un shield Ethernet W5100, une platine d’essai, un potentiomètre de contraste, un écran LCD 16×2 et deux capteurs DHT22. Trois pages associées détaillent les schémas et le brochage :
Vue d’ensemble du câblage Arduino
Comment s’assemblent l’alimentation USB, la breadboard, le potentiomètre de contraste, l’écran LCD, les capteurs et le shield Ethernet.
Câblage Arduino broche par broche
Plan broche par broche conforme au constructeur LiquidCrystal et aux lignes de données des capteurs dans le firmware.
Capteurs DHT22 et écran LCD
Pourquoi les deux sondes s’affichent séparément sur l’écran LCD alors que les flux JSON les exposent toutes deux au site web.
Choix de la pile réseau
Cette révision utilise un shield Ethernet en SPI. Le sketch gère le DHCP, les boucles de reconnexion et la diffusion du JSON pendant que l’écran LCD continue d’afficher les valeurs des sondes en direct. Quand TLS est trop lourd pour le MCU, un relais Python peut terminer le HTTPS : voir Scripts et flux Python. Pour l’ingestion push depuis le même shield, voir ethernet_dht22_ingest.
Méthode de développement
Les sketches sont modifiés dans l’Arduino IDE ou PlatformIO, flashés en USB, puis vérifiés grâce aux journaux série avant de fixer la carte dans l’espace surveillé. Vérifiez la structure du JSON avec curl avant d’ajouter l’URL du flux au dashboard du site.
Des exemples prêts à adapter pour DS18B20, MAX31855, MAX6675 et Uno + Ethernet se trouvent dans ce dépôt, sous sketches/. Le Raspberry Pi Pico W / Pico 2 W utilise le même JSON d’ingestion avec CircuitPython ou MicroPython. Firmware complet Ethernet + DHT + LCD : arduino-network-json-temperature-sever.
Conseils de fiabilité
- Les redémarrages par watchdog rattrapent les rares blocages réseau sans avoir à monter sur une échelle.
- Séparez le bruit d’alimentation des capteurs de celle du MCU quand les câbles sont longs.
- Versionnez votre schéma JSON dans la documentation quand vous ajoutez des champs.
- Notez quelles broches GPIO correspondent à quelles étiquettes de sonde physiques ; voir le guide de câblage des broches.
FAQ
Où trouver des exemples de sketches Arduino ?
Dans le dépôt GitHub probeharbor, sous sketches/, ainsi que dans les guides Arduino de la section About. Les exemples ESP32 envoient directement en POST HTTPS. L’Uno + Ethernet W5100 utilise ethernet_dht22_ingest (JSON de température classique sur A4/A5) avec un relais HTTP→HTTPS sur le réseau local : le shield ne peut pas établir de connexion TLS avec probeharbor.dev.