Arduino UNO Q - Serveur Web
L'Arduino UNO Q dispose d'un MPU Debian Linux intégré, ce qui signifie qu'il peut faire tourner un serveur web complet — aucun shield Wi-Fi ni service cloud supplémentaire n'est nécessaire. Ce tutoriel vous montre comment exécuter un serveur web Python WebUI sur l'Arduino UNO Q en trois exemples progressifs, en commençant par la page la plus simple possible et en évoluant vers une API propre.
Dans ce tutoriel, vous apprendrez :
- Comment afficher une lecture brute de capteur dans une page HTML minimale (sans CSS, sans JavaScript)
- Comment servir une page web complète depuis un dossier d'assets (HTML + CSS + JavaScript)
- Comment exposer les données du capteur MCU comme un endpoint API JSON pur
- Comment le Bridge connecte le sketch MCU et le serveur web Python
- Comment câbler un potentiomètre à la broche analogique A0 sur l'Arduino UNO Q
- Comment ajouter le Brick WebUI dans Arduino App Lab pour gérer le service HTTP automatiquement

Matériel Requis
Ou vous pouvez acheter les kits suivants:
| 1 | × | Kit de Capteurs DIYables (18 capteurs/écrans) |
Fonctionnement du Serveur Web Arduino UNO Q
L'Arduino UNO Q combine deux processeurs :
- MCU STM32 — exécute votre sketch Arduino (C/C++) en temps réel. Il lit les capteurs, contrôle les relais, entraîne les moteurs, et bien plus encore.
- MPU Qualcomm — exécute Debian Linux complet. Il se connecte au Wi-Fi et peut faire tourner un serveur web Python WebUI que tout navigateur de votre réseau peut atteindre.
Les deux processeurs communiquent via le Bridge. Le MCU expose les fonctions matérielles via Bridge, et le serveur web Python sur le MPU appelle ces fonctions pour obtenir les lectures du capteur. Un navigateur récupère ensuite les données — soit comme une page HTML simple, une page web stylisée, ou une réponse API JSON.
※ Note:
Aucun shield Wi-Fi externe n'est nécessaire. L'Arduino UNO Q dispose du Wi-Fi intégré du côté Linux.
Schéma de Câblage

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
Code Arduino UNO Q
L'Arduino UNO Q dispose de deux processeurs. Pour un serveur web, vous écrivez :
- Un sketch MCU qui lit la broche analogique et expose la valeur via Bridge
- Un script Python WebUI sur le MPU Linux qui sert la valeur via HTTP
Les trois exemples ci-dessous utilisent le même sketch MCU. Seul le code Python (et les assets HTML optionnels) diffèrent.
Exemple 1 — Page Web Simple (Sans CSS, Sans JavaScript)
Le serveur web le plus simple possible : ouvrez un navigateur, visitez l'IP de la carte, et voyez la lecture analogique brute en HTML simple. Pas de style, pas de rafraîchissement automatique — juste le nombre.
Le sketch MCU lit la broche A0 et expose la valeur via une fonction Bridge appelée get_analog. Le serveur Python appelle cette fonction lorsqu'un navigateur demande / et retourne une réponse HTML brute.
Code MCU
Code Python
Étapes Rapides
- Connectez : Branchez l'Arduino UNO Q à votre ordinateur avec un câble USB-C et câblez le potentiomètre à A0 comme décrit dans la section Schéma de Câblage.
- Connexion 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.
- Ouvrez Arduino App Lab : Lancez Arduino App Lab et attendez qu'il détecte votre Arduino UNO Q.
- Créez une nouvelle application : Cliquez sur le bouton Créer une nouvelle application.

- Donnez un nom à l'application, par exemple : WebServerSimple
- Cliquez sur Créer pour confirmer.

- Collez le sketch MCU : Copiez le code MCU ci-dessus et collez-le dans sketch/sketch.ino.
- Collez le code Python : Ouvrez python/main.py dans l'application. Sélectionnez tout le contenu existant et supprimez-le, puis collez le code du serveur web Python ci-dessus.
- Install the library: Click the Add sketch library button (the open book icon with a + sign) in the left sidebar.

- Search for Arduino_RouterBridge created by Arduino and click the Install button.
- Ajoutez le Brick WebUI : Cliquez sur le bouton Ajouter un Brick dans la barre latérale de l'Éditeur pour ouvrir le catalogue des Bricks.

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

Arduino App Lab ajoute automatiquement l'entrée Brick dans votre fichier app.yaml — ne modifiez pas cette entrée manuellement.
※ Note:
Un Brick est un service prêt à l'emploi qui s'exécute du côté Linux de l'Arduino UNO Q. Le Brick WebUI - HTML gère le serveur HTTP afin que vous n'ayez pas à installer Flask ou tout autre framework web manuellement. Consultez À propos des Bricks pour plus de détails.
- Téléversez : Cliquez sur le bouton Exécuter dans Arduino App Lab pour compiler et téléverser.

- Ouvrez un navigateur web sur votre téléphone ou PC et accédez à : http://
:7000/
Remplacez <ARDUINO_UNO_Q_IP> par l'adresse IP de votre Arduino UNO Q.
- Vous verrez une page HTML simple affichant la valeur ADC brute actuelle de A0.
- Tournez le bouton du potentiomètre et rafraîchissez la page du navigateur — le nombre change.
Sortie Console App Lab
Rendu dans le Navigateur
Ouvrez http://<ARDUINO_UNO_Q_IP>:7000/ dans votre navigateur. Vous verrez une page HTML simple comme :
_RENDER

Serveur Web avec Dossier d'Assets (HTML + CSS + JavaScript)
Cet exemple sépare les fichiers front-end dans un dossier assets/, tout comme l'exemple blink-with-ui. Le serveur Python expose un endpoint /api/analog ; le fichier index.html dans le dossier assets appelle cet endpoint chaque seconde avec JavaScript et met à jour la valeur affichée — aucun rafraîchissement de page nécessaire.
Le sketch MCU est le même que l'Exemple 1. Les différences sont :
- Le code Python expose /api/analog au lieu d'une route HTML brute.
- Le fichier assets/index.html contient le HTML, le CSS et le JavaScript.
- Le Brick WebUI sert automatiquement tous les fichiers du dossier assets/ à l'URL racine (/).
Code MCU
Code Python
HTML (assets/index.html)
Placez ce fichier dans le dossier assets/ de votre application :
Étapes Rapides
- Suivez les mêmes étapes de création d'application que l'Exemple 1, mais nommez l'application WebServerAssets.
- Collez le code MCU dans sketch/sketch.ino.
- Collez le code Python dans python/main.py (remplacez tout le contenu existant).
- Dans le dossier assets/, ouvrez (ou créez) index.html et collez le code HTML ci-dessus.
- Ajoutez le Brick WebUI - HTML comme dans l'Exemple 1.
- Cliquez sur Exécuter pour téléverser.
- Ouvrez http://<ARDUINO_UNO_Q_IP>:7000/ dans votre navigateur.
- La page charge la page web stylisée depuis le dossier assets et met à jour la valeur analogique automatiquement chaque seconde.
- Tournez le potentiomètre — la valeur sur la page change sans rafraîchissement.
Sortie Console App Lab
Réponse de l'API
Le JavaScript dans index.html appelle GET /api/analog. Vous pouvez aussi tester cet endpoint directement :

Serveur Web comme API (JSON Pur)
Cet exemple supprime tout le HTML et ne sert qu'un endpoint API JSON. Tout client — navigateur, application mobile, curl, Postman, ou un autre microcontrôleur — peut appeler GET /api/analog pour recevoir la lecture analogique actuelle sous forme de données structurées.
Utilisez ce modèle lorsque vous souhaitez :
- Intégrer les données de l'Arduino UNO Q dans une application web ou un tableau de bord existant
- Interroger la carte depuis une application mobile ou un service back-end
- Tester ou enregistrer des valeurs de capteurs depuis la ligne de commande
Code MCU
Code Python
Étapes Rapides
- Suivez les mêmes étapes de création d'application que l'Exemple 1, mais nommez l'application WebServerAPI.
- Collez le code MCU dans sketch/sketch.ino.
- Collez le code Python dans python/main.py (remplacez tout le contenu existant).
- Ajoutez le Brick WebUI - HTML comme dans l'Exemple 1.
- Cliquez sur Exécuter pour téléverser.
- Testez l'endpoint depuis votre navigateur

- Testez l'endpoint depuis votre terminal :
- Testez l'endpoint depuis n'importe quel client. Par exemple, avec curl :
Réponse de l'API
Sortie Console App Lab
Séparer le HTML du Code Python
Avec l'approche WebUI, votre code Python expose uniquement des endpoints API — il ne sert pas de HTML. C'est une séparation propre par conception :
- Script Python WebUI — expose des endpoints API JSON (par ex. /api/status, /api/led/on)
- Fichier HTML — un fichier autonome que vous ouvrez dans le navigateur. Son JavaScript récupère les données de l'API.
Voici le script Python (identique à l'Exemple 1 — aucune modification nécessaire) :
Voici la page HTML autonome (index.html) qui récupère depuis l'API :
※ Note:
Ouvrez index.html directement dans votre navigateur (depuis votre ordinateur) ou hébergez-le n'importe où. Le JavaScript intégré récupère http://<ARDUINO_UNO_Q_IP>:7000/api/status toutes les deux secondes. Mettez à jour l'adresse IP dans le fichier HTML pour qu'elle corresponde à votre carte.
Serveur Web Arduino UNO Q — Pages Multiples
Pour construire un serveur web avec plusieurs endpoints API (par ex. /api/status, /api/led/on, /api/settings), ajoutez un appel expose_api par endpoint dans le script Python WebUI.
Pour un guide détaillé, consultez le tutoriel Arduino UNO Q - Serveur Web Pages Multiples.
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
Le serveur web est un élément de base pour de nombreux projets utiles sur Arduino UNO Q :
- Tableau de bord des capteurs : Connecter un DHT22 ou BMP280 au MCU et afficher la température, l'humidité et la pression sur une page web stylisée qui se rafraîchit automatiquement toutes les quelques secondes
- Panneau de contrôle des relais : Ajouter des boutons sur la page web pour activer et désactiver les relais — utile pour contrôler les lumières, les ventilateurs ou les pompes depuis un téléphone à la maison
- Visualiseur d'enregistreur de données : Enregistrer les lectures des capteurs dans un fichier CSV du côté Linux et ajouter un endpoint /history qui retourne les 100 dernières lectures sous forme de table HTML
- Ouvre-porte de garage : Exposer une fonction Bridge "trigger" qui pulse un relais pendant une seconde — ajouter un grand bouton sur la page web pour ouvrir ou fermer le garage depuis votre téléphone
- Moniteur d'arrosage des plantes : Lire un capteur d'humidité du sol sur le MCU, afficher le niveau d'humidité sur la page web avec une barre de progression, et afficher une bannière d'avertissement lorsque le sol est trop sec
Relevez le Défi
Prêt à aller plus loin avec le serveur web sur Arduino UNO Q ? Essayez ces défis :
- Facile : Créer un fichier index.html stylisé sur votre ordinateur qui récupère depuis http://<ARDUINO_UNO_Q_IP>:7000/api/status et affiche le temps de fonctionnement et l'état de la LED avec une mise en page propre utilisant Bootstrap ou du CSS personnalisé.
- Moyen : Ajouter un endpoint /api/history au script Python WebUI qui lit les 10 dernières valeurs Bridge depuis une liste en mémoire et les retourne sous forme de tableau JSON — puis afficher l'historique sur la page HTML sous forme de table.
- Avancé : Ajouter un endpoint POST /api/led/toggle au script WebUI qui lit l'état actuel de la LED via Bridge et appelle soit led_on soit led_off pour le basculer — puis ajouter un seul bouton de bascule à la page HTML.