Arduino UNO Q - Verrou Électromagnétique

Un verrou électromagnétique (maglock) utilise un électroaimant pour maintenir une porte fermée — quand il est alimenté, il crée une puissante force magnétique qui garde la porte verrouillée. Avec l'Arduino UNO Q et un relais, vous pouvez verrouiller et déverrouiller une porte par programmation. Ajoutez Bridge et Telegram pour un contrôle à distance complet depuis n'importe où.

Dans ce tutoriel, vous apprendrez :

Arduino UNO Q Verrou Électromagnétique

Matériel Requis

1×Arduino UNO Q
1×USB Cable for Arduino Uno Q
1×Serrure électromagnétique
1×Relais
1×Adaptateur secteur 12V
1×Connecteur d'alimentation DC
1×Fils de connexion
1×Recommandé: Shield à bornier à vis pour Arduino Uno
1×Recommandé: Sensors/Servo Expansion Shield for Arduino Uno
1×Recommandé: Shield plaque d'essai pour Arduino Uno
1×Recommandé: Boîtier pour Arduino Uno
1×Recommandé: Kit plaque de base prototypage et plaque d'essai pour Arduino Uno

Ou vous pouvez acheter les kits suivants:

1×Kit de Capteurs DIYables (18 capteurs/écrans)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À Propos du Verrou Électromagnétique

Brochage

Un verrou électromagnétique a deux parties :

  • Électroaimant — a deux bornes ; connectez à l'alimentation 12V via un relais
  • Plaque d'armature — s'attache à la porte ; aucun câblage nécessaire
Brochage du Verrou Électromagnétique

Installez l'électroaimant sur le cadre de porte (partie fixe) et la plaque d'armature sur la porte (partie mobile). Quand la porte est fermée, les deux parties doivent être à ras l'une contre l'autre.

Fonctionnement

  • Quand l'électroaimant reçoit de l'alimentation → champ magnétique généré → plaque d'armature attirée → porte verrouillée
  • Quand l'électroaimant n'a pas d'alimentation → pas de champ magnétique → plaque d'armature libérée → porte déverrouillée

※ Note:

Le verrou électromagnétique nécessite 12V DC — il ne doit JAMAIS être connecté directement à une broche Arduino UNO Q. Utilisez toujours un relais comme interface. Le MCU contrôle le relais, qui commute l'alimentation 12V vers l'électroaimant.

Quand le relais est câblé en configuration normalement ouvert :

  • Relais ouvert (broche LOW) → pas d'alimentation vers l'électroaimant → porte déverrouillée
  • Relais fermé (broche HIGH) → alimentation vers l'électroaimant → porte verrouillée

C'est l'opposé d'un verrou à solénoïde : alimenté = verrouillé.

Schéma de Câblage

Schéma de Câblage Arduino UNO Q Verrou Électromagnétique

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Connectez la broche IN du module relais à la broche MCU D3. Connectez les bornes COM et NO du relais entre l'alimentation 12V et l'électroaimant. Connectez le VCC du relais à 5V et GND à GND.

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

Comment Programmer pour le Verrou Électromagnétique

  • Configurez la broche du relais comme sortie :
pinMode(RELAY_PIN, OUTPUT);
  • Verrouillez et déverrouillez le verrou électromagnétique :
digitalWrite(RELAY_PIN, HIGH); // verrouillé (électroaimant ON) delay(5000); digitalWrite(RELAY_PIN, LOW); // déverrouillé (électroaimant OFF) delay(5000);

Code Arduino UNO Q

Le MCU alterne entre verrouiller et déverrouiller toutes les 5 secondes.

/* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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); }

Étapes Rapides

Première utilisation de l'Arduino UNO Q ? Suivez le tutoriel Démarrer avec Arduino UNO Q avant de continuer.

  • Connecter : Câblez le verrou électromagnétique, le relais et l'alimentation 12V comme indiqué.
  • Ouvrir Arduino App Lab : Créez une nouvelle application nommée ElectromagneticLock.
  • Coller le programme : Collez le code MCU dans sketch/sketch.ino.
  • 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
  • Téléverser : Cliquez sur le bouton Exécuter dans Arduino App Lab.
Cliquer sur le bouton Exécuter dans Arduino App Lab sur Arduino UNO Q

Sortie de la Console App Lab

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] Electromagnetic Lock ready [2026-04-29 09:00:01] Lock: LOCKED [2026-04-29 09:00:06] Lock: UNLOCKED [2026-04-29 09:00:11] Lock: LOCKED

Bridge : Linux + MCU

/* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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() {}
/* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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)

Sortie de la Console App Lab

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] Electromagnetic Lock Bridge ready [2026-04-29 09:00:01] Lock: LOCKED [2026-04-29 09:00:06] Lock: UNLOCKED
DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
[2026-04-29 09:00:02] Locking door... [2026-04-29 09:00:07] Unlocking door...

Telegram

Verrouillez et déverrouillez la porte à distance depuis n'importe où via Telegram.

Programme MCU : Conservez le même programme MCU de la section Bridge précédente.

/* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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)

Sortie de la Console App Lab

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] Telegram: /lock [2026-04-29 09:10:10] Telegram: /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
/lock
10:15 AM ✓✓
🔒 Door is LOCKED.
10:16 AM
/unlock
10:17 AM ✓✓
🔓 Door is UNLOCKED.
10:18 AM
/state
10:19 AM ✓✓
Lock state: UNLOCKED
10:20 AM

Intégration d'OpenClaw

Vous pouvez adapter OpenClaw à ce tutoriel en vous référant aux instructions du tutoriel Arduino UNO Q - OpenClaw.

Idées de Projets

  • Serrure de Porte Intelligente : Verrouillez/déverrouillez à distance via Telegram — idéal pour les locations Airbnb ou les bureaux
  • Accès Temporisé : Déverrouillez automatiquement à des heures d'ouverture programmées en utilisant cron Linux
  • Sécurité Multi-Zones : Contrôlez plusieurs verrous électromagnétiques via des commandes Telegram avec des noms de pièces
  • Journal d'Accès : Enregistrez chaque verrouillage/déverrouillage avec horodatage et nom d'utilisateur dans un fichier Linux

Mettez-Vous au Défi

  • Facile : Ajoutez une commande /état qui rapporte si la porte est actuellement verrouillée ou déverrouillée.
  • Moyen : Implémentez un déverrouillage temporisé — la porte se déverrouille 10 secondes puis se reverrouille automatiquement.
  • Avancé : Ajoutez un contrôle d'accès par code PIN via Telegram — seulement les utilisateurs autorisés peuvent déverrouiller.

※ NOS MESSAGES

  • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !