아두이노 우노 Q 전자기 잠금 장치
전자기 잠금 장치(maglock)는 전자석을 사용하여 문을 닫은 상태로 유지합니다. 전원이 공급되면 강력한 자기력을 생성하여 문을 잠금 상태로 유지합니다. Arduino UNO Q와 릴레이를 사용하면 프로그래밍 방식으로 문을 잠그거나 해제할 수 있습니다. Bridge와 Telegram을 추가하면 어디서나 완전한 원격 제어가 가능합니다.
이 튜토리얼에서 배우게 될 내용:
- 전자기 잠금 장치가 무엇이고 어떻게 작동하는지
- 전자기 잠금 장치와 릴레이를 Arduino UNO Q MCU에 배선하는 방법
- MCU를 프로그래밍하는 방법(C/C++ Arduino 코드)으로 전자기 잠금 장치 제어
- Linux 측(Python)과 MCU 측(C/C++)을 모두 프로그래밍하여 Bridge를 통해 잠금 및 해제하는 방법
- Telegram을 통해 Arduino UNO Q에서 원격으로 잠금 및 해제하는 방법
- Arduino UNO Q에서 전자기 잠금 장치와 함께 OpenClaw를 사용하는 방법

필요한 하드웨어
| 1 | × | Arduino UNO Q | 아마존 | |
| 1 | × | USB Cable for Arduino Uno Q | 아마존 | |
| 1 | × | 전자기 잠금장치 | 아마존 | |
| 1 | × | 릴레이 | 아마존 | |
| 1 | × | 12V 전원 어댑터 | 아마존 | |
| 1 | × | DC 커넥터 전원 연결 잭 플러그 소켓 | 쿠팡 | 아마존 | |
| 1 | × | 점퍼케이블 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 스크루 터미널 블록 쉴드 | 쿠팡 | 아마존 | |
| 1 | × | (추천) Sensors/Servo Expansion Shield for Arduino Uno | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 브레드보드 쉴드 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 케이스 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 프로토타이핑 베이스 플레이트 & 브레드보드 키트 | 아마존 |
전자기 잠금 장치 정보
핀아웃
전자기 잠금 장치는 두 부분으로 구성됩니다:
- 전자석 — 두 개의 터미널이 있으며 릴레이를 통해 12V 전원에 연결됩니다
- 아머추어 플레이트 — 문에 부착됩니다. 배선이 필요하지 않습니다

전자석을 문틀에 설치(고정 부분)하고 아머추어 플레이트를 문에 설치(움직이는 부분)합니다. 문이 닫혀 있을 때 두 부분이 서로 같은 높이에 닿아야 합니다.
작동 원리
- 전자석이 전원을 받으면 → 자기장이 생성됨 → 아머추어 플레이트가 끌려옴 → 문이 잠금됨
- 전자석이 전원을 받지 않으면 → 자기장 없음 → 아머추어 플레이트가 해제됨 → 문이 해제됨
※ 주의:
전자기 잠금 장치는 12V DC가 필요하므로 Arduino UNO Q 핀에 직접 연결하면 안 됩니다. 항상 릴레이를 인터페이스로 사용하세요. MCU는 릴레이를 제어하고 릴레이는 12V 전원을 전자기 잠금 장치로 전환합니다.
릴레이가 상시 개방 구성으로 배선된 경우:
- 릴레이 개방(핀 LOW) → 전자석에 전원 없음 → 문 해제됨
- 릴레이 폐쇄(핀 HIGH) → 전자석에 전원 공급 → 문 잠금됨
이것은 솔레노이드 잠금 장치와는 반대입니다: 에너지 공급 = 잠김.
배선도

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
릴레이 모듈 IN 핀을 MCU 핀 D3에 연결합니다. 릴레이의 COM 및 NO 터미널을 12V 전원과 전자석 사이에 연결합니다. 릴레이의 VCC를 5V에, GND를 GND에 연결합니다.
| Relay Pin | Arduino UNO Q MCU |
|---|---|
| GND | GND |
| VCC | 5V |
| IN | D3 |
전자기 잠금 장치를 위한 프로그래밍 방법
- 릴레이 핀을 출력으로 설정합니다:
- 전자기 잠금 장치를 잠그고 해제합니다:
Arduino UNO Q 코드
Arduino UNO Q는 함께 작동하는 두 개의 프로세서를 가지고 있습니다:
- STM32 MCU는 전자석으로의 전원을 전환하는 릴레이를 제어합니다. 모든 타이밍 및 상태 로직이 MCU에서 실행됩니다
- Qualcomm MPU는 Debian Linux를 실행하고 Wi-Fi, Python, 클라우드 연결을 처리합니다
- 이 섹션에서는 MCU만 프로그래밍됩니다. Linux 측은 유휴 상태로 유지됩니다. 이후 섹션에서는 두 프로세서가 Bridge를 통해 어떻게 함께 작동하는지 보여줍니다.
이 코드는 전자기 잠금 장치를 5초 동안 잠그고 해제합니다. 이를 계속 반복합니다.
빠른 단계
Arduino UNO Q를 처음 사용하나요? 계속 진행하기 전에 아두이노 우노 Q 시작하기 튜토리얼을 따르세요.
- 설치: 전자석을 문틀에 부착하고 아머추어 플레이트를 문에 부착합니다.
- 연결: 배선도에 표시된 대로 전자기 잠금 장치, 릴레이, 12V 전원 공급 장치를 Arduino UNO Q MCU에 배선합니다.
- Arduino App Lab 열기: Arduino App Lab을 실행하고 Arduino UNO Q를 감지할 때까지 기다립니다.
- 새 앱 만들기: Create New App 버튼을 클릭합니다.

- 앱에 이름을 지정합니다. 예를 들어: ElectromagneticLock
- Create 를 클릭하여 확인합니다.

- 스케치 붙여넣기: 위의 MCU 코드를 복사하여 sketch/sketch.ino 에 붙여넣습니다. 다른 파일은 기본값으로 유지합니다.
- 라이브러리 필요 없음 — 내장 digitalWrite() 함수만 사용합니다.
- 업로드: Arduino App Lab에서 Run 버튼을 클릭합니다.

- 아머추어 플레이트를 전자석에 가깝게 가져가 5초마다 잡혔다가 해제되는 것을 관찰합니다.
App Lab 콘솔 출력
Bridge: Linux + MCU
이 섹션에서는 Linux 측이 Bridge를 통해 전자기 잠금 장치를 잠그고 해제할 수 있도록 Arduino UNO Q의 두 프로세서를 모두 프로그래밍하는 방법을 보여줍니다:
- 전자기 잠금 장치는 릴레이를 통해 MCU에 연결됩니다. MCU는 릴레이 출력 핀을 제어합니다
- MPU는 릴레이를 직접 제어할 수 없습니다. 이는 Bridge 함수를 호출하여 잠그거나 해제합니다
- MPU는 Wi-Fi를 가집니다. 완전한 Debian Linux를 실행하여 Telegram 또는 모든 웹 서비스의 명령을 받아들이고 잠금/해제 작업으로 변환할 수 있습니다
- Arduino_RouterBridge는 두 프로세서 간의 RPC 통신을 활성화합니다
- ⚠️ /dev/ttyHS1(Linux) 및 Serial1(MCU)은 라우터에서 예약됨 - 사용자 코드에서 열지 마십시오
간단히 말해서: MPU가 잠금/해제 명령을 수신 → Bridge 호출 → MCU가 릴레이 제어 → 전자기 잠금 장치 활성화.
MCU 코드 (Bridge)
Python 코드 (Bridge)
빠른 단계
- 연결: 배선도에 표시된 대로 전자기 잠금 장치, 릴레이, 12V 전원 공급 장치를 Arduino UNO Q에 배선합니다.
- Arduino App Lab 열기: Arduino App Lab을 실행하고 보드가 감지될 때까지 기다립니다.
- 새 앱 만들기: Create New App 을 클릭하고 이름을 ElectromagneticLockBridge 로 지정한 후 Create 를 클릭합니다.
- MCU 스케치 붙여넣기: 위의 MCU Bridge 코드를 복사하여 sketch/sketch.ino 에 붙여넣습니다.
- Python 코드 붙여넣기: 위의 Python Bridge 코드를 복사하여 앱의 Python 파일에 붙여넣습니다.
- Install the library: Click the Add sketch library button (the open book icon with a + sign) in the left sidebar.

- Search for Arduino_RouterBridge created by Arduino and click the Install button.
- 업로드: Arduino App Lab에서 Run 버튼을 클릭합니다.

- 잠금 사이클을 지켜봅니다: 잠금 → 5초 대기 → 해제 → 1초 대기 → 반복.
App Lab 콘솔 출력
Telegram
Telegram을 통해 원격으로 전자기 잠금 장치를 제어합니다. 어디서나 간단한 명령으로 문을 잠그고 해제합니다.
MCU 스케치: 이전 Bridge 섹션의 MCU 스케치를 그대로 유지합니다.
Python 코드 (Telegram)
빠른 단계
- YOUR_TELEGRAM_BOT_TOKEN 을 BotFather에서 받은 실제 봇 토큰으로 바꿉니다.
- YOUR_CHAT_ID 를 실제 Telegram 채팅 ID로 바꿉니다.
- 이 Python 코드를 앱의 Python 파일에 붙여넣습니다(MCU 스케치는 동일하게 유지).
- Run 버튼을 클릭합니다. Telegram에서 /lock 을 전송하여 문을 잠그고 /unlock 을 전송하여 해제합니다.
App Lab 콘솔 출력
ArduinoBot
OpenClaw
You can adapt the OpenClaw to this tutorial by refering the instruction on 아두이노 우노 Q - OpenClaw Tutorial
프로젝트 아이디어
Arduino UNO Q와 전자기 잠금 장치로 많은 유용한 프로젝트를 만들 수 있습니다:
- Telegram 제어 도어락: Telegram을 통해 원격으로 사무실 문이나 보관실을 잠그고 해제합니다. /lock 으로 보안을 설정하고 /unlock 으로 누군가를 들여보냅니다. Linux 측에서 모든 내용을 타임스탬프와 함께 기록합니다
- 시간 기반 자동 잠금: MPU를 프로그래밍하여 밤에 자동으로 잠금(예: 오후 10시)하고 아침에 해제(오전 7시)하도록 Linux 시스템 시계를 사용합니다. 수동 개입이 필요하지 않습니다
- 키패드 보안 시스템: MCU의 4x4 키패드와 전자기 잠금 장치를 결합합니다. 올바른 PIN 입력 시 해제하고 3번 연속 실패한 시도 시 Telegram 알림을 전송합니다
- RFID 접근 제어: MCU의 RFID 리더와 결합합니다. 등록된 태그를 스캔하여 해제하고 모든 접근 이벤트를 태그 ID 및 타임스탬프와 함께 Linux 파일에 기록합니다
- 원격 접근 로그 대시보드: 모든 잠금/해제 이벤트는 Linux의 CSV 파일에 타임스탬프 및 소스(Telegram, 자동 또는 키패드)와 함께 기록됩니다. Python은 일일 요약 보고서를 Telegram으로 전송합니다
스스로 도전해보세요
Arduino UNO Q의 전자기 잠금 장치를 더 나아가 사용할 준비가 되셨나요? 다음 챌린지들을 시도해보세요:
- 쉬움: /unlock_10s Telegram 명령을 추가하여 정확히 10초 동안 문을 해제합니다. Python 측에서 time.sleep(10) 을 사용한 후 Bridge.call("lock") 을 호출하여 전자석을 다시 작동시킵니다.
- 중간: 자동 잠금 타이머를 구현합니다: /unlock 을 Telegram을 통해 호출하면 Python 타이머를 시작합니다. 60초 이내에 문이 수동으로 다시 잠기지 않으면 시스템이 자동으로 Bridge.call("lock") 을 호출하고 Telegram 확인을 전송합니다.
- 고급: 다중 사용자 접근 시스템을 구축합니다. 관리자 파일에 승인된 Telegram 사용자 ID를 나열합니다. 해당 사용자만 /unlock 을 전송할 수 있고, 승인되지 않은 시도는 관리자에게 Telegram 알림을 트리거하며 모든 접근 시도는 사용자 ID 및 타임스탬프와 함께 기록됩니다.