Arduino UNO Q - Moniteur de Température en Temps Réel sur Navigateur Web
L'Arduino UNO Q peut envoyer des lectures de température en direct vers n'importe quel navigateur en temps réel grâce à WebSocket — sans interrogation, sans rechargement de page. Le MCU STM32 lit le capteur DS18B20 chaque seconde et partage la valeur via Bridge. Le MPU Linux Qualcomm exécute une application Python qui utilise le serveur Socket.IO intégré de la Brique WebUI pour diffuser chaque nouvelle lecture vers tous les navigateurs connectés dès son arrivée. Aucun matériel supplémentaire ou service cloud requis.
Dans ce tutoriel, vous apprendrez :
- Comment câbler le capteur de température 1-Wire DS18B20 au MCU Arduino UNO Q
- Comment exposer les données de température en temps réel du MCU vers le MPU Linux via Bridge
- Comment servir une page web thermomètre depuis le MPU Linux Arduino UNO Q en utilisant la Brique WebUI
- Comment utiliser ui.on_message() et ui.send_message() pour envoyer des mises à jour de température en direct au navigateur via WebSocket
- Comment recevoir les messages WebSocket dans le navigateur avec Socket.IO et mettre à jour le thermomètre canvas sans recharger
- Comment accéder à la page de température en direct depuis n'importe quel appareil sur le même réseau Wi-Fi

Matériel Requis
Ou vous pouvez acheter les kits suivants:
| 1 | × | Kit de Capteurs DIYables (18 capteurs/écrans) |
Note d'achat: De nombreux capteurs DS18B20 sur le marché sont de faible qualité. Nous recommandons vivement d'acheter le capteur de la marque DIYables en utilisant le lien ci-dessus. Nous l'avons testé et il a bien fonctionné.
À Propos du DS18B20 et du Serveur Web
Capteur DS18B20 : Un capteur de température numérique 1-Wire (−55 °C à +125 °C, précision ±0,5 °C). Nécessite une résistance de rappel de 4,7 kΩ entre DATA et VCC — les capteurs avec adaptateurs l'incluent. Consultez le Arduino UNO Q - Capteur de Température pour les détails de câblage et de bibliothèque.
Brique WebUI : La Brique WebUI - HTML exécute un serveur web sur le port 7000 qui sert vos fichiers HTML et gère les connexions WebSocket Socket.IO. Votre code Python utilise ui.on_message() pour recevoir des événements du navigateur et ui.send_message() pour renvoyer des données. Tout appareil sur le même réseau Wi-Fi peut accéder à la page sur http://<adresse-ip-carte>:7000/.
Flux en temps réel : Le navigateur se connecte via Socket.IO et demande la configuration de température et la première lecture. Un thread Python en arrière-plan lit le capteur chaque seconde via Bridge et diffuse chaque mise à jour vers tous les navigateurs connectés. Le thermomètre canvas se redessine à chaque envoi — sans interrogation, sans rechargement.
Nouveau avec WebSocket ? Si vous n'avez pas encore utilisé Socket.IO sur l'Arduino UNO Q, commencez par le tutoriel Arduino UNO Q - WebSocket — il enseigne le même schéma en utilisant un exemple de contrôle LED simple sans capteur.
Schéma de Câblage
- Câblage sur breadboard (avec résistance de rappel) :

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
- Schéma de câblage avec adaptateur (pas de résistance supplémentaire nécessaire) :

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
Nous recommandons d'acheter un capteur DS18B20 avec adaptateur de câblage. Cet adaptateur simplifie la connexion car il inclut une résistance, donc vous n'en avez pas besoin d'une supplémentaire.
| Broche DS18B20 | Broche Arduino UNO Q |
|---|---|
| GND | GND |
| VCC | 5V |
| DATA | D4 |
Code Arduino UNO Q
L'Arduino UNO Q possède deux processeurs qui fonctionnent ensemble :
- Le MCU STM32 lit le capteur DS18B20 chaque seconde et expose la valeur via une fonction Bridge appelée get_temperature.
- Le MPU Qualcomm exécute une application Python qui utilise la Brique WebUI pour servir la page thermomètre sur le port 7000 et envoyer des mises à jour de température en direct à chaque navigateur via WebSocket.
Code MCU
Code Python
HTML (assets/index.html)
Placez ce fichier dans le dossier assets/ de votre application. Il charge le client Socket.IO depuis assets/libs/socket.io.min.js et dessine un thermomètre canvas en direct qui se redessine à chaque envoi du serveur :
Étapes Rapides
- Câbler le capteur : Connectez le DS18B20 à l'Arduino UNO Q comme indiqué dans le schéma de câblage.
- Se connecter au Wi-Fi : Assurez-vous que l'Arduino UNO Q est connecté à votre réseau Wi-Fi. Utilisez l'icône réseau dans Arduino App Lab pour vous connecter d'abord.
- Ouvrir Arduino App Lab : Lancez Arduino App Lab et attendez qu'il détecte votre Arduino UNO Q.
- Créer une nouvelle application : Cliquez sur le bouton Create New App.

- Donnez un nom à l'application, par exemple : TemperatureWS
- Cliquez sur Create pour confirmer.

- Coller le sketch MCU : Copiez le code MCU ci-dessus et collez-le dans sketch/sketch.ino.
- Coller le code Python : Ouvrez python/main.py. Sélectionnez tout le contenu existant et supprimez-le, puis collez le code Python ci-dessus.
- Ajouter le fichier HTML : Dans le dossier assets/, ouvrez (ou créez) index.html et collez le code HTML ci-dessus.
- Ajouter le client Socket.IO : Dans le dossier assets/, créez un sous-dossier libs/. Téléchargez socket.io.min.js et enregistrez-le sous assets/libs/socket.io.min.js.
- Install the library: Click the Add sketch library button (the open book icon with a + sign) in the left sidebar.

- Search for DallasTemperature created by Miles Burton
, Tim Newsome , Guil Barros , Rob Tillaart and click the Install button.
- Search for OneWire created by Jim Studt, Tom Pollard, Robin James, Glenn Trewitt, Jason Dangel, Guillermo Lovato, Paul Stoffregen, Scott Roberts, Bertrik Sikken, Mark Tillotson, Ken Butcher, Roger Clark, Love Nystrom and click the Install button.
- Search for Arduino_RouterBridge created by Arduino and click the Install button.
- Ajouter la Brique WebUI : Cliquez sur le bouton Add Brick dans la barre latérale de l'éditeur pour ouvrir le catalogue de Briques.

Trouvez et sélectionnez WebUI - HTML dans la liste, puis suivez les invites de configuration.

Arduino App Lab ajoute automatiquement l'entrée Brique à votre fichier app.yaml — ne modifiez pas cette entrée manuellement.
※ Note:
La Brique WebUI - HTML gère à la fois le service de fichiers HTTP et le WebSocket Socket.IO dans un seul service sur le port 7000. Le script client Socket.IO doit être placé dans assets/libs/socket.io.min.js — la brique ne sert pas automatiquement une version compatible. Consultez À Propos des Briques pour plus de détails.
- Téléverser : Cliquez sur le bouton Run dans Arduino App Lab pour compiler et téléverser.

- Ouvrez un navigateur web sur votre téléphone ou PC et accédez à :
Remplacez <ARDUINO_UNO_Q_IP> par l'adresse IP affichée dans la console Python.
Sortie Console d'App Lab
Sortie dans le Navigateur
Ouvrez http://<ARDUINO_UNO_Q_IP>:7000/ dans n'importe quel navigateur sur le même réseau. Vous verrez une page thermomètre en direct avec une barre d'état de connexion WebSocket en haut :

La page affiche :
- Un thermomètre canvas avec un niveau de mercure qui monte et descend en temps réel via WebSocket push
- La valeur de température actuelle et l'unité (°C) dans le bulbe, mise à jour à chaque envoi du serveur (toutes les 1 s)
- Des graduations de −10 °C à 50 °C (configurable via MIN_TEMP et MAX_TEMP dans le code Python)
- Une barre d'état de connexion — le mercure du thermomètre devient gris quand le WebSocket est déconnecté
Événements WebSocket
Le navigateur et le serveur Python communiquent en utilisant les événements Socket.IO suivants :
| Direction | Événement | Charge utile | |||
|---|---|---|---|---|---|
| Navigateur → Serveur | get_config | {} | |||
| Serveur → Navigateur | temperature_config | {"minValue" | -10, "maxValue" | 50, "unit" | "°C"} |
| Navigateur → Serveur | subscribe | {} | |||
| Serveur → Navigateur | temperature_update | {"value" | 24.6} |
Intégration d'OpenClaw
Vous pouvez adapter OpenClaw à ce tutoriel en vous référant aux instructions du tutoriel Arduino UNO Q - OpenClaw.
Idées de Projets
La page web de température en direct est une base pour de nombreux projets pratiques sur Arduino UNO Q :
- Moniteur de Climat de Pièce : Ajoutez un DHT22 ou BMP280 au MCU et étendez l'API Python avec un endpoint /api/humidity — la page web affiche température et humidité côte à côte, se mettant à jour chaque seconde
- Alerte Réfrigérateur ou Congélateur : Définissez un seuil dans le script Python — si get_temperature retourne une valeur au-dessus du seuil, le script envoie un message Telegram vous alertant que la porte du réfrigérateur est peut-être ouverte
- Enregistreur de Données de Température : Ajoutez chaque lecture à un fichier CSV côté Linux — ajoutez un endpoint /api/history qui retourne les 100 dernières lignes, et affichez-les comme graphique avec Chart.js sur un deuxième onglet
- Moniteur de Serre : Montez l'Arduino UNO Q dans une serre avec deux capteurs DS18B20 (intérieur et extérieur) et exposez-les via des fonctions Bridge séparées — la page web affiche les deux lectures sur une disposition de thermomètre divisé
- Moniteur de Salle Serveurs : Montez la carte dans un rack serveur — une simple page web avec une bannière d'état rouge/verte permet au personnel IT de vérifier la température depuis n'importe quel appareil du réseau sans installer d'application
Défiez-Vous
Prêt à aller plus loin avec le moniteur de température web sur Arduino UNO Q ? Essayez ces défis :
- Facile : Changez la plage du thermomètre et le schéma de couleurs dans index.html — définissez la plage à 0–100 °C et faites passer le dégradé du mercure du bleu (froid) au rouge (chaud) selon la lecture actuelle.
- Moyen : Ajoutez un deuxième panneau de graphique à la page web en utilisant Chart.js — tracez l'historique de température comme graphique linéaire qui se remplit au cours de la première minute, en utilisant des lectures stockées dans un tableau JavaScript qui s'agrandit à chaque événement WebSocket temperature_update.
- Avancé : Ajoutez un événement Socket.IO set_threshold au script Python que le navigateur émet avec { "min": 18, "max": 28 } — stockez la plage en Python et vérifiez-la dans la boucle d'envoi ; émettez un événement temperature_alert lorsque la lecture sort de la plage pour que la page web affiche une bannière d'avertissement qui passe automatiquement du vert au rouge.