개발자/Raspberry Pi

라즈베리파이 RC522 RFID Module 테스트

지구빵집 2015. 3. 17. 20:27
반응형

 

 

RFID Card Reader/Detector Module Kit (13.56Mhz, RC522, S50, Mifare One)

 

라즈베리 파이 테스트 - 파이썬

 

 

우선 SPI 활성화를 해준다. 이미 되어있을것이다.

pi@raspberrypi ~ $ 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

명령을 수행하면 현재 폴더의 하위디렉토리로 디렉토리에 카피된다.

 

Cloning into 'SPI-Py'...

remote: Counting objects: 64, done.

remote: Total 64 (delta 0), reused 0 (delta 0)

Unpacking objects: 100% (64/64), done.

$

 

SPI-Py module 을 인스톨 하기 위해 다음 명령어를 사용하면 인스톨이 된다.

 

$cd SPI-Py

$sudo python setup.py install

 

pi@raspberrypi ~/SPI-Py $ sudo python setup.py install

running install

running build

running build_ext

building 'spi' extension

creating build

creating build/temp.linux-armv6l-2.7

gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/include/python2.7 -c spi.c -o build/temp.linux-armv6l-2.7/spi.o

spi.c:197:2: warning: initialization from incompatible pointer type [enabled by default]

spi.c:197:2: warning: (near initialization for ‘SpiMethods[0].ml_meth’) [enabled by default]

creating build/lib.linux-armv6l-2.7

gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-z,relro build/temp.linux-armv6l-2.7/spi.o -o build/lib.linux-armv6l-2.7/spi.so

running install_lib

copying build/lib.linux-armv6l-2.7/spi.so -> /usr/local/lib/python2.7/dist-packages

running install_egg_info

Writing /usr/local/lib/python2.7/dist-packages/SPI_Py-1.0.egg-info

pi@raspberrypi ~/SPI-Py $

 

샘플 프로그램을 설치하여 테스트를 진행한다.

 

여기서 한가지 해주어야 할 것은 현재 스마트홈 라즈베리 파이는 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 리더기 위에 네모 태그나 원형 태그를 가져다 놓면 태그를 읽은 결과가 표시될 것이다.

 

pi@raspberrypi ~/SPI-Py/MFRC522-python $ sudo python Read.py

 

Welcome to the MFRC522 data read example

Press Ctrl-C to stop.

Card detected

Card read UID: 215,135,109,197

Size: 8

Sector 8 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

^CCtrl+C captured, ending read.

pi@raspberrypi ~/SPI-Py/MFRC522-python $

 

 

데이터를 확인했다면 ctrl-c 를 눌러 종료한다. 데이터를 읽고 쓰고 사용자 인증을 하는 다양한 응용 프로그램은 관련 사이트를 참조하여 진행하길 바란다.

 

 

반응형