Arduino UNO Q - Ultraschallsensor
Dieses Tutorial zeigt Ihnen, wie Sie ein Arduino UNO Q mit einem HC-SR04-Ultraschallsensor verwenden, um die Entfernung zu einem Objekt zu messen. Sie werden lernen:
- Wie Sie einen Ultraschallsensor mit einem Arduino UNO Q verbinden
- Wie Sie den MCU programmieren, um Entfernungswerte zu lesen
- Wie Sie Rauschen aus Entfernungsmessungen filtern
- Wie Sie die Bridge verwenden, um die Entfernung von Linux zu lesen und sie über einen Monitor anzuzeigen
- Wie Sie die Entfernung remote über Telegram lesen

Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
| 1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Über den Ultraschallsensor
Der HC-SR04-Ultraschallsensor misst die Entfernung zu Objekten mit Schallwellen. Er sendet eine Schallwelle aus, die der Mensch nicht hören kann, und wartet dann auf das Echo, wenn der Schall zurückprallt. Durch die Messung der Echtzeit des Hin- und Rückwegs berechnet der Sensor die Entfernung.
Pinbelegung
Der HC-SR04 hat vier Pins:
- VCC-Pin: Mit VCC (5V) verbinden.
- GND-Pin: Mit GND (0V) verbinden.
- TRIG-Pin: Mit einem MCU-Ausgangspin verbinden, um einen Mesimpuls auszulösen.
- ECHO-Pin: Mit einem MCU-Eingangspin verbinden, um die Echo-Impulsdauer zu empfangen.

Schaltplan

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
MCU-Code
Das Arduino UNO Q hat zwei Prozessoren: den STM32 MCU (übernimmt die Echtzeit-Hardwaresteuerung) und die Qualcomm MPU (führt Debian Linux aus). In diesem Abschnitt wird nur der STM32 MCU programmiert – die Linux-Seite bleibt untätig. Ein späterer Abschnitt zeigt, wie beide Prozessoren zusammenarbeiten.
Schnelle Schritte
- Erste Zeit mit Arduino UNO Q? Folgen Sie dem Tutorial Getting Started with Arduino UNO Q, um Ihre Entwicklungsumgebung vorzubereiten, bevor Sie fortfahren.
- Komponenten verdrahten: VCC → 5V, GND → GND, TRIG → Pin 9, ECHO → Pin 8 verbinden.
- Verbinden: Schließen Sie das Arduino UNO Q mit einem USB-C-Kabel an Ihren Computer an.
- Arduino App Lab öffnen: Starten Sie die Arduino App Lab und warten Sie, bis Ihr Arduino UNO Q erkannt wird.
- Neue App erstellen: Klicken Sie auf die Schaltfläche Create New App.

- Geben Sie der App einen Namen, z. B.: DIYables_Ultrasonic
- Klicken Sie auf Create, um zu bestätigen.
- Sie sehen einen Satz von Ordnern und Dateien in Ihrer neuen App.

- Finden Sie die Datei sketch/sketch.ino – hier werden Sie den MCU-Sketch einfügen.
- 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.
- Hochladen: Klicken Sie in Arduino App Lab auf die Schaltfläche Run, um den Code zu kompilieren und auf den STM32 hochzuladen.

- Test: Halten Sie Ihre Hand vor den Sensor. Verwenden Sie den Bridge-Abschnitt unten, um die Entfernungswerte über einen Monitor anzuzeigen.
Wie man Rauschen aus Ultraschallmessungen filtert
Entfernungswerte vom HC-SR04 enthalten Rauschen. In einigen Anwendungen können verrauschte Daten zu falschem Verhalten führen. Verwenden Sie diese Methode zum Filtern:
- Nehmen Sie 20 Messungen vor und speichern Sie sie in einem Array.
- Sortieren Sie das Array vom kleinsten zum größten.
- Entfernen Sie die 5 kleinsten und 5 größten Werte (werden als Rauschen behandelt).
- Berechnen Sie den Durchschnitt der verbleibenden 10 mittleren Werte.
Linux + MCU Bridge-Programmierung
Das Arduino UNO Q hat zwei Prozessoren, die zusammenarbeiten: die MPU (Qualcomm, führt Debian Linux aus) und der MCU (STM32, führt Zephyr OS mit Ihrem Arduino-Sketch aus). Sie kommunizieren über RPC über die Arduino_RouterBridge-Bibliothek – nie über rohe serielle Anschlüsse.
- Der Ultraschallsensor ist mit dem MCU (STM32) verbunden – TRIG auf Pin 9, ECHO auf Pin 8.
- Die MPU kann den Sensor nicht direkt lesen – sie ruft Bridge.call("read_distance") auf dem MCU auf, was eine Messung auslöst und das Ergebnis auf dem Monitor ausgibt.
- Die MPU hat Wi-Fi – da die MPU vollständiges Debian Linux mit Wi-Fi ausführt, kann sie Telegram-Befehle empfangen und Messwerte remote senden.
- Kommunikation: Bridge.call() auf der Linux-Seite ruft Bridge.provide_safe() auf der MCU-Seite auf (da digitalWrite() verwendet wird, um den TRIG-Impuls auszulösen)
- ⚠️ Reserviert: /dev/ttyHS1 (Linux) und Serial1 (MCU) werden von Arduino Router verwendet – öffnen Sie sie nie direkt
Kurz gesagt: MPU fordert Lesung an → MCU misst Entfernung → MCU gibt Ergebnis auf Monitor aus.
MCU-Sketch – Ultraschallsensor mit Bridge und Monitor-Ausgabe:
Python-Skript (Arduino App Lab) – Fordern Sie jede Sekunde eine Entfernungslesung von Linux an:
- Hinweis: Stellen Sie sicher, dass Bridge.begin() im MCU-Sketch aufgerufen wird und der Sketch hochgeladen wird, bevor Sie das Python-Skript auf der Linux-Seite ausführen.
- ⚠️ Warnung: Öffnen Sie nie direkt /dev/ttyHS1 (auf Linux) oder verwenden Sie Serial1 (auf MCU) in Ihrem Code – diese sind vom Arduino Router reserviert und der Zugriff darauf beschädigt die Bridge.
Schnelle Schritte
- MCU-Sketch hochladen: Öffnen Sie Arduino App Lab, erstellen Sie eine neue App, fügen Sie den Bridge MCU-Sketch in sketch/sketch.ino ein, installieren Sie die Arduino_RouterBridge-Bibliothek und klicken Sie auf Run.
- Python-Skript hinzufügen: Fügen Sie den Python-Code oben auf der Registerkarte Python derselben App ein.
- App ausführen: Klicken Sie auf Run – Python fordert jede Sekunde eine Entfernungslesung an.
- Konsole überprüfen: Öffnen Sie die Registerkarte Konsole → MCU Monitor-Unterkarte, um die Entfernungswerte anzuzeigen.
App Lab Konsolenausgabe
Telegram-Integration
Lesen Sie den Ultraschallsensor von überall aus remote über Telegram.
Wenn Sie noch keinen Telegram-Bot haben, siehe How to Create a Telegram Bot, um Ihr Bot-Token zu erhalten, bevor Sie fortfahren.
MCU-Sketch: Behalten Sie den gleichen MCU-Sketch aus dem vorherigen Bridge-Abschnitt – keine Änderungen erforderlich. Stellen Sie sicher, dass er bereits auf dem STM32 hochgeladen und ausgeführt wird, bevor Sie fortfahren.
Python-Skript (Arduino App Lab) – Telegram-Bot für Ultraschall-Entfernungslesung:
- Hinweis: Ersetzen Sie YOUR_BOT_TOKEN durch das von @BotFather auf Telegram erhaltene Token.
- Senden Sie /read – der MCU misst die Entfernung und der Bot antwortet mit dem Wert in cm.
Schnelle Schritte
- MCU-Sketch hochladen: Verwenden Sie den Bridge MCU-Sketch aus dem vorherigen Abschnitt (laden Sie ihn zuerst hoch, falls nicht bereits geschehen).
- Telegram-Skript einfügen: Kopieren Sie den Python-Code oben auf die Registerkarte Python Ihrer App in Arduino App Lab.
- Token setzen: Ersetzen Sie YOUR_BOT_TOKEN im Skript durch Ihr eigentliches Bot-Token.
- App ausführen: Klicken Sie auf Run – der Bot beginnt, auf Telegram-Nachrichten zu lauschen.
- Test: Senden Sie /read – der Bot antwortet mit der gemessenen Entfernung in cm.
App Lab Konsolenausgabe
ArduinoBot
OpenClaw-Integration
Sie können die OpenClaw an dieses Tutorial anpassen, indem Sie die Anleitung auf Arduino Uno Q - OpenClaw Tutorial beachten
Ultraschallsensor-Anwendungen
- Kollisionsvermeidung
- Pegelerkennung (Wassertank, Getreidesilo)
- Näherungserkennung
- Objektzählung auf einem Förderband
- Parkassistent mit Entfernungsanzeige
Herausfordere dich selbst
- Einfach: Fügen Sie einen Schwellenwert hinzu – geben Sie "Object nearby!" aus, wenn die Entfernung unter 10 cm fällt
- Mittel: Senden Sie den tatsächlichen Entfernungswert (in cm) direkt an den Telegram-Benutzer
- Fortgeschrittene: Implementieren Sie den Rauschfilter aus dem obigen Abschnitt im Bridge MCU-Sketch und vergleichen Sie gefilterte versus rohe Messwerte über den Monitor