Arduino UNO Q - Elektromagnetisches Schloss

Ein elektromagnetisches Schloss (Magnetschloss) verwendet einen Elektromagneten, um eine Tür verschlossen zu halten — wenn es unter Strom steht, erzeugt es eine starke Magnetkraft, die die Tür verriegelt. Mit Arduino UNO Q und einem Relais können Sie eine Tür programmgesteuert sperren und entsperren. Fügen Sie Bridge und Telegram hinzu, um die vollständige Fernsteuerung von überall zu ermöglichen.

In diesem Tutorial lernen Sie:

Arduino UNO Q Elektromagnetisches Schloss

Hardware erforderlich

1×Arduino UNO Q
1×USB-Kabel für Arduino Uno Q
1×Elektromagnetisches Schloss
1×Relais
1×12V Stromadapter
1×DC-Stromstecker
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 das elektromagnetische Schloss

Pinbelegung

Ein elektromagnetisches Schloss besteht aus zwei Teilen:

  • Elektromagnet — hat zwei Anschlüsse; Verbindung mit 12V-Stromversorgung über ein Relais
  • Ankerplatte — wird an der Tür befestigt; keine Verkabelung erforderlich
Pinbelegung des elektromagnetischen Schlosses

Installieren Sie den Elektromagnet am Türrahmen (fester Teil) und die Ankerplatte an der Tür (beweglicher Teil). Wenn die Tür geschlossen ist, sollten die beiden Teile bündig aneinander anliegen.

Funktionsweise

  • Wenn der Elektromagnet unter Strom steht → Magnetfeld wird erzeugt → Ankerplatte wird angezogen → Tür ist verriegelt
  • Wenn der Elektromagnet keinen Strom mehr hat → kein Magnetfeld → Ankerplatte wird freigegeben → Tür ist entsperrt

※ Notiz:

Das elektromagnetische Schloss benötigt 12V DC — es darf NIEMALS direkt an einen Arduino UNO Q-Pin angeschlossen werden. Verwenden Sie immer ein Relais als Schnittstelle. Die MCU steuert das Relais, das die 12V-Stromversorgung zum Elektromagneten schaltet.

Wenn das Relais in einer Ruhe-Offen-Konfiguration verdrahtet ist:

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

Dies ist das Gegenteil eines Solenoidschlosses: unter Strom = verriegelt.

Schaltplan

Arduino UNO Q Elektromagnetisches Schloss Schaltplan

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

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

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

Programmierung für elektromagnetisches Schloss

  • Richten Sie den Relais-Pin als Ausgang ein:
pinMode(RELAY_PIN, OUTPUT);
  • Sperren und entsperren Sie das elektromagnetische Schloss:
digitalWrite(RELAY_PIN, HIGH); // lock (electromagnet ON) delay(5000); digitalWrite(RELAY_PIN, LOW); // unlock (electromagnet OFF) delay(5000);

Arduino UNO Q Code

Die Arduino UNO Q hat zwei Prozessoren, die zusammenarbeiten:

  • Die STM32 MCU steuert das Relais, das die Stromversorgung zum Elektromagneten schaltet — die gesamte Timing- und Zustandslogik läuft auf der MCU
  • Der 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 über Bridge zusammenarbeiten.

Dieser Code sperrt das elektromagnetische Schloss für 5 Sekunden und entsperrt es dann — in Dauerschleife.

/* * 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-electromagnetic-lock */ // This code locks and unlocks the electromagnetic lock every 5 seconds. // The relay is connected to the electromagnetic lock which requires a 12V power supply. // HIGH = electromagnet ON = door LOCKED // LOW = electromagnet OFF = door UNLOCKED #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 Electromagnetic Lock ready"); } void loop() { Serial.println("Locking..."); digitalWrite(RELAY_PIN, HIGH); // lock the door (electromagnet ON) delay(5000); Serial.println("Unlocking..."); digitalWrite(RELAY_PIN, LOW); // unlock the door (electromagnet OFF) delay(5000); }

Schnelle Schritte

Erste Erfahrung mit Arduino UNO Q? Folgen Sie zuerst dem Tutorial Erste Schritte mit Arduino UNO Q.

  • Installation: Befestigen Sie den Elektromagnet am Türrahmen und die Ankerplatte an der Tür.
  • Verbindung: Verkabeln Sie das elektromagnetische Schloss, das Relais und die 12V-Stromversorgung mit der Arduino UNO Q MCU wie im Schaltplan gezeigt.
  • Arduino App Lab öffnen: 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 erstellen in Arduino App Lab auf Arduino UNO Q
  • Geben Sie der App einen Namen, z. B.: ElectromagneticLock
  • Klicken Sie zum Bestätigen auf Erstellen.
Arduino App Lab App-Ordner und Dateien auf Arduino UNO Q
  • Sketch einfügen: 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 — verwendet nur die integrierte digitalWrite()-Funktion.
  • Upload: Klicken Sie auf die Run-Schaltfläche in Arduino App Lab.
Klicken Sie auf die Run-Schaltfläche in Arduino App Lab auf Arduino UNO Q
  • Bringen Sie die Ankerplatte in die Nähe des Elektromagneten und beobachten Sie, wie sie alle 5 Sekunden gehalten und freigegeben wird.

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

Bridge: Linux + MCU

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

  • Das elektromagnetische Schloss ist über ein Relais mit der MCU verbunden — die MCU steuert den Relais-Ausgangspin
  • Der MPU kann das Relais nicht direkt steuern — er ruft Bridge-Funktionen auf, um zu sperren oder zu entsperren
  • Der MPU hat Wi-Fi — mit vollständigem Debian Linux läuft es und kann Befehle von Telegram oder einem Webdienst akzeptieren und diese in Sperr-/Entsperrmaßnahmen umwandeln
  • Arduino_RouterBridge ermöglicht RPC-Kommunikation zwischen den beiden Prozessoren
  • ⚠️ /dev/ttyHS1 (Linux) und Serial1 (MCU) sind RESERVIERT durch den Router — öffnen Sie diese niemals in Benutzercode

Kurz gesagt: MPU empfängt Sperr-/Entsperrbefehl → ruft Bridge auf → MCU steuert Relais → elektromagnetisches 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-electromagnetic-lock */ #include "Arduino_RouterBridge.h" #define RELAY_PIN 3 // The Arduino UNO Q MCU pin connected to the relay IN pin // HIGH = electromagnet ON = LOCKED // LOW = electromagnet OFF = UNLOCKED bool is_locked = false; String lock_door(String arg) { digitalWrite(RELAY_PIN, HIGH); is_locked = true; Monitor.println("Electromagnetic lock: LOCKED"); return "locked"; } String unlock_door(String arg) { digitalWrite(RELAY_PIN, LOW); is_locked = false; Monitor.println("Electromagnetic lock: UNLOCKED"); return "unlocked"; } String get_state(String arg) { return is_locked ? "locked" : "unlocked"; } void setup() { Bridge.begin(); Monitor.begin(); pinMode(RELAY_PIN, OUTPUT); digitalWrite(RELAY_PIN, LOW); // start unlocked is_locked = false; Bridge.provide_safe("lock", lock_door); Bridge.provide_safe("unlock", unlock_door); Bridge.provide("get_state", get_state); Monitor.println("Arduino UNO Q Electromagnetic Lock Bridge ready"); Monitor.println("Initial state: UNLOCKED"); } 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-electromagnetic-lock */ from arduino.app_utils import * import time def loop(): state = Bridge.call("get_state") print(f"Electromagnetic lock state: {state}") # Example: lock for 5 seconds, then unlock if state == "unlocked": print("Locking...") Bridge.call("lock") time.sleep(5) print("Unlocking...") Bridge.call("unlock") time.sleep(1) App.run(user_loop=loop)

Schnelle Schritte

  • Verbindung: Verkabeln Sie das elektromagnetische Schloss, das Relais und die 12V-Stromversorgung mit der Arduino UNO Q wie im Schaltplan gezeigt.
  • Arduino App Lab öffnen: Starten Sie Arduino App Lab und warten Sie, bis das Board erkannt wird.
  • Erstellen Sie eine neue App: Klicken Sie auf Neue App erstellen, geben Sie ihr den Namen ElectromagneticLockBridge, und klicken Sie dann auf Erstellen.
  • MCU-Sketch einfügen: Kopieren Sie den MCU-Bridge-Code oben und fügen Sie ihn in sketch/sketch.ino ein.
  • Python-Code einfügen: Kopieren Sie den Python-Bridge-Code oben und fügen Sie ihn in die Python-Datei 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 Run-Schaltfläche in Arduino App Lab.
Klicken Sie auf die Run-Schaltfläche in Arduino App Lab auf Arduino UNO Q
  • Beobachten Sie den Schloss-Zyklus: Sperren → 5 Sekunden warten → Entsperren → 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 Electromagnetic Lock Bridge ready [2026-04-29 09:00:01] Initial state: UNLOCKED [2026-04-29 09:00:02] Electromagnetic lock: LOCKED [2026-04-29 09:00:07] Electromagnetic lock: UNLOCKED
DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
[2026-04-29 09:00:02] Electromagnetic lock state: unlocked [2026-04-29 09:00:02] Locking... [2026-04-29 09:00:07] Unlocking... [2026-04-29 09:00:08] Electromagnetic lock state: unlocked

Telegram

Steuern Sie das elektromagnetische Schloss remote über Telegram — sperren und entsperren Sie eine Tür von überall mit einem einfachen Befehl.

MCU-Sketch: Behalten Sie denselben MCU-Sketch 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-electromagnetic-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 Electromagnetic Lock Bot\n" "/lock - Lock the electromagnetic lock\n" "/unlock - Unlock the electromagnetic lock\n" "/state - Read current lock state") elif text == "/lock": result = Bridge.call("lock") send_message(chat_id, f"🔒 Lock state: {result}") elif text == "/unlock": result = Bridge.call("unlock") 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 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 denselben MCU-Sketch).
  • Klicken Sie auf die Run-Schaltfläche. Senden Sie /lock von Telegram, um die Tür zu sperren, dann /unlock, um sie freizugeben.

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

  • Telegram-gesteuerte Türsperre: Sperren und entsperren Sie eine Bürotür oder einen Lagerraum remote über Telegram — /lock zum Sichern und /unlock, um jemanden hereinzulassen, alles protokolliert mit Zeitstempeln auf der Linux-Seite
  • Zeitbasierte Autosperre: Programmieren Sie den MPU, um sich nachts automatisch zu sperren (z. B. 22 Uhr) und morgens zu entsperren (7 Uhr), indem Sie die Linux-Systemuhr verwenden — keine manuelle Intervention erforderlich
  • Tastatur-Sicherheitssystem: Kombinieren Sie das elektromagnetische Schloss mit einem 4x4-Tastenfeld auf der MCU — entsperren Sie bei korrektem PIN-Eintrag, senden Sie einen Telegram-Alarm bei drei aufeinanderfolgenden fehlgeschlagenen Versuchen
  • RFID-Zugriffskontrolle: Kombinieren Sie mit einem RFID-Leser auf der MCU — scannen Sie ein registriertes Tag zum Entsperren, protokollieren Sie jeden Zugriffsereignis in eine Datei auf Linux mit der Tag-ID und dem Zeitstempel
  • Remote-Zugriffsprotokolldashboard: Jedes Sperr-/Entsperrevent wird in eine CSV-Datei auf Linux mit Zeitstempel und Quelle (Telegram, automatisch oder Tastenfeld) protokolliert — Python sendet einen täglichen Zusammenfassungsbericht an Telegram

Fordern Sie sich selbst heraus

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

  • Einfach: Fügen Sie einen /unlock_10s-Telegram-Befehl hinzu, der die Tür für genau 10 Sekunden entsperrt, indem Sie time.sleep(10) auf der Python-Seite verwenden, bevor Sie Bridge.call("lock") aufrufen, um den Elektromagnet erneut zu aktivieren.
  • Mittel: Implementieren Sie einen Auto-Lock-Timer: Wenn /unlock über Telegram aufgerufen wird, starten Sie einen Python-Timer — wenn die Tür nicht innerhalb von 60 Sekunden manuell erneut gesperrt wird, ruft das System automatisch Bridge.call("lock") auf und sendet eine Telegram-Bestätigung.
  • Fortgeschritten: Bauen Sie ein Multi-User-Zugriffssystem, in dem eine Admin-Datei autorisierte Telegram-Benutzer-IDs auflistet — nur diese Benutzer können /unlock senden, nicht autorisierte Versuche lösen einen Telegram-Alert an den Admin aus, und alle Zugriffversuche werden mit Benutzer-ID und Zeitstempel protokolliert.

Verwandte Tutorials

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