아두이노 우노 Q RFID/NFC
RFID (Radio Frequency Identification)는 태그나 카드에서 고유 ID를 읽을 수 있게 해줍니다 — 접촉이 필요 없습니다. Arduino UNO Q에서 MFRC522 (RC522) 모듈은 SPI를 통해 MCU에 연결됩니다. Bridge와 Telegram을 사용하면 태그가 스캔될 때 휴대폰에서 즉시 알림을 받을 수 있습니다.
이 튜토리얼에서는 다음을 배웁니다:
- RFID RC522 모듈이 무엇이고 어떻게 작동하는지
- RC522를 SPI를 통해 Arduino UNO Q MCU에 배선하는 방법
- MFRC522 라이브러리를 사용하여 RFID/NFC 태그 UID를 읽는 방법
- Bridge를 사용하여 Linux 측 (Python)에 스캔 이벤트를 노출하는 방법
- Arduino UNO Q에서 RFID 태그가 스캔될 때 Telegram 알림을 받는 방법
- Arduino UNO Q의 RFID 리더와 함께 OpenClaw를 사용하는 방법

필요한 하드웨어
| 1 | × | Arduino UNO Q | 아마존 | |
| 1 | × | USB Cable for Arduino Uno Q | 아마존 | |
| 1 | × | RFID/NFC RC522 Kit (reader + tags) | 쿠팡 | 아마존 | |
| 1 | × | 점퍼케이블 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 스크루 터미널 블록 쉴드 | 쿠팡 | 아마존 | |
| 1 | × | (추천) Sensors/Servo Expansion Shield for Arduino Uno | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 브레드보드 쉴드 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 케이스 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 프로토타이핑 베이스 플레이트 & 브레드보드 키트 | 아마존 |
RFID-RC522 모듈 정보
핀 배열
RC522에는 8개의 핀이 있습니다. 이 튜토리얼에서는 SPI 통신을 사용합니다:
- GND: GND에 연결
- VCC: 3.3V에 연결 (⚠️ 5V가 아님 — 모듈이 손상될 수 있음)
- RST: 리셋 핀 — MCU 디지털 핀에 연결
- IRQ: 인터럽트 핀 — 이 튜토리얼에서는 연결되지 않음
- MISO/SCL/TX: MISO 라인 (SPI)
- MOSI: MOSI 라인 (SPI)
- SCK: 클록 라인 (SPI)
- SS/SDA/RX: Slave Select (SPI)

※ 주의:
- 핀 배열은 제조업체에 따라 다를 수 있습니다 — 항상 모듈의 라벨을 따르세요.
- VCC를 5V에 연결하지 마세요 — 이는 RC522 모듈을 영구적으로 손상시킬 수 있습니다.
- MFRC522 라이브러리는 SPI 모드만 사용합니다.
RFID/NFC 작동 원리
RFID에는 두 부분이 있습니다: 리더와 태그:
- 리더는 안테나를 통해 전자기장을 생성합니다
- 태그는 수동적입니다 (배터리 없음) — 전자기장에서 전력을 끌어오고 저장된 UID를 리더로 다시 전송합니다

MCU는 리더로부터 UID 바이트를 수신하고 이에 대해 조치를 취할 수 있습니다 — 예를 들어, UID가 승인된 목록과 일치하면 액세스를 허가합니다.
배선 다이어그램

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
| RC522 Pin | Arduino UNO Q MCU |
|---|---|
| GND | GND |
| VCC | 3.3V |
| RST | D5 |
| IRQ | (not connected) |
| MISO | D12 (MISO) |
| MOSI | D11 (MOSI) |
| SCK | D13 (SCK) |
| SS | D10 (SS) |
RFID 프로그래밍 방법
- SPI와 MFRC522 초기화:
- loop()에서 태그 감지 및 읽기:
Arduino UNO Q 코드
Arduino UNO Q에는 함께 작동하는 두 개의 프로세서가 있습니다:
- STM32 MCU는 SPI를 통해 RC522와 통신하고 loop()에서 태그 UID를 읽습니다
- Qualcomm MPU는 Debian Linux를 실행하고 Wi-Fi, Python 및 클라우드 연결을 처리합니다
- 이 섹션에서는 MCU만 프로그래밍됩니다 — Linux 측은 유휴 상태입니다. 나중 섹션에서는 두 프로세서가 Bridge를 통해 함께 작동하는 방법을 보여줍니다.
빠른 단계
처음 Arduino UNO Q를 사용하십니까? 진행하기 전에 아두이노 우노 Q 시작하기 튜토리얼을 따르세요.
- 연결: 배선 다이어그램에 표시된 대로 RC522를 Arduino UNO Q MCU에 배선합니다.
- Arduino App Lab 열기: Arduino App Lab을 시작하고 보드를 감지할 때까지 기다립니다.
- 새 앱 만들기: Create New App 버튼을 클릭합니다.

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

- 스케치 붙여넣기: 위의 MCU 코드를 복사하여 sketch/sketch.ino에 붙여넣습니다. 다른 파일은 기본값으로 유지합니다.
- Install the library: Click the Add sketch library button (the open book icon with a + sign) in the left sidebar.

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

- RFID/NFC 태그를 리더에 올려놓고 Serial Monitor에서 UID가 인쇄되는 것을 관찰합니다.
App Lab 콘솔 출력
Bridge: Linux + MCU
이 섹션에서는 Arduino UNO Q의 두 프로세서를 프로그래밍하여 Linux 측이 Bridge를 통해 태그 스캔 이벤트를 수신하고 UID를 읽는 방법을 보여줍니다:
- RC522 RFID 리더는 SPI를 통해 MCU에 연결됩니다 — MCU는 loop()에서 태그를 스캔하고 태그가 감지되면 이벤트 플래그를 설정합니다
- MPU는 RC522를 직접 읽을 수 없습니다 — Bridge 함수를 호출하여 태그 이벤트를 폴링하고 마지막 UID를 읽습니다
- MPU에는 Wi-Fi가 있습니다 — 전체 Debian Linux를 실행하므로 태그가 스캔될 때 Telegram 알림을 보낼 수 있습니다
- Arduino_RouterBridge는 두 프로세서 간의 RPC 통신을 활성화합니다
- ⚠️ /dev/ttyHS1 (Linux)과 Serial1 (MCU)은 라우터에서 예약됨 — 사용자 코드에서 절대 열지 마세요
요약하면: MCU가 loop()에서 태그 감지 → 이벤트 플래그 설정 → MPU가 Bridge 폴링 → MPU가 Telegram 알림 전송.
MCU 코드 (Bridge)
Python 코드 (Bridge)
빠른 단계
- 연결: 배선 다이어그램에 표시된 대로 RC522를 Arduino UNO Q에 배선합니다.
- Arduino App Lab 열기: Arduino App Lab을 시작하고 보드가 감지될 때까지 기다립니다.
- 새 앱 만들기: Create New App을 클릭하고, RC522RFIDBridge라는 이름을 지정한 다음 Create을 클릭합니다.
- MCU 스케치 붙여넣기: 위의 MCU Bridge 코드를 복사하여 sketch/sketch.ino에 붙여넣습니다.
- Python 코드 붙여넣기: 위의 Python Bridge 코드를 복사하여 앱의 Python 파일에 붙여넣습니다.
- 업로드: Arduino App Lab에서 Run 버튼을 클릭합니다.

- RFID/NFC 태그를 올려놓습니다 — MCU 콘솔과 Python 콘솔에서 UID를 관찰합니다.
App Lab 콘솔 출력
Telegram
Arduino UNO Q에서 RFID/NFC 태그가 스캔될 때 즉시 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와 RFID 리더로 많은 유용한 프로젝트를 만들 수 있습니다:
- 액세스 제어 시스템: Linux 측에 승인된 UID 목록을 유지합니다 — 태그가 스캔되면 UID를 목록과 비교하고 Bridge를 사용하여 승인되면 전자기 잠금을 해제하거나 승인되지 않은 스캔에 대해 Telegram 알림을 보냅니다
- 출석 추적: 학생 또는 직원이 RFID 카드를 스캔할 때마다 MPU는 UID와 타임스탬프를 Linux의 CSV 파일에 기록합니다 — 하루가 끝날 때 자동으로 일일 출석 보고서를 Telegram으로 보냅니다
- Telegram 태그 등록: Telegram을 통해 /register를 사용하여 마지막으로 스캔한 UID를 승인된 목록에 추가합니다 — /list를 사용하여 Python JSON 파일에 저장된 모든 등록된 UID를 봅니다
- 스마트 로커: RFID와 솔레노이드 잠금을 결합합니다 — 각 등록된 태그는 개인 로커를 10초 동안 해제하며, 모든 액세스가 기록되고 Telegram으로 전송됩니다
- 도서관 책 추적: 책에 RFID 태그를 붙입니다 — 빌릴 때와 반납할 때 스캔하고, 각 이벤트의 타임스탬프와 UID를 Linux의 파일에 기록합니다. Telegram을 통해 쿼리하여 누가 어떤 책을 가지고 있는지 확인합니다
자신을 도전시키세요
Arduino UNO Q의 RFID를 더 진행할 준비가 되셨습니까? 이 도전을 시도해 보세요:
- 쉬움: Python 코드를 수정하여 스캔된 UID가 Python의 하드코딩된 문자열과 일치하면 "Authorized"를 인쇄하거나 일치하지 않으면 "Unauthorized"를 인쇄합니다 — MCU 변경이 필요 없습니다.
- 중간: Telegram을 통해 태그 레지스터를 구축합니다: /register를 보내 Bridge.call("get_uid")에서 마지막으로 스캔한 UID를 Python JSON 파일에 추가하고, /list를 사용하여 모든 등록된 UID를 봅니다 — Python에서 액세스 제어 결정을 내립니다.
- 고급: 시간 제한 액세스 시스템을 구현합니다: 각 등록된 UID는 JSON 파일에 저장된 허용 시간 창 (예: 08:00–18:00)을 가집니다 — 허용 창 외의 스캔은 Telegram 알림을 보내고 문을 열지 않으며, 허용 창 내의 스캔은 10초 동안 문을 엽니다.