Arduino UNO Q - Web Server
Arduino UNO Q hat eine integrierte Debian-Linux-MPU, was bedeutet, dass es einen vollständigen Web-Server ausführen kann — kein zusätzlicher Wi-Fi-Shield oder Cloud-Service erforderlich. Dieses Tutorial zeigt Ihnen, wie Sie einen Python-WebUI-Web-Server auf dem Arduino UNO Q in drei schrittweisen Beispielen ausführen, beginnend mit der einfachsten möglichen Seite und aufbauend auf einer sauberen API.
In diesem Tutorial lernen Sie:
- Wie Sie eine rohe Sensorablesung in einer minimalen HTML-Seite anzeigen (kein CSS, kein JavaScript)
- Wie Sie eine vollständige Web-Seite aus einem Asset-Ordner bereitstellen (HTML + CSS + JavaScript)
- Wie Sie MCU-Sensordaten als reinen JSON-API-Endpunkt bereitstellen
- Wie die Bridge die MCU-Skizze und den Python-Web-Server verbindet
- Wie Sie einen Potentiometer an den analogen Pin A0 auf dem Arduino UNO Q verdrahten
- Wie Sie den WebUI-Brick in Arduino App Lab hinzufügen, um HTTP-Bereitstellung automatisch zu handhaben

Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
| 1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
So funktioniert der Arduino UNO Q Web Server
Arduino UNO Q kombiniert zwei Prozessoren:
- STM32 MCU — führt Ihre Arduino-Skizze (C/C++) in Echtzeit aus. Sie liest Sensoren, steuert Relais, treibt Motoren an und mehr.
- Qualcomm MPU — führt vollständiges Debian Linux aus. Sie verbindet sich mit Wi-Fi und kann einen Python-WebUI-Web-Server ausführen, den jeder Browser in Ihrem Netzwerk erreichen kann.
Die beiden Prozessoren kommunizieren über die Bridge. Der MCU macht Hardwarefunktionen über Bridge verfügbar, und der Python-Web-Server auf der MPU ruft diese Funktionen auf, um Sensorablesung zu erhalten. Ein Browser ruft dann die Daten ab — entweder als reine HTML-Seite, als gestaltete Web-Seite oder als JSON-API-Antwort.
※ Notiz:
Kein externer Wi-Fi-Shield ist erforderlich. Der Arduino UNO Q hat eingebautes Wi-Fi auf der Linux-Seite.
Schaltplan

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Arduino UNO Q Code
Arduino UNO Q hat zwei Prozessoren. Für einen Web-Server schreiben Sie:
- Eine MCU-Skizze, die den analogen Pin liest und den Wert über Bridge bereitstellt
- Ein Python-WebUI-Skript auf der Linux-MPU, das den Wert über HTTP bereitstellt
Alle drei folgenden Beispiele verwenden die gleiche MCU-Skizze. Nur der Python-Code (und optionale HTML-Assets) unterscheiden sich.
Beispiel 1 — Einfache Web-Seite (Kein CSS, Kein JavaScript)
Der einfachste mögliche Web-Server: öffnen Sie einen Browser, besuchen Sie die IP des Boards und sehen Sie die rohe Analogablesung in reiner HTML. Kein Styling, kein automatisches Refresh — nur die Zahl.
Die MCU-Skizze liest Pin A0 und stellt den Wert durch eine Bridge-Funktion namens get_analog bereit. Der Python-Server ruft diese Funktion auf, wenn ein Browser / anfordert, und gibt eine rohe HTML-Antwort zurück.
MCU-Code
Python-Code
Schnelle Schritte
- Verbinden: Stecken Sie den Arduino UNO Q mit einem USB-C-Kabel in Ihren Computer ein und verdrahten Sie den Potentiometer mit A0 wie im Abschnitt Schaltplan beschrieben.
- Mit Wi-Fi verbinden: Stellen Sie sicher, dass Arduino UNO Q mit Ihrem Wi-Fi-Netzwerk verbunden ist. Verwenden Sie das Netzwerk-Symbol in Arduino App Lab, um sich zuerst zu verbinden.
- Öffnen Sie Arduino App Lab: Starten Sie Arduino App Lab und warten Sie, bis es Ihren Arduino UNO Q erkennt.
- Erstellen Sie eine neue App: Klicken Sie auf die Schaltfläche Neue App erstellen.

- Geben Sie der App einen Namen, z. B.: WebServerSimple
- Klicken Sie auf Erstellen, um zu bestätigen.

- Fügen Sie die MCU-Skizze ein: Kopieren Sie den MCU-Code oben und fügen Sie ihn in sketch/sketch.ino ein.
- Fügen Sie den Python-Code ein: Öffnen Sie python/main.py in der App. Wählen Sie alle vorhandenen Inhalte aus und löschen Sie sie, fügen Sie dann den Python-Web-Server-Code oben ein.
- 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.
- Fügen Sie den WebUI-Brick hinzu: Klicken Sie auf die Schaltfläche Brick hinzufügen in der Editor-Seitenleiste, um den Bricks-Katalog zu öffnen.

Suchen Sie WebUI - HTML in der Liste und wählen Sie es aus, folgen Sie dann eventuellen Konfigurationsanforderungen.

Arduino App Lab fügt den Brick-Eintrag automatisch zu Ihrer app.yaml-Datei hinzu — bearbeiten Sie diesen Eintrag nicht manuell.
※ Notiz:
Ein Brick ist ein vorgefertigter, konfigurierbarer Service, der auf der Arduino UNO Q Linux-Seite ausgeführt wird. Der WebUI - HTML Brick verwaltet den HTTP-Server, sodass Sie Flask oder ein anderes Web-Framework nicht manuell installieren müssen. Siehe About Bricks für weitere Informationen.
- Hochladen: Klicken Sie auf die Schaltfläche Ausführen in Arduino App Lab, um zu kompilieren und hochzuladen.

- Öffnen Sie einen Web-Browser auf Ihrem Telefon oder PC und navigieren Sie zu: http://
:7000/
Ersetzen Sie <ARDUINO_UNO_Q_IP> durch die IP-Adresse Ihres Arduino UNO Q.
- Sie sehen eine reine HTML-Seite, die den aktuellen rohen ADC-Wert von A0 anzeigt.
- Drehen Sie den Potentiometer-Knopf und aktualisieren Sie die Browser-Seite — die Zahl ändert sich.
App Lab-Konsolenausgabe
Browser-Ausgabe
Öffnen Sie http://<ARDUINO_UNO_Q_IP>:7000/ in Ihrem Browser. Sie sehen eine reine HTML-Seite wie:
_RENDER

Web Server mit Asset-Ordner (HTML + CSS + JavaScript)
Dieses Beispiel separiert die Front-End-Dateien in einen assets/-Ordner, genau wie im Beispiel blink-with-ui. Der Python-Server stellt einen /api/analog-Endpunkt bereit; die index.html im assets-Ordner ruft diesen Endpunkt alle Sekunde mit JavaScript auf und aktualisiert den angezeigten Wert — kein Seiten-Refresh erforderlich.
Die MCU-Skizze ist identisch mit Beispiel 1. Die Unterschiede sind:
- Der Python-Code stellt /api/analog statt einer rohen HTML-Route bereit.
- Die assets/index.html-Datei enthält HTML, CSS und JavaScript.
- Der WebUI-Brick stellt automatisch alle Dateien im assets/-Ordner unter der Root-URL (/) bereit.
MCU-Code
Python-Code
HTML (assets/index.html)
Platzieren Sie diese Datei im assets/-Ordner Ihrer App:
Schnelle Schritte
- Folgen Sie denselben App-Erstellungsschritten wie in Beispiel 1, nennen Sie aber die App WebServerAssets.
- Fügen Sie den MCU-Code in sketch/sketch.ino ein.
- Fügen Sie den Python-Code in python/main.py ein (ersetzen Sie alle vorhandenen Inhalte).
- Öffnen Sie (oder erstellen Sie) im assets/-Ordner index.html und fügen Sie den HTML-Code oben ein.
- Fügen Sie den WebUI - HTML-Brick wie in Beispiel 1 hinzu.
- Klicken Sie auf Ausführen, um hochzuladen.
- Öffnen Sie http://<ARDUINO_UNO_Q_IP>:7000/ in Ihrem Browser.
- Die Seite lädt die gestaltete Web-Seite aus dem assets-Ordner und aktualisiert den Analog-Wert automatisch alle Sekunde.
- Drehen Sie den Potentiometer — der Wert auf der Seite ändert sich ohne Aktualisierung.
App Lab-Konsolenausgabe
API-Antwort
Das JavaScript in index.html ruft GET /api/analog auf. Sie können diesen Endpunkt auch direkt testen:

Web Server als API (Reines JSON)
Dieses Beispiel streicht alle HTML und stellt nur einen JSON-API-Endpunkt bereit. Jeder Client — Browser, Mobile App, curl, Postman oder ein anderer Mikrocontroller — kann GET /api/analog aufrufen, um die aktuelle Analogablesung als strukturierte Daten zu erhalten.
Verwenden Sie dieses Muster, wenn Sie:
- Arduino UNO Q-Daten in eine vorhandene Web-App oder ein Dashboard integrieren möchten
- Das Board von einer Mobile App oder einem Back-End-Service abfragen möchten
- Sensorwerte von der Befehlszeile aus testen oder protokollieren möchten
MCU-Code
Python-Code
Schnelle Schritte
- Folgen Sie denselben App-Erstellungsschritten wie in Beispiel 1, nennen Sie aber die App WebServerAPI.
- Fügen Sie den MCU-Code in sketch/sketch.ino ein.
- Fügen Sie den Python-Code in python/main.py ein (ersetzen Sie alle vorhandenen Inhalte).
- Fügen Sie den WebUI - HTML-Brick wie in Beispiel 1 hinzu.
- Klicken Sie auf Ausführen, um hochzuladen.
- Testen Sie den Endpunkt von Ihrem Browser

- Testen Sie den Endpunkt von Ihrem Terminal:
- Testen Sie den Endpunkt von jedem Client aus. Zum Beispiel mit curl:
API-Antwort
App Lab-Konsolenausgabe
HTML von Python-Code trennen
Mit dem WebUI-Ansatz stellt Ihr Python-Code nur API-Endpunkte bereit — er stellt HTML nicht bereit. Dies ist eine saubere Trennung nach Design:
- Python WebUI-Skript — stellt JSON-API-Endpunkte bereit (z. B. /api/status, /api/led/on)
- HTML-Datei — eine eigenständige Datei, die Sie im Browser öffnen. Sein JavaScript ruft Daten von der API ab.
Hier ist das Python-Skript (identisch mit Beispiel 1 — keine Änderungen erforderlich):
Hier ist die eigenständige HTML-Seite (index.html), die von der API abfruft:
※ Notiz:
Öffnen Sie index.html direkt in Ihrem Browser (von Ihrem Computer) oder hosten Sie es überall. Das JavaScript darin ruft alle zwei Sekunden http://<ARDUINO_UNO_Q_IP>:7000/api/status ab. Aktualisieren Sie die IP-Adresse in der HTML-Datei, um Ihr Board zu entsprechen.
Arduino UNO Q Web Server — Mehrere Seiten
Um einen Web-Server mit mehreren API-Endpunkten zu erstellen (z. B. /api/status, /api/led/on, /api/settings), fügen Sie einen expose_api-Aufruf pro Endpunkt im Python-WebUI-Skript hinzu.
Für eine detaillierte Anleitung siehe das Tutorial Arduino UNO Q - Web Server Multiple Pages.
OpenClaw
You can adapt the OpenClaw to this tutorial by refering the instruction on Arduino Uno Q - OpenClaw Tutorial
Projektideen
Der Web-Server ist ein Baustein für viele nützliche Projekte auf Arduino UNO Q:
- Sensor-Dashboard: Verbinden Sie einen DHT22 oder BMP280 mit der MCU und zeigen Sie Temperatur, Luftfeuchtigkeit und Druck auf einer gestalteten Web-Seite an, die sich alle paar Sekunden automatisch aktualisiert
- Relais-Bedienfeld: Fügen Sie Schaltflächen auf der Web-Seite hinzu, um Relais ein- und auszuschalten — nützlich für die Steuerung von Lichtern, Lüftern oder Pumpen von einem Telefon zu Hause aus
- Datenlogger-Viewer: Protokollieren Sie Sensorablesung in einer CSV-Datei auf der Linux-Seite und fügen Sie einen /history-Endpunkt hinzu, der die letzten 100 Ablesen als HTML-Tabelle zurückgibt
- Garagentoröffner: Stellen Sie eine „trigger" Bridge-Funktion bereit, die ein Relais für eine Sekunde pulsiert — fügen Sie eine einzelne große Schaltfläche auf der Web-Seite hinzu, um das Garagentor von Ihrem Telefon aus zu öffnen oder zu schließen
- Pflanzen-Bewässerungsmonitor: Lesen Sie einen Bodenfeuchtesensor auf der MCU, zeigen Sie die Feuchtigkeitsstufe auf der Web-Seite mit einer Fortschrittsanzeige an und zeigen Sie ein Warnbanner an, wenn der Boden zu trocken ist
Fordern Sie sich selbst heraus
Bereit, mit dem Web-Server auf Arduino UNO Q weiter zu gehen? Versuchen Sie diese Herausforderungen:
- Einfach: Erstellen Sie eine gestaltete index.html-Datei auf Ihrem Computer, die von http://<ARDUINO_UNO_Q_IP>:7000/api/status abruft und die Betriebszeit und LED-Status mit einem sauberen Layout unter Verwendung von Bootstrap oder benutzerdefiniertem CSS anzeigt.
- Mittel: Fügen Sie einen /api/history-Endpunkt zum Python-WebUI-Skript hinzu, das die letzten 10 Bridge-Werte aus einer Liste im Speicher liest und sie als JSON-Array zurückgibt — zeigen Sie dann die Historie auf der HTML-Seite als Tabelle an.
- Fortgeschritten: Fügen Sie einen /api/led/toggle POST-Endpunkt zum WebUI-Skript hinzu, der den aktuellen LED-Status über Bridge liest und entweder led_on oder led_off aufruft, um ihn zu wechseln — fügen Sie dann eine einzelne Toggle-Schaltfläche zur HTML-Seite hinzu.