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 라이브러리의 설치 방법 (3) | 2015.02.11 |
취업, 창업의 막막함, 외주 관리, 제품 부재!
당신의 고민은 무엇입니까? 현실과 동떨어진 교육, 실패만 반복하는 외주 계약,
아이디어는 있지만 구현할 기술이 없는 막막함.
우리는 알고 있습니다. 문제의 원인은 '명확한 학습, 실전 경험과 신뢰할 수 있는 기술력의 부재'에서 시작됩니다.
이제 고민을 멈추고, 캐어랩을 만나세요!
코딩(펌웨어), 전자부품과 디지털 회로설계, PCB 설계 제작, 고객(시장/수출) 발굴과 마케팅 전략으로 당신을 지원합니다.
제품 설계의 고수는 성공이 만든 게 아니라 실패가 만듭니다. 아이디어를 양산 가능한 제품으로!
귀사의 제품을 만드세요. 교육과 개발 실적으로 신뢰할 수 있는 파트너를 확보하세요.
캐어랩