013.(解説)ラズベリーパイ2
初回:2018/10/31
0.今回のまとめ
前回の解説(※1)の続きで、もう少しラズパイについて話しておきたいと思います。
「浮気するの?」(※2)
ソースコードをいっぱい書いても仕方ないので、手順だけにしておきます。
1.MFRC-522 RC522 RFIDモジュールICカード誘導センサー
今回は、RFIDのICカードを使ってみたいと思います。(※3)
これは、PICC(Proximity IC Card)近接型 IC カードの読み取り、書き込みができサンプルとして、RFIDカード1枚とキーホルダ型RFIDが付いています。
少し説明すると、「Mifare」(マイフェア)の非接触型ICカード(※4)は、世界中で利用されている非接触型ICカードを使用した近距離無線通信技術の事です。
日本では、FeliCa(フェリカ)(※5)が有名ですが、今回の MFRC-522では、読み取りできません。FeliCa の読み取りスキャナも、2~3000円で購入できますので、予算に余裕のある方はそちらを試してみ良いかもしれません。
この、MFRC-522の動作周波数は13.56MHzで、サンプルのICカードは 1KB のメモリ量です。(※6)
ちなみにRFIDのメモリは、SSDやUSBメモリのようなフラッシュメモリではなく強誘電体メモリです。富士通さんがFRAMという商標で販売されています。(※7)
2.RFID-RC522を使ってみる。(※8)
設定手順を書いていきます。
「今回、出てくるタイミングが難しいわね」(※9)
① 必要なパッケージをインストール
$ sudo apt-get -y install python-dev
② Python SPI制御ライブラリ
setup.py install 時に、python3 環境にも入れておきます。
$ cd
$ git clone https://github.com/lthiery/SPI-Py.git
$ cd
$ cd SPI-Py
$ sudo python setup.py install
$ sudo python3 setup.py install
③ MFRC522-pythonサンプルプログラム
※ MFRC522-python のままでは、このフォルダを、import 出来ない。
$ cd
$ git clone https://github.com/mxgxw/MFRC522-python.git MFRC522
$
$ cd
$ cd MFRC522
④ サンプルを実行
$ sudo python Read.py
$ sudo python Dump.py
とりあえず、サンプルが動けば設定が出来ているという事です。
3.Python3 にしてみる。
ここまでは、Webで検索すると結構出てきます。それではオリジナリティーがありません。
「もともと、パクリ癖があるもんね」(※10)
⑤ MFRC522 を、python3 対応します。
2to3 アプリケーションを使用します。
https://docs.python.jp/3/library/2to3.html
$ cd
$ cd MFRC522
$ cp MFRC522.py MFRC522.py_orginal
$ 2to3 -w MFRC522.py
MFRC522.py_orginal っていうのは、一応バックアップを取っておきます。
⑥ MFRC522 フォルダに、__init__.py という空のファイルを置きます。
この__init__.py という訳の分からないファイルと、モジュールの管理方法など、やはり Python というべきか、訳が分かりません。
「ついに、本領発揮ですね。理解できないのは単にあなたの頭が固いだけでは?」
⑦ rfidフォルダを作成し、MFRC522 フォルダのサンプルを持ってきます。
Read.py , Write.py , Dump.py をコピーで持ってくる。
$ cd
$ mkdir rfid
$ cp MFRC522/Read.py rfid/Read.py
$ cp MFRC522/Write.py rfid/Write.py
$ cp MFRC522/Dump.py rfid/Dump.py
⑧ 各ソースの先頭に、MFRC522 へアクセスするためのパスを記述します。
import sys
sys.path.append('/home/pi') # MFRC522 を import するため
from MFRC522-python import MFRC522
⑨ python3 対応を行ったうえで、少し修正する。
2to3 アプリケーションを使用します。
$ cd rfid
$ 2to3 -w Read.py
$ 2to3 -w Write.py
$ 2to3 -w Dump.py
実は、サンプルをだいぶ書き直してRFIDを他のアプリケーションから簡単にアクセスできる様にモジュール化したのですが、公開する方法がうまく動かなかったので公開出来てません。
「やっぱり、あなたって役立たずね。」
・・・
ほな、さいなら(※11)
======= <<注釈>>=======
※1 前回の解説
http://el.jibun.atmarkit.co.jp/pythonlove/2018/10/0112.html
011.(解説)ラズベリーパイ1
※2 「浮気するの?」
途中から読み始めた方に説明すると「」で出てくる仮想女性は、私があこがれているツンデレPythonの心の声です。つまり、Pythonからラズパイに心変わりしたんじゃないか?という意味です。
チャーハンが好きだからって、カレーは食べてはだめ、なんてことはないでしょう。
※3 MFRC-522 RC522 RFIDモジュールICカード誘導センサー
https://www.amazon.co.jp/gp/offer-listing/B00K67YI64
¥ 266 + 配送料無料
この値段で、RFIDカードリーダライタと、カード本体、キーホルダーのセットです。
※4 「Mifare」(マイフェア)の非接触型ICカード
https://www.petitmonte.com/robot/rfid_rc522.html
※5 FeliCa(フェリカ)
Suica、WAON、楽天Edy、nanacoなど主に日本国内で利用されています。
※6 MIFARE Standard
http://m-health.u-aizu.ac.jp/~m5101102/SM130/basic_know.html
3ブロックのデータ部と1ブロックのシリアルトレーラーが交互に整列
シリアルトレーラー部分は読み込むことができるが、任意のデータを書き込むことはできない。
0~2番目のブロックも書き込むことができない。
0~7 まで書込みできない。
8 ~ 63 までの、(4n+3)番目のブロック以外と通信
MIFARE Standard 1kは、約768バイトのメモリを持ち、それが16のセクタに分かれている。
※7 FRAMの回路
http://www.atmarkit.co.jp/frfid/special/fram/fram02.html
高速なデータ書き換えに耐えるRFIDタグを考える
1. データの読み出しと書き込みが同速度かつ高速
EEPROMでは、100マイクロ秒から数ミリ秒が必要となる。
FRAMでは、150~300ナノ秒の時間であり、100倍以上高速である。
2. データの書き換え回数の耐性が大きい
EEPROMは、10万から100万回の書き込み回数の制限がある。
FRAMは100億回のデータ書き込みの保証を行っている。
この数字は、1秒間に30回の書き込み動作を10年間絶え間なく行った場合に到達する値である。
3. 書き換えに要する電力が小さい
EEPROMではデータの書き込みや消去において、10から20Vの高電圧を内部で発生してゲート電極に加える。
さらに効率の悪いゲートへの電荷注入に時間が必要なため、電力の消費量が大きくなる。
FRAMではキャパシタに加える電圧が3Vと低く、キャパシタとビット線との間の電荷のやりとりによりデータの読み出しと書き込みを行っていることから原理的に低消費電力となる。
※8 RFID-RC522を使ってみる
http://www.gosoly.com/entry/2017/03/25/090000
※9 「今回、出てくるタイミングが難しいわね」
確かに、ちょっと文章が固いですね。
※10 「もともと、パクリ癖があるもんね」
http://el.jibun.atmarkit.co.jp/pythonlove/2018/10/0101.html#t3
010_自己投資まつり ※3 の事を言ってるんだと思います。
そんなことはありません。プンプン。
※11 ほな、さいなら
ぐうの音も出ない時は、逃げるが勝ちです。