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 를 눌러 종료한다. 데이터를 읽고 쓰고 사용자 인증을 하는 다양한 응용 프로그램은 관련 사이트를 참조하여 진행하길 바란다.
'개발자 > Raspberry Pi' 카테고리의 다른 글
타임랩스 기능 - Python 파일 자동실행하게 만들기 파이선 파일 자동실행되게.... (9) | 2015.04.24 |
---|---|
부팅시 자동으로 실행하도록 rc.local 파일 수정 (1) | 2015.04.24 |
오픈 소스 하드웨어 (OSHW)의 원칙 1.0 (0) | 2015.04.06 |
라즈베리 파이 무선랜 설정 방법 - 여러가지 (0) | 2015.03.31 |
raspberry pi i2c, spi 동작 안 할 때 확인할 것 (0) | 2015.03.10 |
라즈베리 파이2 에 관해 알아야 할 5가지. (0) | 2015.03.10 |
라즈베리 파이 2 gpio 업데이트 - raspberry pi 2 gpio not work (0) | 2015.03.10 |
라즈베리파이 GPIO 제어 wiringPi 라이브러리의 설치 방법 (2) | 2015.02.11 |
더욱 좋은 정보를 제공하겠습니다.~ ^^