Arduino UNO Q - Bewegungsmelder
Diese Anleitung zeigt Ihnen, wie Sie einen HC-SR501 PIR-Bewegungsmelder mit Arduino UNO Q verwenden, um Bewegungen zu erkennen. Sie werden lernen:
- Wie der HC-SR501-Bewegungsmelder funktioniert
- Wie der Bewegungsmelder mit Arduino UNO Q verbunden wird
- Wie die MCU programmiert wird, um Bewegungsstart- und Bewegungsstoppvorgänge zu erkennen
- Wie man die Bridge verwendet, um Bewegungsereignisse von Linux über Monitor zu melden
- Wie Sie Bewegungsbenachrichtigungen remote über Telegram erhalten

Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
| 1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Über HC-SR501-Bewegungsmelder

Der HC-SR501 PIR-Sensor erkennt Bewegungen von Menschen oder Tieren. Er wird häufig in der Beleuchtungsautomation, Türsteuerung, Rolltreppen und Einbruchserkennung eingesetzt.
Pinbelegung
Der HC-SR501 hat drei Pins:
- GND-Pin: Mit GND (0V) verbinden.
- VCC-Pin: Mit VCC (5V) verbinden.
- OUTPUT-Pin: Sendet LOW, wenn keine Bewegung erkannt wird, HIGH, wenn Bewegung erkannt wird. Mit einem MCU-Digitaleingangspin verbinden.

Der Sensor hat auch einen Jumper und zwei Potentiometer zum Anpassen der Empfindlichkeit und Verzögerung. Beginnen Sie mit den Standardeinstellungen – siehe den Abschnitt Erweiterte Anwendungen für Details.
Funktionsweise
Der HC-SR501 erkennt Bewegungen durch Erfassung von Infrarotstrahlungsänderungen. Um eine Erkennung auszulösen, muss ein Objekt:
- Sich bewegen
- Infrarotenergie ausstrahlen (Menschen und Tiere tun dies natürlicherweise)
Das Verhalten des OUTPUT-Pins:
- Keine Bewegung: OUTPUT ist LOW.
- Bewegung erkannt: OUTPUT wechselt von LOW zu HIGH.
- Bewegung stoppt: OUTPUT wechselt von HIGH zu LOW.
Anfängliche Sensoreinstellung
| Verzögerungsregler | Schraube vollständig gegen den Uhrzeigersinn (minimale Verzögerung). |
| Erkennungsbereichsregler | Schraube vollständig im Uhrzeigersinn (maximaler Bereich). |
| Wiederholungs-Triggerselektor | Jumper im Wiederholungs-Triggermodus platzieren. |

Schaltplan

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
MCU-Code
Der Arduino UNO Q hat zwei Prozessoren: die STM32 MCU (kümmert sich um die Hardware-Echtzeitkontrolle) und die Qualcomm MPU (läuft Debian Linux). In diesem Abschnitt wird nur die STM32 MCU programmiert – die Linux-Seite bleibt untätig. Ein späterer Abschnitt zeigt, wie beide Prozessoren zusammen arbeiten.
Schnelle Schritte
- Zum ersten Mal mit Arduino UNO Q? Befolgen Sie das Erste Schritte mit Arduino UNO Q-Tutorial, um Ihre Entwicklungsumgebung vorzubereiten, bevor Sie fortfahren.
- Verbinden Sie die Komponenten: VCC → 5V, GND → GND, OUTPUT → Pin 2 verbinden.
- Verbindung herstellen: Stecken Sie den Arduino UNO Q mit einem USB-C-Kabel an Ihren Computer an.
- Ö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, zum Beispiel: DIYables_MotionSensor
- Klicken Sie auf Erstellen, um zu bestätigen.
- Sie sehen einen Satz von Ordnern und Dateien, die in Ihrer neuen App generiert werden.

- Suchen Sie die Datei sketch/sketch.ino – hier fügen Sie die MCU-Skizze 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.
- Hochladen: Klicken Sie in Arduino App Lab auf die Schaltfläche Ausführen, um zum STM32 zu kompilieren und hochzuladen.

- Test: Gehen Sie vor dem Sensor. Verwenden Sie den Bridge-Abschnitt unten, um Bewegungsereignisse im Monitor anzuzeigen.
Linux + MCU Bridge-Programmierung
Der Arduino UNO Q hat zwei Prozessoren, die zusammen arbeiten: die MPU (Qualcomm, läuft Debian Linux) und die MCU (STM32, läuft Zephyr OS mit Ihrem Arduino-Sketch). Sie kommunizieren über RPC über die Arduino_RouterBridge-Bibliothek – niemals über Raw-Serielle Ports.
- Der Bewegungsmelder ist mit der MCU (STM32) verbunden – OUTPUT-Pin auf Pin 2.
- Der MPU kann den Sensor nicht direkt auslesen – er ruft Bridge.call("check_motion") auf der MCU auf, die den Sensor liest und alle Bewegungsübergänge zum Monitor meldet.
- Der MPU hat Wi-Fi – Da der MPU vollständiges Debian Linux mit Wi-Fi ausführt, kann er Bewegungsbenachrichtigungen an Telegram weiterleiten.
- Kommunikation: Bridge.call() auf der Linux-Seite ruft Bridge.provide() auf der MCU-Seite auf (da nur digitalRead() verwendet wird – keine Hardware-Ausgabeschreiben)
- ⚠️ Reserviert: /dev/ttyHS1 (Linux) und Serial1 (MCU) werden vom Arduino Router verwendet – öffnen Sie sie niemals direkt
Kurz gesagt: MPU fragt Sensor ab → MCU liest Pin und meldet Übergänge → Monitor zeigt Bewegungsereignisse.
MCU-Sketch – Bewegungsmelder-Erkennung mit Bridge:
Python-Skript (Arduino App Lab) – Alle 0,5 Sekunden nach Bewegungsereignissen abfragen:
- 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 niemals direkt /dev/ttyHS1 (auf Linux) oder verwenden Sie Serial1 (auf MCU) in Ihrem Code – diese sind vom Arduino Router reserviert und der Zugriff darauf unterbricht 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 Ausführen.
- Python-Skript hinzufügen: Fügen Sie den Python-Code oben auf der Python-Registerkarte derselben App ein.
- App ausführen: Klicken Sie auf Ausführen – Python fragt den Bewegungsmelder alle 0,5 Sekunden ab.
- Konsole überprüfen: Öffnen Sie die Registerkarte Konsole → Unterregisterkarte MCU Monitor und gehen Sie vor dem Sensor.
App Lab Konsolenausgabe
Telegram-Integration
Erhalten Sie Bewegungsbenachrichtigungen über Telegram.
Wenn Sie noch keinen Telegram-Bot haben, siehe So erstellen Sie einen 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 hochgeladen und auf dem STM32 ausgeführt wird, bevor Sie fortfahren.
Python-Skript (Arduino App Lab) – Telegram-Bot für Bewegungserkennung:
- Hinweis: Ersetzen Sie YOUR_BOT_TOKEN durch das Token, das Sie von @BotFather auf Telegram erhalten haben.
- Senden Sie /status, um eine manuelle Überprüfung des Bewegungsmelderzustands auszulösen.
Schnelle Schritte
- MCU-Sketch hochladen: Verwenden Sie den Bridge MCU-Sketch aus dem vorherigen Abschnitt (laden Sie ihn zuerst hoch, falls noch nicht geschehen).
- Telegram-Skript einfügen: Kopieren Sie den Python-Code oben auf die Python-Registerkarte Ihrer App in Arduino App Lab.
- Ihr Token festlegen: Ersetzen Sie YOUR_BOT_TOKEN im Skript durch Ihr tatsächliches Bot-Token.
- App ausführen: Klicken Sie auf Ausführen – der Bot beginnt, auf Telegram-Nachrichten zu warten.
- Testen Sie es: Senden Sie /status – der Bot antwortet mit dem aktuellen Bewegungszustand.
App Lab Konsolenausgabe
ArduinoBot
OpenClaw-Integration
Sie können OpenClaw auf dieses Tutorial anpassen, indem Sie auf die Anleitung im Arduino Uno Q - OpenClaw-Tutorial verweisen
Erweiterte Anwendungen
Erkennungsbereichsregler
Passt die Erkennungsentfernung an (ungefähr 3–7 Meter):
- Vollständig im Uhrzeigersinn → ~3 Meter.
- Vollständig gegen den Uhrzeigersinn → ~7 Meter.

Verzögerungsregler
Passt die Haltezeit nach Beendigung der Bewegung an:
- Vollständig im Uhrzeigersinn → ~5 Minuten.
- Vollständig gegen den Uhrzeigersinn → ~3 Sekunden.

Wiederholungs-Triggerselektor

- Einzelner Triggermodus: OUTPUT geht HIGH für time_delay, dann LOW für 3 Sekunden, wiederholt sich während Bewegung fortbesteht.
- Wiederholbarer Triggermodus: OUTPUT bleibt für die volle Dauer der Bewegung plus time_delay HIGH. Wird für die meisten Anwendungen empfohlen.
※ Notiz:
Verwenden Sie für die meisten Anwendungen den Wiederholbaren Triggermodus. In der praktischen Anwendung:
- Geräte schalten sich EIN, wenn eine Person erkannt wird.
- Geräte schalten sich AUS, nachdem eine Verzögerung abgelaufen ist, nachdem die Person das Zimmer verlässt.
Anwendungs-/Projektideen
- Intelligente Beleuchtung: Schalten Sie Lichter ein, wenn jemand einen Raum betritt, aus, wenn er geht
- Sicherheitsmeldung: Senden Sie eine Telegram-Nachricht, wenn Bewegung erkannt wird
- Belegungszähler: Zählen Sie, wie oft Bewegung pro Stunde beginnt
- Energiesparer: Schalten Sie Geräte aus, nachdem mehrere Minuten lang keine Bewegung erkannt wurde
Fordern Sie sich selbst heraus
- Einfach: Führen Sie eine LED dreimal auf, wenn Bewegung erkannt wird
- Mittel: Protokollieren Sie Bewegungsereignisse mit Zeitstempel in eine Datei auf der MPU
- Erweitert: Senden Sie automatisch (ohne /status zu benötigen) eine Telegram-Benachrichtigung, wenn Bewegung erkannt wird