Arduino UNO Q - Bewegungssensor steuert Relais

In diesem Handbuch erfahren Sie, wie Sie einen HC-SR501-Bewegungssensor verwenden, um ein Relais automatisch zu aktivieren, wenn eine Bewegung erkannt wird, und es zu deaktivieren, wenn die Bewegung stoppt, mit Arduino UNO Q.

Arduino UNO Q Bewegungssensor Relais

Erforderliche Hardware

1×Arduino UNO Q
1×USB-Kabel für Arduino Uno Q
1×HC-SR501 Bewegungssensor
1×Relais
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 Bewegungssensor und Relais

Erfahren Sie mehr über den Bewegungssensor und das Relais in den Tutorials unten:

Schaltplan

Arduino UNO Q Bewegungssensor Relais 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 (verwaltet die Echtzeitkontrolle der Hardware) und die Qualcomm-MPU (führt Debian Linux aus). In diesem Abschnitt wird nur die STM32-MCU programmiert – die Linux-Seite bleibt inaktiv. Ein späterer Abschnitt zeigt, wie beide Prozessoren zusammenarbeiten.

/* * 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-relay */ #define MOTION_SENSOR_PIN 7 // The Arduino UNO Q pin connected to the OUTPUT pin of the motion sensor #define RELAY_PIN 9 // The Arduino UNO Q pin connected to the IN pin of the relay int motion_state = LOW; int motion_state_prev = LOW; void setup() { pinMode(MOTION_SENSOR_PIN, INPUT); pinMode(RELAY_PIN, OUTPUT); digitalWrite(RELAY_PIN, LOW); // relay off initially } void loop() { motion_state_prev = motion_state; motion_state = digitalRead(MOTION_SENSOR_PIN); if (motion_state_prev == LOW && motion_state == HIGH) { // Motion detected digitalWrite(RELAY_PIN, HIGH); // turn relay on } else if (motion_state_prev == HIGH && motion_state == LOW) { // Motion stopped digitalWrite(RELAY_PIN, LOW); // turn relay off } }

Schnelle Schritte

  • Erste Schritte mit Arduino UNO Q? Folgen Sie dem Getting Started with Arduino UNO Q Tutorial, um Ihre Entwicklungsumgebung einzurichten, bevor Sie fortfahren.
  • Komponenten verdrahten: Verbinden Sie Sensor OUTPUT → Pin 7, Relais IN → Pin 9.
  • Verbinden: Verbinden Sie Arduino UNO Q mit einem USB-C-Kabel mit Ihrem Computer.
  • Arduino App Lab öffnen: Starten Sie Arduino App Lab und warten Sie, bis es Ihren Arduino UNO Q erkennt.
  • Neue App erstellen: Klicken Sie auf die Schaltfläche Create New App.
Create New App in Arduino App Lab on Arduino UNO Q
  • Geben Sie der App einen Namen, z. B. DIYables_MotionRelay
  • Klicken Sie auf Create, um zu bestätigen.
  • Sie sehen einen Satz von Ordnern und Dateien, die in Ihrer neuen App generiert wurden.
Arduino App Lab App folders and files on Arduino UNO Q
  • Finden Sie die Datei sketch/sketch.ino – hier werden Sie die MCU-Skizze einfügen.
  • Skizze einfügen: Kopieren Sie den MCU-Code oben und fügen Sie ihn in die Skizzendatei ein. Behalten Sie andere Dateien im Standardzustand.
    • 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 Run-Taste, um zu kompilieren und auf STM32 hochzuladen.
    Click Run button in Arduino App Lab on Arduino UNO Q
    • Test: Gehen Sie vor dem Sensor vorbei – das Relais sollte sich aktivieren, wenn eine Bewegung erkannt wird, und deaktivieren, wenn die Bewegung stoppt.

    Linux + MCU Bridge-Programmierung

    Der Arduino UNO Q hat zwei Prozessoren, die zusammenarbeiten: die MPU (Qualcomm, führt Debian Linux aus) und die MCU (STM32, führt Zephyr OS mit Ihrer Arduino-Skizze aus). Sie kommunizieren über RPC über die Arduino_RouterBridge-Bibliothek – niemals über Raw-Serienports.

    • Der Bewegungssensor und das Relais sind beide mit der MCU (STM32) verbunden – Sensor an Pin 7, Relais an Pin 9.
    • Die MPU kann sie nicht direkt steuern – sie ruft Bridge.call("check_motion") auf der MCU auf, die den Sensor liest und das Relais entsprechend aktualisiert.
    • Die MPU hat Wi-Fi – da die MPU vollständiges Debian Linux mit Wi-Fi ausführt, kann sie den Relaiszustand an Telegram weiterleiten.
    • Kommunikation: Bridge.call() auf der Linux-Seite ruft Bridge.provide_safe() auf der MCU-Seite auf (da digitalWrite() verwendet wird, um das Relais zu steuern)
    • ⚠️ 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, aktualisiert Relais und meldet an Monitor.

    MCU-Skizze – Bewegungssensor steuert Relais 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-relay */ #include "Arduino_RouterBridge.h" #define MOTION_SENSOR_PIN 7 #define RELAY_PIN 9 int motion_state = LOW; int motion_state_prev = LOW; void check_motion() { motion_state_prev = motion_state; motion_state = digitalRead(MOTION_SENSOR_PIN); if (motion_state_prev == LOW && motion_state == HIGH) { digitalWrite(RELAY_PIN, HIGH); Monitor.println("Motion detected! Relay ON"); } else if (motion_state_prev == HIGH && motion_state == LOW) { digitalWrite(RELAY_PIN, LOW); Monitor.println("Motion stopped! Relay OFF"); } else { Monitor.println(motion_state == HIGH ? "Motion: ACTIVE | Relay: ON" : "Motion: none | Relay: OFF"); } } void setup() { Bridge.begin(); Monitor.begin(); pinMode(MOTION_SENSOR_PIN, INPUT); pinMode(RELAY_PIN, OUTPUT); digitalWrite(RELAY_PIN, LOW); Bridge.provide_safe("check_motion", check_motion); Monitor.println("Motion Sensor Relay Bridge ready"); } void loop() {}

    Python-Skript (Arduino App Lab) – Fragt Bewegungszustand alle 0,5 Sekunden ab:

    /* * 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-relay */ 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() in der MCU-Skizze aufgerufen wird und die Skizze hochgeladen wird, bevor Sie das Python-Skript auf der Linux-Seite ausführen.
    • ⚠️ Warnung: Öffnen Sie niemals direkt /dev/ttyHS1 (unter 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-Skizze hochladen: Öffnen Sie Arduino App Lab, erstellen Sie eine neue App, fügen Sie die Bridge MCU-Skizze 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 in die Python-Registerkarte derselben App ein.
    • App ausführen: Klicken Sie auf Run – Python fragt Bewegung alle 0,5 Sekunden ab; MCU aktualisiert das Relais und Monitor.
    • Konsole überprüfen: Öffnen Sie die Registerkarte Konsole → MCU Monitor-Unterkarte und gehen Sie vor dem Sensor vorbei.

    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 Relay Bridge ready Motion detected! Relay ON Motion stopped! Relay OFF Motion detected! Relay ON Motion stopped! Relay OFF

    Telegram-Integration

    Überwachen Sie den Zustand des bewegungsgesteuerten Relais remote über Telegram.

    Wenn Sie noch keinen Telegram-Bot haben, siehe How to Create a Telegram Bot, um Ihren Bot-Token zu erhalten, bevor Sie fortfahren.

    MCU-Skizze: Behalten Sie die gleiche MCU-Skizze aus dem vorherigen Bridge-Abschnitt – keine Änderungen erforderlich. Stellen Sie sicher, dass sie bereits hochgeladen und auf STM32 ausgeführt wird, bevor Sie fortfahren.

    Python-Skript (Arduino App Lab) – Telegram-Bot für bewegungsgesteuertes Relais:

    /* * 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-relay */ 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 motion state and update relay") time.sleep(0.5) App.run(user_loop=loop)
    • Hinweis: Ersetzen Sie YOUR_BOT_TOKEN durch den von @BotFather auf Telegram erhaltenen Token.
    • Senden Sie /status, um den Bewegungssensor manuell zu überprüfen und das Relais zu aktualisieren.

    Schnelle Schritte

    • MCU-Skizze hochladen: Verwenden Sie die Bridge MCU-Skizze aus dem vorherigen Abschnitt (laden Sie sie zuerst hoch, falls noch nicht geschehen).
    • Telegram-Skript einfügen: Kopieren Sie den Python-Code oben in die Python-Registerkarte Ihrer App in Arduino App Lab.
    • Ihren Token setzen: Ersetzen Sie YOUR_BOT_TOKEN im Skript durch Ihren aktuellen Bot-Token.
    • App ausführen: Klicken Sie auf Run – der Bot beginnt, auf Telegram-Nachrichten zu lauschen.
    • Test: Senden Sie /status – der Bot antwortet mit dem Bewegungszustand und Relaiszustand.

    App Lab Pythonkonsolenausgabe

    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 | Relay: OFF [2026-04-29 12:01:30] Telegram: /status [2026-04-29 12:01:30] Motion detected! Relay ON
    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 | Relay: OFF
    10:16 AM
    /status
    10:17 AM ✓✓
    Motion detected! Relay ON
    10:18 AM

    OpenClaw-Integration

    Sie können OpenClaw an dieses Tutorial anpassen, indem Sie die Anleitung zu Arduino Uno Q - OpenClaw Tutorial lesen

    Anwendungs- und Projektideen

    • Automatische Gerätesteuerung: Schalten Sie einen Lüfter, Heizer oder Licht ein, wenn jemand den Raum betritt
    • Sicherheitssystem: Aktivieren Sie ein Sirenenrelais, wenn nachts eine Bewegung erkannt wird
    • Intelligentes Türöffnen: Lösen Sie ein elektromagnetisches Sperrrelais aus, wenn sich jemand nähert
    • Energieverwaltung: Schalten Sie Geräte automatisch aus, wenn über einen längeren Zeitraum keine Bewegung erkannt wird

    Fordern Sie sich selbst heraus

    • Einfach: Fügen Sie einen Buzzer hinzu, der beim Einschalten des Relais ertönt
    • Mittel: Halten Sie das Relais 30 Sekunden nach dem Stoppen der Bewegung ein, bevor Sie es ausschalten
    • Fortgeschrittene: Senden Sie automatisch eine Telegram-Benachrichtigung, wenn das Relais aktiviert wird

    ※ 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!