Arduino UNO Q - Solenoid Schloss

Ein Solenoid-Schloss (auch Elektromegnet-Schloss genannt) wird mit 12V DC betrieben und durch ein Relais gesteuert. Arduino UNO Q kann eine Tür, ein Schrank oder eine Schublade automatisch sperren und entsperren — und mit Bridge und Telegram können Sie das Schloss von überall aus ferngesteuert bedienen.

In diesem Tutorial lernen Sie:

Arduino UNO Q Solenoid Schloss

Erforderliche Hardware

1×Arduino UNO Q
1×USB Cable for Arduino Uno Q
1×Magnetschloss
1×Relais
1×12V Netzteil
1×DC-Stromanschluss
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 das Solenoid-Schloss

Pinbelegung

Das Solenoid-Schloss hat zwei Drähte:

  • Positiv (+) roter Draht: Verbinden Sie mit der 12V DC-Stromversorgung
  • Negativ (-) schwarzer Draht: Verbinden Sie mit GND der 12V DC-Stromversorgung
Solenoid Schloss Pinbelegung

Funktionsweise

  • Wenn das Solenoid-Schloss Strom erhält → die Verschlusszunge fährt aus → die Tür ist gesperrt
  • Wenn das Solenoid-Schloss keinen Strom hat → die Verschlusszunge fährt ein → die Tür ist entsperrt

※ Notiz:

Das Solenoid-Schloss benötigt 12V DC — es darf niemals direkt an einen Arduino UNO Q Pin angeschlossen werden. Verwenden Sie immer ein Relais als Zwischenelement. Das Relais wird von der MCU gesteuert und schaltet die 12V-Versorgung zum Solenoid-Schloss.

Wenn das Relais in der Normalöffnung konfiguriert ist:

  • Relais offen (Pin LOW) → kein Strom zum Schloss → Tür entsperrt
  • Relais geschlossen (Pin HIGH) → Strom zum Schloss → Tür gesperrt

Für den Zustand entsperrt (HIGH) und gesperrt (LOW) siehe Code — die Zuordnung hängt von Ihrem Relaismodul-Typ ab (active-HIGH oder active-LOW).

Schaltplan

Arduino UNO Q Solenoid Schloss Schaltplan

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

Verbinden Sie den Relais-Pin IN mit MCU-Pin D3. Verbinden Sie die COM- und NO-Anschlüsse des Relais zwischen der 12V-Versorgung und dem Solenoid-Schloss. Verbinden Sie VCC des Relais mit 5V und GND mit GND.

Relais Pin Arduino UNO Q MCU
GND GND
VCC 5V
IN D3

Wie man für Solenoid-Schloss programmiert

  • Richten Sie den Relais-Pin als Ausgang ein:
pinMode(RELAY_PIN, OUTPUT);
  • Entsperren und sperren Sie das Solenoid:
digitalWrite(RELAY_PIN, HIGH); // entsperren delay(5000); digitalWrite(RELAY_PIN, LOW); // sperren

Arduino UNO Q Code

Arduino UNO Q hat zwei Prozessoren, die zusammenarbeiten:

  • Die STM32 MCU steuert das Relais, das die Stromversorgung zum Solenoid-Schloss schaltet — alle Timing- und Zustandslogiken laufen auf der MCU
  • Die Qualcomm MPU führt Debian Linux aus und verwaltet Wi-Fi, Python und Cloud-Konnektivität
  • In diesem Abschnitt wird nur die MCU programmiert — die Linux-Seite bleibt untätig. Ein späterer Abschnitt zeigt, wie beide Prozessoren zusammenarbeiten via Bridge.

Dieser Code entsperrt das Solenoid-Schloss für 5 Sekunden, sperrt es dann wieder — wiederholt sich kontinuierlich.

/* * 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-solenoid-lock */ // This code locks and unlocks the solenoid lock every 5 seconds. // The relay is connected to the solenoid lock which requires a 12V power supply. #define RELAY_PIN 3 // The Arduino UNO Q MCU pin connected to the relay IN pin void setup() { Serial.begin(9600); pinMode(RELAY_PIN, OUTPUT); Serial.println("Arduino UNO Q Solenoid Lock ready"); } void loop() { Serial.println("Unlocking..."); digitalWrite(RELAY_PIN, HIGH); // unlock the door delay(5000); Serial.println("Locking..."); digitalWrite(RELAY_PIN, LOW); // lock the door delay(5000); }

Schnelle Schritte

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

  • Verbinden Sie: Verdrahten Sie das Solenoid-Schloss, das Relais und die 12V-Stromversorgung mit der Arduino UNO Q MCU wie im Schaltplan gezeigt.
  • Öffnen Sie Arduino App Lab: Starten Sie Arduino App Lab und warten Sie, bis es Ihre Arduino UNO Q erkennt.
  • Erstellen Sie eine neue App: Klicken Sie auf die Schaltfläche Neue App erstellen.
Neue App im Arduino App Lab auf Arduino UNO Q erstellen
  • Geben Sie der App einen Namen, z. B.: SolenoidLock
  • Klicken Sie auf Erstellen, um zu bestätigen.
Arduino App Lab App-Ordner und -Dateien auf Arduino UNO Q
  • Fügen Sie die Skizze ein: Kopieren Sie den MCU-Code oben und fügen Sie ihn in sketch/sketch.ino ein. Behalten Sie andere Dateien als Standard.
  • Keine Bibliothek erforderlich — verwendet nur die integrierte Funktion digitalWrite().
  • Upload: Klicken Sie auf den Ausführungsknopf in Arduino App Lab.
Klicken Sie auf den Ausführungsknopf in Arduino App Lab auf Arduino UNO Q
  • Beobachten Sie das Solenoid-Schloss, das alle 5 Sekunden zwischen Gesperrt und Entsperrt wechselt.

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
[2026-04-29 09:00:01] Arduino UNO Q Solenoid Lock ready [2026-04-29 09:00:01] Unlocking... [2026-04-29 09:00:06] Locking... [2026-04-29 09:00:11] Unlocking... [2026-04-29 09:00:16] Locking...

Bridge: Linux + MCU

Dieser Abschnitt zeigt, wie Sie beide Prozessoren des Arduino UNO Q programmieren, damit die Linux-Seite das Solenoid-Schloss über Bridge sperren und entsperren kann:

  • Das Solenoid-Schloss ist über ein Relais mit der MCU verbunden — die MCU steuert den Relais-Ausgangspin
  • Die MPU kann das Relais nicht direkt steuern — sie ruft Bridge-Funktionen auf, um zu sperren oder zu entsperren
  • Die MPU hat Wi-Fi — da sie vollständiges Debian Linux ausführt, kann sie Befehle von Telegram oder einem beliebigen Web-Service akzeptieren und in Sperr-/Entsperraktionen übersetzen
  • Arduino_RouterBridge ermöglicht RPC-Kommunikation zwischen den beiden Prozessoren
  • ⚠️ /dev/ttyHS1 (Linux) und Serial1 (MCU) sind RESERVIERT vom Router — öffnen Sie sie niemals in Benutzercode

Kurz gesagt: MPU empfängt Sperr-/Entsperrbefehle → ruft Bridge auf → MCU steuert Relais → Solenoid-Schloss aktiviert sich.

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-solenoid-lock */ #include "Arduino_RouterBridge.h" #define RELAY_PIN 3 // The Arduino UNO Q MCU pin connected to the relay IN pin bool is_unlocked = false; String unlock(String arg) { digitalWrite(RELAY_PIN, HIGH); is_unlocked = true; Monitor.println("Solenoid lock: UNLOCKED"); return "unlocked"; } String lock(String arg) { digitalWrite(RELAY_PIN, LOW); is_unlocked = false; Monitor.println("Solenoid lock: LOCKED"); return "locked"; } String get_state(String arg) { return is_unlocked ? "unlocked" : "locked"; } void setup() { Bridge.begin(); Monitor.begin(); pinMode(RELAY_PIN, OUTPUT); digitalWrite(RELAY_PIN, LOW); // start locked Bridge.provide_safe("unlock", unlock); Bridge.provide_safe("lock", lock); Bridge.provide("get_state", get_state); Monitor.println("Arduino UNO Q Solenoid Lock Bridge ready"); Monitor.println("Initial state: LOCKED"); } void loop() {}

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-solenoid-lock */ from arduino.app_utils import * import time def loop(): state = Bridge.call("get_state") print(f"Lock state: {state}") # Example: unlock for 5 seconds, then lock again if state == "locked": print("Unlocking...") Bridge.call("unlock") time.sleep(5) print("Locking...") Bridge.call("lock") time.sleep(1) App.run(user_loop=loop)

Schnelle Schritte

  • Verbinden Sie: Verdrahten Sie das Solenoid-Schloss, das Relais und die 12V-Stromversorgung mit dem Arduino UNO Q wie im Schaltplan gezeigt.
  • Öffnen Sie Arduino App Lab: Starten Sie Arduino App Lab und warten Sie auf die Erkennung der Platine.
  • Erstellen Sie eine neue App: Klicken Sie auf Neue App erstellen, benennen Sie sie SolenoidLockBridge, und klicken Sie dann auf Erstellen.
  • Fügen Sie die MCU-Skizze ein: Kopieren Sie den MCU Bridge-Code oben und fügen Sie ihn in sketch/sketch.ino ein.
  • Fügen Sie den Python-Code ein: 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 den Ausführungsknopf in Arduino App Lab.
Klicken Sie auf den Ausführungsknopf in Arduino App Lab auf Arduino UNO Q
  • Beobachten Sie den Schloss-Zyklus: Entsperren → 5 Sekunden warten → Sperren → 1 Sekunde warten → Wiederholen.

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
[2026-04-29 09:00:01] Arduino UNO Q Solenoid Lock Bridge ready [2026-04-29 09:00:01] Initial state: LOCKED [2026-04-29 09:00:02] Solenoid lock: UNLOCKED [2026-04-29 09:00:07] Solenoid lock: LOCKED
DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
[2026-04-29 09:00:02] Lock state: locked [2026-04-29 09:00:02] Unlocking... [2026-04-29 09:00:07] Locking... [2026-04-29 09:00:08] Lock state: locked

Telegram

Steuern Sie das Solenoid-Schloss ferngesteuert über Telegram — sperren und entsperren Sie von überall mit einem einfachen Befehl.

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

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-solenoid-lock */ 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(): 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 Solenoid Lock Bot\n" "/unlock - Unlock the solenoid lock\n" "/lock - Lock the solenoid lock\n" "/state - Read current lock state") elif text == "/unlock": result = Bridge.call("unlock") send_message(chat_id, f"🔓 Lock state: {result}") elif text == "/lock": result = Bridge.call("lock") send_message(chat_id, f"🔒 Lock state: {result}") elif text == "/state": result = Bridge.call("get_state") send_message(chat_id, f"Lock state: {result}") else: send_message(chat_id, "Unknown command. Send /start for help.") time.sleep(1) App.run(user_loop=loop)

Schnelle Schritte

  • Ersetzen Sie YOUR_TELEGRAM_BOT_TOKEN durch Ihren echten 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).
  • Klicken Sie auf den Ausführungsknopf. Senden Sie /unlock von Telegram, um das Schloss zu öffnen, und dann /lock, um es zu schließen.

App Lab Konsolenausgabe

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:05] Received: /unlock [2026-04-29 09:10:12] Received: /state [2026-04-29 09:10:20] Received: /lock
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 ✓✓
Lock state: locked
10:16 AM
/unlock
10:17 AM ✓✓
🔓 Lock state: unlocked
10:18 AM
/state
10:19 AM ✓✓
Lock state: unlocked
10:20 AM
/lock
10:21 AM ✓✓
🔒 Lock state: locked
10:22 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 Solenoid-Schloss und Arduino UNO Q bauen:

  • Telegram-gesteuerte Türsperre: Steuern Sie Ihre Haustür oder Bürotür ferngesteuert über Telegram — /unlock, um jemanden einzulassen, und /lock, um sie zu sichern, mit allen Ereignissen protokolliert mit Zeitstempel
  • Zeitbasierte Auto-Sperre: Programmieren Sie die MPU (Linux Python), um automatisch um 22:00 Uhr zu sperren und um 07:00 Uhr jeden Tag freizugeben — using der Systemuhr auf der Linux-Seite, um Bridge-Befehle auszulösen
  • Zahlenpad-Zugriffssystem: Kombinieren Sie das Solenoid-Schloss mit einem 4x4-Zahlenpad auf der MCU — entsperren Sie bei Eingabe der korrekten PIN, und senden Sie eine Telegram-Benachrichtigung, wenn dreimal hintereinander eine falsche PIN versucht wurde
  • Zugriffsprotokolliersystem: Protokollieren Sie jedes Sperr- und Entsperrereignis in einer CSV-Datei auf Linux — einschließlich Zeitstempel, Befehlsquelle (Telegram oder automatisch), und erzeugen Sie tägliche Berichte, die an Telegram gesendet werden
  • Gast-Zugriffsverwaltung: Erstellen Sie einen zeitlich begrenzten Zugriff über Telegram — /unlock_5min entsperrt die Tür und sperrt sie nach 5 Minuten automatisch wieder, mit einer Telegram-Bestätigung, wenn der Timer abläuft

Fordern Sie sich selbst heraus

Bereit, noch weiter mit dem Solenoid-Schloss auf Arduino UNO Q zu gehen? Versuchen Sie diese Herausforderungen:

  • Einfach: Fügen Sie einen Telegram-Befehl /unlock_10s hinzu, der das Schloss für genau 10 Sekunden entsperrt, indem Sie time.sleep(10) auf der Python-Seite verwenden, bevor Sie Bridge.call("lock") aufrufen.
  • Mittel: Implementieren Sie einen Telegram-Befehl /schedule, der ein Zeitargument (z. B. /schedule 23:00) analysiert und die Tür automatisch zu dieser Zeit sperrt, indem Sie die Linux-Systemuhr auf der MPU verwenden.
  • Fortgeschritten: Bauen Sie ein Multi-User-Zugriffssystem: Speichern Sie eine Liste autorisierter Telegram-Benutzer-IDs in einer Python-Datei — nur diese Benutzer können /unlock-Befehle senden, und alle nicht autorisierten Versuche lösen eine Telegram-Benachrichtigung an die Admin-Chat-ID aus.

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