Arduino UNO Q - Türsensor

Ein Türsensor verwendet einen Schiebeschalter und einen Magneten, um zu erkennen, ob eine Tür oder ein Fenster offen oder geschlossen ist. Auf Arduino UNO Q liest das MCU den Zustand des Schiebeschalters, und die Linux-Seite kann Telegram-Benachrichtigungen senden, wenn sich eine Tür öffnet oder schließt.

In diesem Tutorial erfahren Sie:

Arduino UNO Q Door Sensor

Hardware erforderlich

1×Arduino UNO Q
1×USB Cable for Arduino Uno Q
1×Türsensor
1×Verbindungskabel
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 den Türsensor

Pinbelegung

Der Türsensor besteht aus zwei Teilen:

  • Schiebeschalter — zwei Metallkontakte (keine Polarität)
  • Magnet — befestigt am beweglichen Teil (Tür oder Fenster)
Door Sensor Pinout

Die beiden Stifte des Schiebeschalters sind austauschbar — es gibt keine Polarität zu beachten.

Wie es funktioniert

Der Magnet ist auf der Tür oder dem Fenster (dem beweglichen Teil) befestigt. Der Schiebeschalter ist auf dem Türrahmen (dem stationären Teil) befestigt.

  • Wenn die Tür geschlossen ist, befindet sich der Magnet in der Nähe des Schiebeschalters — der Stromkreis ist geschlossen
  • Wenn die Tür offen ist, entfernt sich der Magnet — der Stromkreis ist offen
Door Sensor How It Works

※ Notiz:

Der Schiebeschalter gibt nicht direkt HIGH oder LOW aus. Verbinden Sie einen Stift des Schiebeschalters mit GND und den anderen mit einem Arduino UNO Q-Eingangspin, der mit INPUT_PULLUP konfiguriert ist. Dies vermeidet Floating-Werte:

  • Tür geschlossen (Magnet in der Nähe) → Pin liest LOW
  • Tür offen (Magnet entfernt) → Pin liest HIGH

Schaltplan

Arduino UNO Q Door Sensor Wiring Diagram

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Türsensor Pin Arduino UNO Q MCU
Pin 1 GND
Pin 2 D9 (mit INPUT_PULLUP)

So programmieren Sie für den Türsensor

  • Richten Sie den Arduino UNO Q MCU-Pin als digitalen Eingang mit Pull-up-Widerstand ein:
pinMode(DOOR_SENSOR_PIN, INPUT_PULLUP);
  • Lesen Sie den Türzustand:
int door_state = digitalRead(DOOR_SENSOR_PIN);
  • Prüfen und reagieren Sie:
if (door_state == HIGH) Serial.println("The door is open"); else Serial.println("The door is closed");

Arduino UNO Q Code

Der Arduino UNO Q verfügt über zwei zusammenarbeitende Prozessoren:

  • Der STM32 MCU liest den Schiebeschalter über einen digitalen Pin — die gesamte Erfassung läuft auf dem MCU
  • Der Qualcomm MPU führt Debian Linux aus und verwaltet Wi-Fi, Python und Cloud-Konnektivität
  • In diesem Abschnitt wird nur das MCU programmiert — die Linux-Seite bleibt untätig. Ein späterer Abschnitt zeigt, wie beide Prozessoren über Bridge zusammenarbeiten.

Das MCU liest den Türsensor alle 500 ms und gibt den Zustand auf dem Seriellen Monitor aus.

/* * 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-door-sensor */ #define DOOR_SENSOR_PIN 9 int door_state; void setup() { Serial.begin(9600); pinMode(DOOR_SENSOR_PIN, INPUT_PULLUP); Serial.println("Arduino UNO Q Door Sensor ready"); } void loop() { door_state = digitalRead(DOOR_SENSOR_PIN); if (door_state == HIGH) Serial.println("The door is open"); else Serial.println("The door is closed"); delay(500); }

Schnelle Schritte

Erstes Mal mit Arduino UNO Q? Folgen Sie dem Tutorial Erste Schritte mit Arduino UNO Q, bevor Sie fortfahren.

  • Installation: Befestigen Sie den Magneten an der Tür und den Schiebeschalter am Türrahmen. Montieren Sie sie so, dass sie sich in der Nähe befinden, wenn die Tür geschlossen ist.
  • Verbindung: Verbinden Sie den Türsensor mit dem Arduino UNO Q MCU wie im Schaltplan dargestellt.
  • Ö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 App erstellen.
Create New App in Arduino App Lab on Arduino UNO Q
  • Geben Sie der App einen Namen, z. B.: DoorSensor
  • Klicken Sie auf Erstellen, um zu bestätigen.
Arduino App Lab App folders and files on Arduino UNO Q
  • Einfügen Sie die Skizze: Kopieren Sie den MCU-Code oben und fügen Sie ihn in sketch/sketch.ino ein. Behalten Sie andere Dateien als Standard bei.
  • Keine Bibliothek erforderlich — der Türsensor verwendet nur die integrierte Funktion digitalRead().
  • Upload: Klicken Sie auf die Schaltfläche Ausführen in Arduino App Lab.
Click Run button in Arduino App Lab on Arduino UNO Q
  • Öffnen und schließen Sie die Tür, während Sie den Seriellen Monitor beobachten.

App Lab Console Output

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
[2026-04-29 09:00:01] Arduino UNO Q Door Sensor ready [2026-04-29 09:00:02] The door is closed [2026-04-29 09:00:02] The door is closed [2026-04-29 09:00:03] The door is open [2026-04-29 09:00:03] The door is open [2026-04-29 09:00:04] The door is closed

Bridge: Linux + MCU

Dieser Abschnitt zeigt, wie Sie beide Prozessoren des Arduino UNO Q programmieren, damit die Linux-Seite Türereignisse über Bridge erkennen kann:

  • Der Türsensor ist mit dem MCU-Digitalpin verbunden — das MCU überwacht Zustandsänderungen in loop() und setzt Ereignisflags, wenn sich die Tür öffnet oder schließt
  • Der MPU kann den digitalen Pin nicht direkt lesen — er ruft Bridge-Funktionen auf, um den aktuellen Zustand abzufragen oder das Türereignis zu verarbeiten
  • Der MPU hat Wi-Fi — mit vollständigem Debian Linux kann er auf Türereignisse reagieren und sofort Telegram-Benachrichtigungen senden
  • Arduino_RouterBridge ermöglicht RPC-Kommunikation zwischen den zwei Prozessoren
  • ⚠️ /dev/ttyHS1 (Linux) und Serial1 (MCU) sind RESERVIERT vom Router — öffnen Sie diese niemals in Benutzercode

Kurz gesagt: MCU erkennt Türöffnungs-/Schließungsereignisse in loop() → MPU ruft über Bridge ab → MPU löst Telegram-Benachrichtigungen über Wi-Fi aus.

MCU Code (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-door-sensor */ #include "Arduino_RouterBridge.h" #define DOOR_SENSOR_PIN 9 int last_state = LOW; bool door_opened_event = false; bool door_closed_event = false; String get_state(String arg) { int state = digitalRead(DOOR_SENSOR_PIN); return (state == HIGH) ? "open" : "closed"; } String get_event(String arg) { if (door_opened_event) { door_opened_event = false; return "opened"; } if (door_closed_event) { door_closed_event = false; return "closed"; } return "none"; } void setup() { Bridge.begin(); Monitor.begin(); pinMode(DOOR_SENSOR_PIN, INPUT_PULLUP); last_state = digitalRead(DOOR_SENSOR_PIN); Bridge.provide("get_state", get_state); Bridge.provide("get_event", get_event); Monitor.println("Arduino UNO Q Door Sensor Bridge ready"); Monitor.println(last_state == HIGH ? "Door is open" : "Door is closed"); } void loop() { int state = digitalRead(DOOR_SENSOR_PIN); if (state != last_state) { last_state = state; if (state == HIGH) { door_opened_event = true; Monitor.println("Door opened!"); } else { door_closed_event = true; Monitor.println("Door closed."); } } }

Python Code (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-door-sensor */ from arduino.app_utils import * import time def loop(): state = Bridge.call("get_state") print(f"Door state: {state}") time.sleep(0.5) App.run(user_loop=loop)

Schnelle Schritte

  • Verbindung: Verbinden Sie den Türsensor mit dem Arduino UNO Q wie im Schaltplan dargestellt.
  • Öffnen Sie Arduino App Lab: Starten Sie Arduino App Lab und warten Sie, bis die Platine erkannt wird.
  • Erstellen Sie eine neue App: Klicken Sie auf App erstellen, geben Sie den Namen DoorSensorBridge ein, und klicken Sie auf Erstellen.
  • Einfügen Sie die MCU-Skizze: Kopieren Sie den MCU Bridge-Code oben und fügen Sie ihn in sketch/sketch.ino ein.
  • Einfügen Sie den Python-Code: Kopieren Sie den Python Bridge-Code oben und fügen Sie ihn in die Python-Datei in der App ein.
  • 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
  • Upload: Klicken Sie auf die Schaltfläche Ausführen in Arduino App Lab.
Click Run button in Arduino App Lab on Arduino UNO Q
  • Öffnen und schließen Sie die Tür. Beobachten Sie die Zustandsänderungen in der Python-Konsole.

App Lab Console Output

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
[2026-04-29 09:00:01] Arduino UNO Q Door Sensor Bridge ready [2026-04-29 09:00:01] Door is closed [2026-04-29 09:00:05] Door opened! [2026-04-29 09:00:08] Door closed.
DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
[2026-04-29 09:00:02] Door state: closed [2026-04-29 09:00:05] Door state: open [2026-04-29 09:00:08] Door state: closed

Telegram

Erhalten Sie sofortige Telegram-Benachrichtigungen, wenn sich die Tür öffnet oder schließt.

MCU Skizze: Behalten Sie die gleiche MCU-Skizze aus dem vorherigen Bridge-Abschnitt bei.

Python Code (Telegram)

/* * 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-door-sensor */ from arduino.app_utils import * import requests import time TELEGRAM_BOT_TOKEN = "YOUR_TELEGRAM_BOT_TOKEN" CHAT_ID = "YOUR_CHAT_ID" last_update_id = 0 def get_updates(): global last_update_id url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/getUpdates" params = {"offset": last_update_id + 1, "timeout": 5} try: response = requests.get(url, params=params, timeout=10) data = response.json() if data["ok"]: return data["result"] except Exception as e: print(f"Error getting updates: {e}") return [] def send_message(chat_id, text): url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage" payload = {"chat_id": chat_id, "text": text} try: requests.post(url, data=payload, timeout=10) except Exception as e: print(f"Error sending message: {e}") def loop(): # Auto-notify on door events event = Bridge.call("get_event") if event == "opened": msg = "🚪 Door opened!" print(msg) send_message(CHAT_ID, msg) elif event == "closed": msg = "🔒 Door closed." print(msg) send_message(CHAT_ID, msg) # Handle Telegram commands updates = get_updates() for update in updates: last_update_id = update["update_id"] if "message" not in update: continue message = update["message"] chat_id = message["chat"]["id"] text = message.get("text", "").strip() print(f"Received: {text}") if text == "/start": send_message(chat_id, "Arduino UNO Q Door Sensor Bot\n" "/state - Read current door state\n" "/event - Check for a door event") elif text == "/state": result = Bridge.call("get_state") send_message(chat_id, f"Door state: {result}") elif text == "/event": result = Bridge.call("get_event") send_message(chat_id, f"Door event: {result}") else: send_message(chat_id, "Unknown command. Send /start for help.") time.sleep(0.5) App.run(user_loop=loop)

Schnelle Schritte

  • Ersetzen Sie YOUR_TELEGRAM_BOT_TOKEN durch Ihren tatsächlichen Bot-Token von BotFather.
  • Ersetzen Sie YOUR_CHAT_ID durch Ihre Telegram-Chat-ID.
  • Fügen Sie diesen Python-Code in die Python-Datei Ihrer App ein (behalten Sie die gleiche MCU-Skizze bei).
  • Klicken Sie auf die Schaltfläche Ausführen. Öffnen und schließen Sie die Tür — überprüfen Sie Telegram auf sofortige Benachrichtigungen.

App Lab Console Output

DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
[2026-04-29 09:10:00] Waiting for Telegram messages... [2026-04-29 09:10:08] 🚪 Door opened! [2026-04-29 09:10:12] 🔒 Door closed. [2026-04-29 09:10:25] Received: /state
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
/state
10:15 AM ✓✓
Door state: closed
10:16 AM
/event
10:17 AM ✓✓
Door event: none
10:18 AM
🚪 Door opened!
10:19 AM
🔒 Door closed.
10:20 AM

OpenClaw

You can adapt the OpenClaw to this tutorial by refering the instruction on Arduino Uno Q - OpenClaw Tutorial

Projektideen

Sie können viele nützliche Projekte mit dem Türsensor und Arduino UNO Q bauen:

  • Home Security Alert: Montieren Sie den Sensor an Ihrer Haustür — der MPU sendet sofort eine Telegram-Benachrichtigung, wenn sich die Tür öffnet, mit einem in einer Linux-Datei protokollierten Zeitstempel für die Überwachung
  • Package Delivery Notifier: Befestigen Sie den Sensor an einer Paketablagebox — wenn der Deckel geöffnet wird, erhalten Sie eine Telegram-Nachricht, die Sie benachrichtigt, dass eine Lieferung angekommen ist
  • Child Safety Monitor: Montieren Sie den Sensor an einem Schrank, Tor oder eingeschränktem Bereich — erhalten Sie Telegram-Benachrichtigungen, wenn sich die Tür öffnet, mit optionalem automatischem Sperren über ein Relais, das durch Bridge ausgelöst wird
  • Energy Saver: Erkennen Sie, wenn ein Fenster geöffnet wird, und schalten Sie automatisch das HVAC-System über ein Relais aus, das durch Bridge gesteuert wird — Energie sparen und Wärmeverlust vermeiden
  • Smart Access Log: Protokollieren Sie jedes Türöffnungs- und Schließungsereignis mit einem Zeitstempel mit Python auf der Linux-Seite — generieren Sie täglich oder wöchentliche Zugriffsberichte, die an Telegram gesendet werden

Fordern Sie sich selbst heraus

Bereit, mit dem Türsensor auf Arduino UNO Q noch weiter zu gehen? Versuchen Sie diese Herausforderungen:

  • Leicht: Fügen Sie einen Türöffnungstimer hinzu: Die Python-Seite registriert den Zeitstempel, wenn sich die Tür öffnet, und sendet eine Telegram-Benachrichtigung, wenn die Tür länger als 30 Sekunden offen bleibt.
  • Mittel: Implementieren Sie eine tägliche Eingabezählung: Die Python-Seite zählt die Anzahl der Türöffnungsereignisse pro Tag und sendet um Mitternacht eine Telegram-Zusammenfassung mit der Gesamtzahl.
  • Fortgeschritten: Bauen Sie ein Multi-Zone-Sicherheitssystem auf: Verbinden Sie drei Türsensoren mit drei verschiedenen digitalen Pins, legen Sie jeden über eine eindeutige Bridge-Funktion offen, und lassen Sie die Python-Seite alle drei gleichzeitig überwachen — senden Sie eine Telegram-Benachrichtigung, die anzeigt, welche Zone ausgelöst wurde.

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