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:

Arduino UNO Q Bewegungsmelder

Erforderliche Hardware

1×Arduino UNO Q
1×USB-Kabel für Arduino UNO Q
1×HC-SR501-Bewegungsmelder
1×Jumper-Kabel
1×(Empfohlen) Schraubklemmenblock-Shield für Arduino Uno
1×(Empfohlen) Sensors/Servo Expansion Shield for Arduino Uno
1×(Empfohlen) Breadboard-Shield für Arduino Uno
1×(Empfohlen) Gehäuse für Arduino Uno
1×(Empfohlen) Prototyping-Grundplatte & Breadboard-Kit für Arduino Uno

Oder Sie können die folgenden Kits kaufen:

1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Über HC-SR501-Bewegungsmelder

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.
HC-SR501-Bewegungsmelder Pinbelegung

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ögerungsreglerSchraube vollständig gegen den Uhrzeigersinn (minimale Verzögerung).
ErkennungsbereichsreglerSchraube vollständig im Uhrzeigersinn (maximaler Bereich).
Wiederholungs-TriggerselektorJumper im Wiederholungs-Triggermodus platzieren.
Arduino-Bewegungsmelder-Anfangseinstellung

Schaltplan

Arduino UNO Q Bewegungsmelder-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.

/* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-q/arduino-uno-q-motion-sensor */ #define SENSOR_PIN 2 // The Arduino UNO Q pin connected to the OUTPUT pin of the motion sensor int motion_state = LOW; int prev_motion_state = LOW; void setup() { pinMode(SENSOR_PIN, INPUT); } void loop() { prev_motion_state = motion_state; motion_state = digitalRead(SENSOR_PIN); if (prev_motion_state == LOW && motion_state == HIGH) { // Motion detected — add your action here } else if (prev_motion_state == HIGH && motion_state == LOW) { // Motion stopped — add your action here } }

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, GNDGND, 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.
Neue App in Arduino App Lab auf Arduino UNO Q 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.
Arduino App Lab App-Ordner und Dateien auf Arduino UNO Q
  • Suchen Sie die Datei sketch/sketch.ino – hier fügen Sie die MCU-Skizze ein.
  • Fügen Sie die Skizze ein: Kopieren Sie den MCU-Code oben und fügen Sie ihn in die Skizzendatei ein. Behalten Sie andere Dateien als Standard bei.
    • Install the library: Click the Add sketch library button (the open book icon with a + sign) in the left sidebar.
    Add sketch library in Arduino App Lab on Arduino UNO Q
    • Search for Arduino_RouterBridge created by Arduino and click the Install button.
    My Apps / DIYables Apps
    Run
    Bricks
    No bricks added...
    Sketch Libraries
    No sketch libra...
    Files
    python
    sketch
    .gitignore
    README.md
    app.yaml
    sketch.ino
    Add sketch library
    Arduino_RouterBridge Arduino

    This library provides a simple RPC bridge for Arduino UNO Q boards, allowing communication between the board and other devices using MsgPack serialization.

    0.4.1
    Install
    More Info
    • Hochladen: Klicken Sie in Arduino App Lab auf die Schaltfläche Ausführen, um zum STM32 zu kompilieren und hochzuladen.
    Klicken Sie in Arduino App Lab auf die Schaltfläche Ausführen auf Arduino UNO Q
    • 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:

    /* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-q/arduino-uno-q-motion-sensor */ #include "Arduino_RouterBridge.h" #define SENSOR_PIN 2 int motion_state = LOW; int prev_motion_state = LOW; void check_motion() { prev_motion_state = motion_state; motion_state = digitalRead(SENSOR_PIN); if (prev_motion_state == LOW && motion_state == HIGH) { Monitor.println("Motion detected!"); } else if (prev_motion_state == HIGH && motion_state == LOW) { Monitor.println("Motion stopped!"); } else { Monitor.println(motion_state == HIGH ? "Motion: ACTIVE" : "Motion: none"); } } void setup() { Bridge.begin(); Monitor.begin(); pinMode(SENSOR_PIN, INPUT); Bridge.provide("check_motion", check_motion); Monitor.println("Motion Sensor Bridge ready"); } void loop() {}

    Python-Skript (Arduino App Lab) – Alle 0,5 Sekunden nach Bewegungsereignissen abfragen:

    /* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-q/arduino-uno-q-motion-sensor */ from arduino.app_utils import * import time def loop(): Bridge.call("check_motion") time.sleep(0.5) App.run(user_loop=loop)
    • 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

    DIYables_Apps
    Stop
    sketch.ino
    1#include "Arduino_RouterBridge.h"
    Serial Monitor
    Python
    Message (Enter to send a message to "Newbiely" on usb(2820070321))
    New Line
    9600 baud
    Motion Sensor Bridge ready Motion detected! Motion stopped! Motion detected! Motion stopped!

    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:

    /* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-q/arduino-uno-q-motion-sensor */ from arduino.app_utils import * import requests import time BOT_TOKEN = "YOUR_BOT_TOKEN" API_URL = f"https://api.telegram.org/bot{BOT_TOKEN}" last_update_id = 0 def send_message(chat_id, text): requests.post(f"{API_URL}/sendMessage", json={"chat_id": chat_id, "text": text}) def get_updates(): global last_update_id resp = requests.get(f"{API_URL}/getUpdates", params={"offset": last_update_id + 1, "timeout": 5}) return resp.json().get("result", []) def loop(): global last_update_id updates = get_updates() for update in updates: last_update_id = update["update_id"] msg = update.get("message", {}) chat_id = msg.get("chat", {}).get("id") text = msg.get("text", "").strip() if text == "/status": status = Bridge.call("check_motion") send_message(chat_id, status if status else "No motion state change since last check.") else: send_message(chat_id, "Commands:\n/status — check current motion sensor state") time.sleep(0.5) App.run(user_loop=loop)
    • 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

    DIYables_Apps
    Stop
    sketch.ino
    1#include "Arduino_RouterBridge.h"
    Serial Monitor
    Python
    [2026-04-29 12:00:01] Telegram: /status [2026-04-29 12:00:01] Motion: none [2026-04-29 12:01:30] Telegram: /status [2026-04-29 12:01:30] Motion detected!
    Telegram
    Telegram 12:45
    Welcome to Telegram!
    ArduinoBot 10:19
    Chatting with Arduino...
    telegram-botfather
    BotFather Yesterday
    Your bot has been created.

    ArduinoBot

    bot
    Today
    /status
    10:15 AM ✓✓
    Motion: none
    10:16 AM
    /status
    10:17 AM ✓✓
    Motion detected!
    10:18 AM

    OpenClaw-Integration

    Sie können OpenClaw auf dieses Tutorial anpassen, indem Sie auf die Anleitung im Arduino Uno Q - OpenClaw-Tutorial verweisen

    Erweiterte Anwendungen

    Dieser Abschnitt widmet sich vertieftem Wissen. Machen Sie sich KEINE Sorgen, wenn Sie es nicht verstehen. Überspringen Sie diesen Abschnitt, wenn er Sie überfordert, und kommen Sie an einem anderen Tag zurück. Lesen Sie weiter mit den folgenden Abschnitten.

    Erkennungsbereichsregler

    Passt die Erkennungsentfernung an (ungefähr 3–7 Meter):

    • Vollständig im Uhrzeigersinn → ~3 Meter.
    • Vollständig gegen den Uhrzeigersinn → ~7 Meter.
    Bewegungsmelder-Erkennungsbereich

    Verzögerungsregler

    Passt die Haltezeit nach Beendigung der Bewegung an:

    • Vollständig im Uhrzeigersinn → ~5 Minuten.
    • Vollständig gegen den Uhrzeigersinn → ~3 Sekunden.
    Bewegungsmelder-Verzögerung anpassen

    Wiederholungs-Triggerselektor

    Bewegungsmelder-Triggerauswahl
    • 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

    Funktionsreferenzen

    ※ UNSERE NACHRICHTEN

    • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!