2015年2月14日土曜日

ebayで購入したRFIDキットをRaspberry Piで使ってみる



ebayで購入したのは「Mifare RC522 Card Read Antenna RFID Reader IC Card Proximity Module」
中国からの発送で、注文から11日目に到着しました。
カードリーダ/ライター、S50カード、S50タグ、ストレートピンヘッダ、直角ピンヘッダのセット。
4.07ドル、約500円、送料無料。

アマゾンでのRFIDなど

NFC-Developer.com Mifareとは?
”世界的には国際規格のMifareが圧倒的に普及している一方、日本では独自仕様であるFeliCaが普及した。”
”最近、このMifareと日本国内で普及しているFeliCaの両方と通信が可能なNFCが国際規格化(ISO18092)”

同時にRaspberry Pi用3.2インチ、タッチパネルTFT液晶も注文したので、同梱で送られてきました。




こちらを参考にSPIの有効化。

確認で
lsmod | grep spi
をしても何も出ず。
sudo raspi-config
でもう一度SPIを有効にしてリブートすると
lsmod | grep spi
spi_bcm2708             6018  0 
と一つだけ。spidevは??
/etc/modulesを確認してもちゃんと書いてあるし・・・
(この状態でも動作している・・・)
ちなみに
ls /dev/
では spidev0.0 spidev0.1がリストアップされます。


Raspberry Pi + python3で使いたかったのですが、見つけたSPI-Pyモジュールはpython2用?で、RC522サンプルコードもpython2用だったので、とりあえずpython2で動作確認。
(本当は先にpython3で試したけど解決できなかった。後述)

接続は見つけた画像を参考に
I2Cでも接続できるんですか?
動作電源は3.3V。
arduinoUNOとの接続例がありますが、5V信号を直結するのはまずいでしょうね。
3.3V版のarduinoでは直結大丈夫でしょうけど。


こちらを参考にSPIモジュールをインストール

MFRC522ライブラリとサンプルコードは
cd ~ 
(/home/piに移動)
git clone https://github.com/mxgxw/MFRC522-python
でダウンロード。
cd MFRC522-python
sudo python Read.py
(python2で実行)

付属のカードとタグを認識しました!

Read.pyでuidの表示、Dump.pyでEEPROM中身の表示、Write.pyで書き込みも確認。
で、サンプルコードではuidは4バイトで表示されてます。
ライブラリ見ると、uid4バイトにしか対応していないかもしれない?
MIFARE Classic 1Kのuidも4バイトから7バイトになって混在?確認したいなぁ。
「ATQA(Answer To reQuest typeA)の7,8ビットで判定」とあるけど???
S50 = MIFARE Classic 1K?
わからないこと多い・・・

◆python3で使おうとして試したこと


sudo apt-get install python3-dev
参考

cd ~
git clone https://github.com/lthiery/SPI-Py.git
cd SPI-Py
sudo python3 setup.py install

で、MFRC522-pythonのサンプルコードRead.pyをpython3で実行すると、
sudo python3 Read.py
  File "Read.py", line 13
    print "Ctrl+C captured, ending read."
                                        ^
SyntaxError: invalid syntax

サンプルコードがpython2用だからですね。
pythonに含まれている2to3(コードの自動変換スクリプト)を試す。

2to3 -w ~/MFRC522-python
(~/MFRC522-pythonディレクトリ内の一括変換)

変換されたサンプルコードの実行
sudo python3 Read.py
Traceback (most recent call last):
  File "Read.py", line 5, in <module>
    import MFRC522
  File "/home/pi/MFRC522-python/MFRC522.py", line 5, in <module>
    import spi
ImportError: /usr/local/lib/python3.2/dist-packages/spi.cpython-32mu.so: undefined symbol: PyInt_AsSsize_t

SPI-Pyのインストールがうまく行っていない?
そもそもpython3で動かそうとするのが無茶なのかな。

これ以上手に負えなく、諦めて前述のとおりpython2で動作確認しました・・・



環境:Raspberry Pi B+、RASPBIAN


0 件のコメント:

コメントを投稿