
장거리 UHF RFID 리더기를 다음과 같은 단일 보드 컴퓨터와 통합하면, Raspberry Pi는 물리적 보안, 자동 차량 차단 게이트, 지능형 주차 관리 시스템 및 스마트 팩토리 출입 통제를 위한 견고한 산업용 기반을 제공합니다. 표준 고주파(HF 13.56 MHz) 또는 NFC 카드 리더기는 가까이 접촉해야 작동하지만, 초고주파(UHF 860 MHz – 960 MHz) RFID 시스템은 장거리에서 수동형 EPC 태그를 감지할 수 있으므로 비접촉식 차량 식별 및 자동 게이트 작동을 위한 업계 표준입니다.
이 종합 기술 가이드에서는 Raspberry Pi와 고성능 JENCE J4212U (또는 JENCE J4220U Long Range Reader)를 완전한 독립형 자동 게이트 출입 통제 시스템으로 변환합니다. 수동 데스크톱 GUI 앱에 의존하는 대신, 터미널에서 직접 실행되는 이벤트 기반 Python 스크립트를 배포합니다. 이 스크립트는 백그라운드에서 지속적인 인벤토리 스캔 루프를 유지하고, 수신되는 EPC Class 1 Gen 2 (ISO 18000-6C) 태그를 인증된 데이터베이스와 대조하며, JENCE 리더에 통합된 General Purpose Output (GPO) 핀을 직접 트리거하여 외부 릴레이 모듈을 작동시키고 전동 차단 게이트를 구동합니다.
시스템 아키텍처 및 엔지니어링 원칙
장거리 RFID 게이트 자동화의 주요 과제는 저전압 마이크로컨트롤러 로직과 고전류 전기 기계 장비를 연결하는 것입니다. 이 튜토리얼에서는 고전류 유도성 모터 스파이크를 Raspberry Pi의 민감한 마이크로프로세싱 코어에서 격리하는 분리형 하드웨어 아키텍처를 사용합니다.
STEP 1. 준비물

핵심 구성 요소 및 하드웨어 사양:
- Raspberry Pi 싱글 보드 컴퓨터:
- 호환성: 32비트 또는 64비트 Raspberry Pi OS(구 Raspbian)를 실행하는 Raspberry Pi 3 B+(이 프로젝트에서 사용), Pi 4, Pi 5 또는 Pi Zero 2 W와 완벽하게 호환됩니다.
- 역할: 터미널을 통해 사용자 지정 Python 제어 스크립트를 실행하는 주 애플리케이션 호스트 역할을 합니다.
- 전원 공급: 지속적인 USB 직렬 통신 중에도 안정적으로 작동하려면 전용 5V / 2.5A 이상의 전원 공급 장치가 필요합니다.
- JENCE UHF RFID 리더 모듈:
- 권장 하드웨어: 장거리 차량 출입 통제용 JENCE J4220U Long Range Reader(최대 12m 이상)[Amazon에서 구매 가능] 또는 데스크톱 프로토타이핑 및 단거리 테스트용 소형 JENCE J4212U Reader/Writer [Amazon에서 구매 가능](이 프로젝트에서는 주로 JENCE J4212U Reader/Writer를 사용했습니다).
- 통신 인터페이스: 고속 USB-A to Mini-B 케이블을 사용해 표준 USB-to-UART 직렬 프로토콜로 작동합니다.
- 5V 광절연 릴레이 모듈(High 트리거 방식):
- 기능: 트리거 로직 신호를 받으면 고전류 DC 모터 회로를 연결하는 전기적으로 절연된 스위치 역할을 합니다.
- 제어 입력: VCC, GND 및 IN(신호 입력).
- 외부 모터 전원 공급 장치 및 DC 모터(게이트 시뮬레이터):
- 전원: 게이트 모터 부하를 구동하는 데만 사용하는 외부 조정식 전원 어댑터 또는 배터리입니다. (경고: 모터 전원을 Raspberry Pi 또는 JENCE 리더 헤더에서 직접 끌어오지 마십시오. 역기전력과 전류 소모로 인해 저전압 경고가 발생하거나 로직 보드가 손상될 수 있습니다.)
- 모터: 전동 슬라이딩 게이트, 회전식 개찰구 또는 주차 차단기 암을 모사하는 3V–12V DC 기어 모터입니다.
- 플라이백 / 프리휠링 다이오드(1N4007 또는 유사 제품):
- 보호: 릴레이가 개폐될 때 발생하는 유도성 전압 스파이크(역기전력)를 억제하도록 모터 단자에 역병렬로 연결합니다(캐소드: 양극, 애노드: 음극).
- UHF RFID 태그:
- 수량 및 모델: 3개 이상(DogBone 태그를 권장하며, 최대 인식 거리를 제공합니다. J4212U 및 J4220U 패키지에 태그 3개가 기본 포함되어 있습니다) [또한 다음에서 구매 가능: RFDOME Store 및 Amazon].
- 연결용 전선 / 점퍼 케이블:
- 수량 및 종류: 필요한 만큼(수-암, 암-암, 수-수 등 표준 점퍼 케이블).
- 브레드보드(선택 사항):
- 수량: 1개(간단한 회로 분배 및 프로토타이핑에 사용).
STEP 2. 하드웨어 배선 및 상호 연결 가이드




이 설계의 핵심 혁신은 Raspberry Pi의 GPIO 핀을 사용하는 대신 JENCE 리더의 전용 GPO(General Purpose Output) 단자 헤더를 활용하는 것입니다. 이를 통해 호스트 컨트롤러의 배선이 복잡해지는 것을 줄이고, 로직 지연을 최소화하며, 실제 출입구에서의 하드웨어 설치를 간소화할 수 있습니다.
배선 확인을 위해 위의 전체 프로젝트 도면을 참조하세요:
A. 제어 신호 배선(JENCE 리더에서 5V 릴레이 모듈로)
- VCC(릴레이 보드) → 5V 전원 출력(JENCE UART 헤더 핀 5): 릴레이 내부 코일을 구동하는 데 필요한 5V 작동 전원을 공급합니다.
- GND(릴레이 보드) → GND(JENCE GPIO 헤더 핀 3): JENCE 로직 출력과 릴레이 보드 사이에 공통 접지 기준을 설정합니다.
- IN / Signal(릴레이 보드) → GP01(JENCE GPIO 헤더 핀 2): 주요 디지털 트리거 신호선입니다. 인증된 태그가 식별되면 Python 애플리케이션이 이 핀을 HIGH(+5V)로 구동하여 릴레이 상태를 전환합니다.
B. 부하 회로 배선(릴레이에서 외부 전원 공급 장치 및 DC 모터로)
- 외부 전원 공급 장치(+) 양극 리드선 → 모터 단자 1: 양의 전압을 DC 모터에 직접 연결합니다.
- 외부 전원 공급 장치(-) 음극 리드선 → 릴레이 Normally Closed(NC) 단자: 접지 귀환선은 릴레이의 NC 단자에 연결됩니다.
- 릴레이 Common(C) 단자 → 모터 단자 2: 릴레이 코일이 활성화되면 음극 접지 회로를 완성합니다. (참고: 하이사이드 양극 스위칭이 일반적이지만, 릴레이 NC/C 단자를 통해 로사이드 음극 접지선을 차단하는 방식도 동일하게 작동하며 완전히 지원됩니다.)
- 플라이백 보호 다이오드: 1N4007 다이오드를 모터 단자 1과 모터 단자 2 사이에 납땜하거나 연결하고, 은색 캐소드 띠가 양극 전원 레일을 향하도록 하세요.
STEP 3. 소프트웨어 준비 및 종속성

이 자동 게이트 컨트롤러는 Linux 터미널에서 헤드리스 Python 애플리케이션으로 실행됩니다. Python이 플랫폼 간 하드웨어 추상화를 제공하므로 이 프로젝트는 다음 두 환경에서 모두 원활하게 실행됩니다: 32비트 및 64비트 Raspberry Pi OS 배포판.
1단계: 운영 체제 및 종속성 설정
Raspberry Pi에서 터미널 세션을 열거나 SSH로 연결한 후 시스템 패키지를 업데이트하고 Python 3, Pip 및 pyserial 통신 라이브러리를 설치하세요:
sudo apt update && sudo apt upgrade -y
sudo apt install python3 python3-pip python3-pyserial -y
2단계: 프로젝트 파일 및 디렉터리 구조
자동 게이트 애플리케이션을 실행하려면 Raspberry Pi의 동일한 프로젝트 디렉터리에 세 개의 특정 파일이 함께 있어야 합니다. 제공된 Google Drive 디렉터리에서 프로젝트 ZIP 아카이브를 다운로드하고 압축을 해제하세요:
/home/pi/RPI_AUTO_GATE/
RPI_RELAY_AUTO_Gate.py # Primary executable terminal script
j421xlib.py # Python wrapper library for JENCE C-SDK
libj4210u.so # Native compiled binary driver (.so shared library)
모듈 아키텍처 설명:
- RPI_RELAY_AUTO_Gate.py (주 애플리케이션): 주 애플리케이션 루프, 터미널 직렬 포트 선택 프롬프트, 지속적인 EPC 태그 폴링 로직, 하드코딩된 인증 확인 배열 및 GPO 트리거 타이밍 루틴이 포함되어 있습니다.
- j421xlib.py (Python SDK 래퍼): libj4210u.so의 저수준 C 함수를 OpenPort(), Inventory(), SetGPO()와 같은 고수준의 사람이 읽기 쉬운 Python 함수로 가져옵니다.
- libj4210u.so (컴파일된 C/C++ 공유 라이브러리): JENCE UHF 하드웨어에서 직접 고속 USB-Serial 패킷 구문 분석, CRC 확인 및 레지스터 조작을 처리하도록 특별히 컴파일된 기반 저수준 바이너리입니다.
전체 오픈 소스 SDK 를 다운로드하여 JENCE UHF RFID 리더 하드웨어를 다음의 지원 플랫폼 중 하나와 통합할 수 있습니다:
- Android
- Arduino
- Banana Pi
- BeagleBone / BeagleBone AI-64
- Linux (64비트)
- macOS / macOS (Intel)
- Node.js
- Orange Pi
- PocketBeagle
- Python 3
- Raspberry Pi (32비트 및 64비트)
- Windows (32비트 및 64비트)
소프트웨어 다운로드: JENCE GitHub 저장소에서 오픈 소스 SDK 및 Demo App을 다운로드합니다: https://github.com/jence/j4210u-app
STEP 4. Python 스크립트 실행 및 워크플로 로직


스크립트 실행 명령
터미널에서 프로젝트 디렉터리로 이동한 후 기본 Python 컨트롤러를 실행합니다:
cd ~/rfid_gate_project
python3 RPI_RELAY_AUTO_Gate.py
대화형 직렬 포트 선택
실행되면 스크립트가 시스템에 연결된 USB-직렬 인터페이스를 검색합니다. 대화형 터미널 메뉴가 표시됩니다:
/home/pi/rfid_gate_project/
Available Serial Ports:
1. ttyACM0 (JENCE UHF Reader)
2. ttyUSB0 (Generic USB-Serial)
Enter the number of the port you want to use: 1
- 1(또는 ttyACM0 또는 ttyUSB0에 해당하는 인덱스)을 입력하고 Enter키를 누릅니다.
- 스크립트가 기본 baud rate(115200 (J4220U의 경우) / 57600 (J4212U의 경우))로 직렬 연결을 설정합니다[현재 사용 중인 리더에 맞게 baud rate를 하드코딩해야 합니다].
- 스크립트는 즉시 초기화 명령을 전송하여 GP01을 LOW(0)로 설정하고, 게이트 릴레이가 안전한 무전원 상태로 강제되도록 합니다.
하드웨어 동작 참고 사항(전원 인가 시 GPO 상태): JENCE 리더의 전원을 처음 켜거나 USB에 연결하면 온보드 GPO 핀이 초기화되지 않은 임의의 상태로 기본 설정될 수 있으며, 콜드 부팅 시 HIGH 로 시작하는 경우가 많습니다. 이로 인해 전원이 처음 인가될 때 릴레이의 표시 LED 또는 코일이 일시적으로 작동할 수 있습니다. 이는 예상되는 하드웨어 시작 동작입니다. 터미널에서 RPI_RELAY_AUTO_Gate.py를 실행하고 포트를 선택하면 스크립트가 즉시 핀 출력 상태를 LOW (0)로 덮어써 릴레이를 리셋하고 정상적인 잠금 상태를 유지합니다.
STEP 5. 프로그램 실행 로직 단계별 설명

- 연속 재고 스캔: Python 스크립트가 무한 루프에서 Inventory()를 호출하여 JENCE 리더의 RF 필드에 있는 수동형 UHF 태그를 지속적으로 조회합니다.
- EPC 데이터 파싱: RFID 앞유리 태그가 부착된 차량이 안테나 빔에 들어오면 리더가 태그의 96비트 EPC 메모리 뱅크를 디코딩하여 USB를 통해 전송합니다.
- 인증 확인: 스크립트가 스캔한 EPC 문자열을 인증된 hex 값(예: 3030AFEC2B09C44000000001)이 포함된 내부 Python 목록과 대조합니다.
- 릴레이 활성화:
- 일치하는 항목이 확인되면 터미널에 인증 로그 메시지가 출력됩니다.
- 스크립트가 j421xlib.py를 통해 SetGPO(1, 1)을 호출합니다.
- GP01 출력이 5V HIGH로 전환되어 릴레이 코일에 전류를 공급합니다.
- 물리적 게이트 동작:
- 릴레이 접점이 닫히면서 기계적인 "딸깍" 소리가 울립니다.
- 릴레이 모듈의 녹색 상태 LED가 켜집니다.
- 외부 전원 공급 장치의 고전류 전원이 릴레이 단자를 거쳐 DC 모터로 흐르고, 모터가 회전하여 차단기 게이트가 올라가는 동작을 시뮬레이션합니다.
- 자동 닫힘 리셋:
- 스크립트가 지정된 시간만큼 지연합니다(예: time.sleep(3.0)).
- 스크립트가 SetGPO(1, 0)을 실행하여 GP01을 LOW로 되돌립니다.
- 릴레이가 열리면서 모터가 정지하고 게이트가 닫힙니다.
- 시스템은 즉시 다음 차량을 검색하기 시작합니다.
STEP 6. 터미널 실시간 로깅 및 출력 검증


터미널 환경에서 실시간으로 실행하면 RPI_RELAY_AUTO_Gate.py가 재고 스캔 주기와 릴레이 제어 상태를 반영하는 실시간 진단 정보를 출력합니다.
A. 유휴 스캔 루프(감지된 태그 없음)
리더의 RF 커버리지 영역에 UHF RFID 태그가 없으면 스크립트는 설정된 간격(예: 3초마다)으로 인벤토리 스윕을 완료하고 다음과 같은 진단 스캔 지표를 출력합니다.
Scantime = 300
No tags found.
time taken 0.570512
Inventory Finished in = 0.57s
Scan #17: No tags found, trying again in 3s...
Scantime = 300
No tags found.
time taken 0.570488
Inventory Finished in = 0.57s
Scan #18: No tags found, trying again in 3s...
B. 태그 감지 및 릴레이 활성화 루프
인증된 태그(예: EPC 3030AFEC2B09C44000000001)가 안테나 영역에 들어오면 터미널에 안테나 채널, RSSI 신호 세기, EPC 길이, 태그 수를 즉시 기록하고 GPO 트리거 명령을 실행합니다.
Tag List (Scan #4):
Ant: 1 | RSSI: -121 | EpcLength: 12 | Count: 3 | EPC: 3030AFEC2B09C44000000001
--- Scan complete. Total tags read on this scan: 1 ---
>>> [RELAY] Triggering GP01 to HIGH...
>>> [RELAY] GPO is now HIGH. Holding for 3 seconds...
>>> [RELAY] Deactivating GP01 to LOW...
>>> [RELAY] GPO is now OFF.
Inventory Finished in = 0.57s
STEP 7. 문제 해결 및 현장 배포 팁

- 초기 부팅 시 릴레이 플래시/클릭: 위에서 설명했듯이 리더의 전원을 연결하자마자 릴레이가 활성화되는 것은 하드웨어의 무작위 전원 켜짐 상태(플로팅/HIGH) 때문입니다. Python 애플리케이션을 즉시 실행하면 GP01을 LOW로 끌어내려 이 상태를 해제합니다.
직렬 포트 장치 경로 및 권한(권한 거부): Linux 시스템 권한이나 OS 구성에 따라 직렬 장치는 /dev/ 아래(예: /dev/ttyACM0 또는 /dev/ttyUSB0)에 탑재됩니다. Raspberry Pi에서 포트를 열 때 AccessDenied 오류가 발생하면 현재 사용자에게 dialout 그룹 권한을 부여합니다.
sudo usermod -a -G dialout $USER
(참고: 그룹 권한이 적용되도록 로그아웃한 후 다시 로그인하십시오.)
- 모터 회전 불안정/Raspberry Pi 재설정: 모터가 작동할 때 Raspberry Pi가 재부팅되거나 멈춘다면 전원 레일을 공유하여 전압 강하가 발생한 것입니다. 모터는 반드시 별도의 외부 전원 공급 장치에서 완전히 전원을 공급받도록 하고, 플라이백 다이오드가 설치되어 있는지 확인하십시오.
- 릴레이가 계속 켜져 있음: 릴레이 보드의 트리거 논리(Active High 또는 Active Low)를 확인하십시오. Active Low 릴레이 보드를 사용하는 경우 RPI_RELAY_AUTO_Gate.py의 논리를 반전하여 SetGPO(1, 0)이 릴레이를 활성화하고 SetGPO(1, 1)이 릴레이를 끄도록 하십시오.
- 게이트 감지 거리 조정을 위한 안테나 튜닝: j421xlib.py의 구성 매개변수에서 JENCE 리더 전원 설정(0–26 dBm)을 조정하여 태그 감지 거리를 1미터(사람용 개찰구)에서 10미터 이상(차량용 차단기 게이트)까지 보정하십시오.
STEP 8. Raspberry Pi와 JENCE UHF 리더로 보안 출입 시스템 혁신하기
자동화된 보안 출입 시스템을 Raspberry Pi 와 JENCE UHF RFID Reader 를 사용해 구현하는 것은 마찰 없는 현대적 자동화를 향한 전략적 도약입니다. 수동 자격 증명 확인을 무선 주파수 식별 기술로 대체하면 무단 동반 진입의 취약성을 없애고, 승인된 출입 시간을 크게 줄이며, 고효율 보안 경계로 자산을 보호할 수 있습니다.
독자 여러분께:
필요한 수정 사항 이 있으면 이 프로젝트를 업데이트하고 더 많은 링크, 이미지 및 동영상 을 나중에 추가하겠습니다.
원문: https://www.instructables.com/How-to-Build-an-Automated-RFID-Gate-System-With-Ra/