아두이노 우노 Q 도어 센서
도어 센서는 리드 스위치와 자석을 사용하여 도어나 창이 열려 있는지 닫혀 있는지를 감지합니다. Arduino UNO Q에서 MCU는 리드 스위치 상태를 읽고, Linux 측에서 도어가 열리거나 닫힐 때 즉시 Telegram 알림을 보낼 수 있습니다.
이 튜토리얼에서 배우는 내용:
- 도어 센서란 무엇이며 어떻게 작동하는지
- Arduino UNO Q MCU에 도어 센서를 배선하는 방법
- MCU(C/C++ Arduino 코드)를 프로그래밍하여 도어 열림/닫힘 상태를 감지하는 방법
- Linux 측(Python)과 MCU 측(C/C++)을 모두 프로그래밍하여 Bridge를 통해 도어 이벤트를 감지하는 방법
- Arduino UNO Q에서 도어가 열리거나 닫힐 때 Telegram 알림을 받는 방법
- Arduino UNO Q에서 도어 센서와 함께 OpenClaw를 사용하는 방법

필수 하드웨어
| 1 | × | Arduino UNO Q | 아마존 | |
| 1 | × | USB Cable for Arduino Uno Q | 아마존 | |
| 1 | × | 문 센서 | 쿠팡 | 아마존 | |
| 1 | × | 점퍼케이블 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 스크루 터미널 블록 쉴드 | 쿠팡 | 아마존 | |
| 1 | × | (추천) Sensors/Servo Expansion Shield for Arduino Uno | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 브레드보드 쉴드 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 케이스 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 프로토타이핑 베이스 플레이트 & 브레드보드 키트 | 아마존 |
도어 센서에 대하여
핀 배열
도어 센서는 두 부분으로 구성됩니다:
- 리드 스위치 — 두 개의 금속 커넥터(극성 없음)
- 자석 — 움직이는 부분(도어 또는 창)에 부착됨

리드 스위치의 두 핀은 서로 교환 가능합니다 — 관찰할 극성이 없습니다.
작동 원리
자석은 도어나 창(움직이는 부분)에 고정되고, 리드 스위치는 도어 프레임(고정된 부분)에 고정됩니다.
- 도어가 닫혀 있을 때, 자석이 리드 스위치 근처에 있습니다 — 회로가 닫힙니다
- 도어가 열려 있을 때, 자석이 멀어집니다 — 회로가 열립니다

※ 주의:
리드 스위치는 HIGH 또는 LOW를 직접 출력하지 않습니다. 리드 스위치의 한 핀을 GND에 연결하고 다른 핀을 INPUT_PULLUP으로 구성된 Arduino UNO Q 입력 핀에 연결합니다. 이는 부유 값을 방지합니다:
- 도어 닫힘(자석 근처) → 핀이 LOW를 읽음
- 도어 열림(자석 멀음) → 핀이 HIGH를 읽음
배선 다이어그램

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
| Door Sensor Pin | Arduino UNO Q MCU |
|---|---|
| Pin 1 | GND |
| Pin 2 | D9 (with INPUT_PULLUP) |
도어 센서용 프로그래밍 방법
- Arduino UNO Q MCU 핀을 디지털 입력으로 설정하고 풀-업 저항을 사용합니다:
- 도어 상태 읽기:
- 확인 및 응답:
Arduino UNO Q 코드
Arduino UNO Q에는 함께 작동하는 두 개의 프로세서가 있습니다:
- STM32 MCU — 디지털 핀을 통해 리드 스위치를 읽습니다 — 모든 센싱은 MCU에서 실행됩니다
- Qualcomm MPU — Debian Linux를 실행하고 Wi-Fi, Python, 클라우드 연결을 처리합니다
- 이 섹션에서는 MCU만 프로그래밍합니다 — Linux 측은 유휴 상태입니다. 나중 섹션에서 두 프로세서가 Bridge를 통해 어떻게 함께 작동하는지 보여줍니다.
MCU는 500ms마다 도어 센서를 읽고 상태를 Serial Monitor에 인쇄합니다.
빠른 단계
Arduino UNO Q를 처음 사용하시나요? 진행하기 전에 아두이노 우노 Q 시작하기 튜토리얼을 따릅니다.
- 설치: 자석을 도어에 고정하고 리드 스위치를 도어 프레임에 고정합니다. 도어가 닫혀 있을 때 가깝도록 장착합니다.
- 연결: 배선 다이어그램과 같이 도어 센서를 Arduino UNO Q MCU에 연결합니다.
- Arduino App Lab 열기: Arduino App Lab을 실행하고 Arduino UNO Q를 감지할 때까지 기다립니다.
- 새 앱 만들기: Create New App 버튼을 클릭합니다.

- 앱에 이름을 지정합니다(예: DoorSensor).
- Create를 클릭하여 확인합니다.

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

- Serial Monitor를 보면서 도어를 열고 닫습니다.
App Lab 콘솔 출력
Bridge: Linux + MCU
이 섹션에서는 Linux 측이 Bridge를 통해 도어 이벤트를 감지할 수 있도록 Arduino UNO Q의 두 프로세서를 모두 프로그래밍하는 방법을 보여줍니다:
- 도어 센서는 MCU 디지털 핀에 연결됩니다 — MCU는 loop()에서 상태 변화를 모니터링하고 도어가 열리거나 닫힐 때 이벤트 플래그를 설정합니다
- MPU는 디지털 핀을 직접 읽을 수 없습니다 — Bridge 함수를 호출하여 현재 상태를 쿼리하거나 도어 이벤트를 소비합니다
- MPU에는 Wi-Fi가 있습니다 — 전체 Debian Linux를 실행하므로 도어 이벤트에 반응하고 즉시 Telegram 알림을 보낼 수 있습니다
- Arduino_RouterBridge — 두 프로세서 간 RPC 통신을 활성화합니다
- ⚠️ /dev/ttyHS1(Linux)과 Serial1(MCU)은 라우터에서 예약됨 — 사용자 코드에서 절대 열지 않습니다
간단히 말해서: MCU가 loop()에서 도어 열림/닫힘 이벤트를 감지 → MPU가 Bridge를 통해 폴링 → MPU가 Wi-Fi를 통해 Telegram 알림을 트리거합니다.
MCU 코드(Bridge)
Python 코드(Bridge)
빠른 단계
- 연결: 배선 다이어그램과 같이 도어 센서를 Arduino UNO Q에 연결합니다.
- Arduino App Lab 열기: Arduino App Lab을 실행하고 보드가 감지될 때까지 기다립니다.
- 새 앱 만들기: Create New App을 클릭하고, 이름을 DoorSensorBridge로 지정한 후 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 버튼을 클릭합니다.

- 도어를 열고 닫습니다. Python 콘솔에 상태 변화가 나타나는 것을 확인합니다.
App Lab 콘솔 출력
Telegram
도어가 열리거나 닫힐 때 즉시 Telegram 알림을 받습니다.
MCU 스케치: 이전 Bridge 섹션에서 같은 MCU 스케치를 유지합니다.
Python 코드(Telegram)
빠른 단계
- YOUR_TELEGRAM_BOT_TOKEN을 BotFather에서 받은 실제 봇 토큰으로 바꿉니다.
- YOUR_CHAT_ID를 Telegram 채팅 ID로 바꿉니다.
- 이 Python 코드를 앱의 Python 파일에 붙여넣습니다(같은 MCU 스케치 유지).
- Run 버튼을 클릭합니다. 도어를 열고 닫으면 Telegram에서 즉시 알림을 확인할 수 있습니다.
App Lab 콘솔 출력
ArduinoBot
OpenClaw
You can adapt the OpenClaw to this tutorial by refering the instruction on 아두이노 우노 Q - OpenClaw Tutorial
프로젝트 아이디어
도어 센서와 Arduino UNO Q로 많은 유용한 프로젝트를 만들 수 있습니다:
- 홈 보안 알림: 현관문에 도어 센서를 부착합니다 — MPU가 도어가 열릴 때마다 즉시 Telegram 알림을 보내고, 감사용으로 타임스탬프를 Linux 파일에 기록합니다
- 배송 알림: 센서를 소포 드롭 박스에 고정합니다 — 뚜껑이 열리면 배송 도착 알림 Telegram 메시지를 받습니다
- 아동 안전 모니터: 센서를 캐비닛, 게이트 또는 제한된 영역에 부착합니다 — 도어가 열릴 때마다 Telegram 알림을 받고, 선택적으로 Bridge를 통해 제어되는 릴레이를 통해 자동 잠금합니다
- 에너지 절약: 창이 열리는 것을 감지하고 Bridge를 통해 제어되는 릴레이를 통해 HVAC 시스템을 자동으로 끕니다 — 에너지를 절약하고 원치 않는 온도 손실을 방지합니다
- 스마트 접근 로그: Python을 사용하여 Linux 측에서 타임스탬프와 함께 모든 도어 열고 닫기 이벤트를 기록합니다 — 일일 또는 주간 접근 보고서를 생성하여 Telegram으로 보냅니다
도전해보세요
Arduino UNO Q의 도어 센서로 더 나아가기 위해 준비되셨나요? 이 도전을 시도해 보세요:
- 쉬움: 도어 열림 타이머 추가: Python 측이 도어가 열리는 시간을 기록하고 도어가 30초 이상 열린 상태로 유지되면 Telegram 알림을 보냅니다.
- 중간: 일일 진입 횟수 구현: Python 측이 매일 도어 열기 이벤트 수를 세고 자정에 총 수를 포함한 Telegram 요약을 보냅니다.
- 고급: 다중 구역 보안 시스템 구축: 세 개의 도어 센서를 세 개의 다른 디지털 핀에 연결하고, 각각을 고유한 Bridge 함수로 노출하고, Python 측이 세 개를 모두 동시에 모니터링합니다 — 어느 구역이 트리거되었는지 식별하는 Telegram 알림을 보냅니다.