스마트홈 시스템에서는 Doorlock 의 개폐 인증을 위해 RFID를 사용하였다. 응용분야가 많은 만큼 RFID 에 대해 자세하게 알아보자.
정확한 실습과 방법은 다음 포스팅에 새로 올렸으니 참고하시기 바랍니다.
라즈베리파이4 RFID RC522 모든 에러 해결 방법
RFID란
RFID(전파식별 : Radio Frequency IDentification)란 라디오파(Radio Wave)를 이용하여 사물에 부착된 태그(Tag)의 IC칩에 저장되어 있는 고유 정보(Data)를 안테나와 리더를 통해서 비접촉 방식으로 수집하여 대상물체를 판독 및 인식하는 것을 말한다.
최근에는 RFID기술의 발전으로 긴 인식거리, 가격의 하락 등으로 유통-물류 분야를 포함해서 생산, 국방, 보안, 교통, 환경 등 여러 분야에서 적용이 가능하여 보급의 활성화가 이루어지고 있으며 사물에 대한 네트워크를 구현하는 유비쿼터스 네트워킹의 핵심요소 이기도 하다. RFID의 동작원리를 간단하게 살펴보자.
라즈베리파이 스마트 홈 실습 과정 전체 포스팅 리스트
라즈베리파이4 스마트홈 액츄에이터 디지털 도어록 실습 8
1. RFID Reader는 RF 필드에 구성된 안테나에서 무선 신호를 생성하고 전파함
2. RF field를 통과하는 tag는 적합한 무선신호를 수신
3. 무선신호는 tag의 자체 안테나에서 수신
4. Tag의 칩은 에너지를 공급받고 사전 프로그램된 데이터(고유 식별자)를 전송
5. 무선신호의 일부가 변조되고 리더에 반향
6. 리더는 반향된 신호를 변환(decode)하고 데이터 수집 장치와 host 시스템으로 전달
RFID의 기본 구성
1) 리더 : RFID 태그에 읽기와 쓰기를 가능하도록 하는 장치로써, 응용프로그램을 수행하는 PC혹은 기타 단말기와 SERIAL 혹은 랜통신(TCP/IP로 연결되며 RFID 신호를 인코딩/디코 딩하는 역할을 수행한다.
2) 태그 : 데이터를 저장하는 RFID의 핵심 기능으로, 태그에는 개체에 대한 정보를 나타낼 수 있다. 모든 태그에는 RFID Chip이 설치되어 각각의 고유번호(UID)를 가지고 있으며 제품에 따라 정보를 저장할 수 있는 메모리 영역을 가지고 있음.
3) 안테나 : 정의된 주파수(13.56MHz)와 프로토콜로 태그에 저장된 데이터를 교환하도록 하는 장치로 리더기에서 보내온 신호를 공간으로 방사하는 역할과 태그에서 보내온 시그널을 수신하여 리더기로 보내는 역할을 수행한다.
여기까지 RFID에 대해 알아보았다. 스마트홈 시스템에서 사용하는 RFID 카드와 리더기의 앞면과 뒷면을 보여준다. RFID Card Reader/Detector Module Kit (13.56Mhz, RC522, S50, Mifare One)
참고로 아래 테이블에 상세 Specification을 나타내었다.
Specification: |
Module Name: MF522-ED Working current:13—26mA/ DC 3.3V Standby current:10-13mA/DC 3.3V sleeping current:<80uA peak current:<30mA Working frequency:13.56MHz Card reading distance :0~60mm(mifare1 card) Protocol:SPI data communication speed:Maximum 10Mbit/s Card types supported:mifare1 S50、mifare1 S70、mifare UltraLight、mifare Pro、mifare Desfire Dimension:40mm×60mm Environment Working temperature:-20—80 degree Storage temperature:-40—85 degree Humidity:relevant humidity 5%—95% Max SPI speed: 10Mbit/s |
스마트홈 시스템에서 결선도는 아래와 같다. 초기 구현 버전이라서 라즈베리파이가 구형이다. 업데이트가 필요하다.
동작 방법은 아래 절차로 테스트를 진행한다. 아마 기술한 대로 동작하지 않거나, 내용을 변경할 경우 다른 포스팅으로 올릴 것이다.
우선 SPI 활성화를 해준다. 이미 되어있을것이다. 파일을 열어 #을 붙여 블랙리스트에서 제거해준다.
$ sudo nano /etc/modprobe.d/raspi-blacklist.conf
# blacklist spi and i2c by default (many users don't need them)
#blacklist spi-bcm2708
#blacklist i2c-bcm2708
blacklist snd-soc-pcm512x
blacklist snd-soc-wm8804
파이썬 모듈을 사용하기 위해서 SPI wrapper 가 필요하다. 우선 'python-dev'를 인스톨하여 환경을 구성한다. 'python-dev’를 인스톨 하기 위해 다음 명령어를 사용한다.
$sudo apt-get install python-dev
SPI 버스로부터 데이터를 읽기 위해 필요한 함수들은 SPI-Py 집합에 있는데 이것은 github를 통해 구할 수 있다. 인스톨하기 위해 SPI-Py 라이브러리를 그대로 카피한다. 이것은 파이썬 SPI 라이브러리를 사용하기 위한 소스코드들이다.
$ git clone http://github.com/lthiery/SPI-Py.git
샘플 프로그램을 설치하여 테스트를 진행한다. 여기서 한가지 해주어야 할 것은 현재 스마트홈 라즈베리 파이는 SPI 포트를 두개를 사용할 수 있게 되어 있다. 즉, SPI제어에 사용되는 CE0, CE1 이 있는데 하나는 MCP3208에서 CE0를 사용한다. 따라서 RFID 리더기에는 CE1을 사용해야 한다. 우리가 받은 예제는 CE0를 사용하게 되어 있으므로 반드시 아래처럼 바꾸어야 사용할 수 있다. pi@raspberrypi ~/SPI-Py/MFRC522-python $ nano MFRC522.py 를 편집한다. 약 110 라인은 이렇게 되어있을 것이다
serNum = [ ]
def __init__(self, dev='/dev/spidev0.0', spd=1000000):
이것을 dev=/dev/spidev0.0’ 을 반드시 dev=/dev/spidev0.1 로 바꾸어 준다.
serNum = []
def __init__(self, dev='/dev/spidev0.1', spd=1000000):
‘Ctrl-x’ 하고 저장하려면 ‘Y’ 하고, 파일이름 변경없이 Enter 하면 된다. 아래와 같이 실행해 보자
pi@raspberrypi ~ $git clone https://github.com/rasplay/MFRC522-python.git
/MFRC522-python $ cd MFRC522-python
/MFRC522-python $ sudo python Read.py
이상태에서 RFID 리더기 위에 네모 태그나 원형 태그를 가져다 놓면 태그를 읽은 결과가 표시될 것이다.
데이터를 확인했다면 ctrl-c 를 눌러 종료한다. 데이터를 읽고 쓰고 사용자 인증을 하는 다양한 응용 프로그램은 관련 사이트를 참조하여 진행하길 바란다.
[참고사이트] http://www.sainsmart.com/sainsmart-mifare-rc522-card-read-antenna-rf-rfid-reader-ic-card-proximity-module.html https://github.com/lthiery/SPI-Py
깃허브 사이트 https://github.com/mxgxw/MFRC522-python
'개발자 > 라즈베리파이4' 카테고리의 다른 글
라즈베리파이4 스마트홈 서버 프로그램 실습 15 (0) | 2023.05.30 |
---|---|
라즈베리파이4 스마트홈 조명 LED bar 실습 14 (1) | 2023.05.29 |
라즈베리파이4 스마트홈 카메라 실습 13 (2) | 2023.05.26 |
라즈베리파이4 스마트홈 RGB LED 실습 12 (0) | 2023.05.25 |
라즈베리파이4 스마트홈 전동볼밸브 실습 10 (0) | 2023.05.22 |
Raspberrypi MCP3208 ADC 전류 센서 연결도 (1) | 2023.05.19 |
라즈베리파이4 스마트홈 가스타이머 실습 9 (0) | 2023.05.18 |
라즈베리파이4 스마트홈 액츄에이터 디지털 도어록 실습 8 (1) | 2023.05.17 |
더욱 좋은 정보를 제공하겠습니다.~ ^^