こんにちは。
今回は、秋月電子で入手したESP-WROOM32を用いて、RC522(rfidリーダ)を動かしてみました。
将来的にはRFIDタグを使って、ドアロックシステム、勤怠管理などへのの活用を想定しています。
#動作環境
- ESP32-DevKitC ESP-WROOM-32開発ボード
- [RFIDモジュール RFID-RW522](http://www.aitendo.com/product/7415)
- Arduino IDE 1.8.8
- 各種ブレットボードなど
開発環境のインストールなどは、他の方の記事がわかりやすいです。
https://qiita.com/Agatsuma854/items/7b8fec42c5e9f0db7002
#RFID-RW522(RC522)について
RFID-RW522は、MFRC522チップが載っているRFIDボードです。500円程度で購入可能。←激安!
ESP-WROOM32とはSPIで接続します。
RFIDの中にも規格が複数あって、rc522は「MIFARE」という規格のICタグに対応しています。
#RFIDってなんぞや
RFIDにもいろいろ種類があります。
- RFID
- 近接型(13.56MHz)
- TypeA(MIFARE)(ISO/IEC14443)(学生証、アミューズメントカードなど)
- TypeB(ISO/IEC14443)
- TypeC(Felica)(Suicaなど)
- 近傍型など....
- 近接型(13.56MHz)
古いのがTypeA(mifare)。世界中で多く使用されています。
TypeC(Felica)は日本で普及している型。有名なのはSuicaなど。
今回使用するRFID-RW522はTypeAのみ対応なので、交通系IC(Felica)(Suicaなど)を読み取ることはできません。
交通系IC(Felica)を読み取りたい方は、PN532チップを搭載したボードを買いましょう。
#SPI接続について
シリアル・ペリフェラル・インタフェース(Serial Peripheral Interface, SPI)は、コンピュータ内部で使われるデバイス同士を接続するバスである。パラレルバスに比べて接続端子数が少なくて済むシリアルバスの一種で、比較的低速なデータ転送を行うデバイスに利用される。
なーんか難しそうですが、簡単に言えば
- 4つの信号線
- SS
- SCK
- MOSI
- MISO
- RST
- 電源
-
の合計7本の線をつないでやれば、通信できるということ。
んじゃあ、そのSPIとやらの端子はどこにあんの?ってことで
ESP32-devkit Cのピンアサインは以下の通り
(image from https://components101.com/microcontrollers/esp32-devkitc)
まとめてみると
|ESP32-devkitC側|RC522側|
|---|---|---|
|IO5 |SS |
|IO18|SCK |
|IO23|MOSI|
|IO19|MISO|
|3v3|3.3v(Vcc)|
|GND|GND|
|IO26|RST|
に接続してあげればよい。
#コードを編集する
まずMFRC522のライブラリをインストールしましょう。
インストールできたら
Sample Sketch/MFRC522/ReadNUIDを読み込んでみましょう。
そしたら34,35行目に
#define SS_PIN 10
#define RST_PIN 9
とありますが、これはArduino用?なのでESP32用に書き換えなければなりません。よってピンアサインに従って
#define SS_PIN 5
#define RST_PIN 26
と書き換えます。
#コンパイル&実行(シリアルモニタ)
コンパイル&実行し、シリアルモニタを起動します。
RFIDタグをかざしてみると、以下のような画面が表示されます。
灰色で隠した部分がNUIDと呼ばれる、カード固有のIDです。
(HEXは16進数、DECは10進数表示)
このIDを識別して、キーロックシステムなどの構築が可能、、、なはずでした、、、
#(完全に余談)NUIDとUIDとは
####UID
UIDは「Unique ID」の略。MIFAREカード製造時にICチップに書き込まれる製造番号。書き換えは不可能。
しかし、
####NUID
この「UID」は世界に一つしかない番号であったが、2010年で4ByteUIDが枯渇し、
「Non Unique ID」 (NUID) になった。
https://fujifilm.jp/business/security/id_ic/promotion/glossary/
というわけなのです。確率としては非常に低いですが、重複する危険性があるということです。
でもまぁ、アマチュア電子工作レベルでは無視してはいいのでと思います。
#次回予告
お疲れ様でした。今回はNUIDを読み取ってSerialMonitorに表示するところまで進めました。
次回は、NUIDをデータベースと照合するシステムについて書きたいと思います。
(詳しくいえば、読み込んだNUIDを、firebaseに登録しているidと照合し、i2c接続したLCDに照合結果を表示するデバイス)
#(※詳細、躓いたのでメモ)ESP32のSPI接続には実は3種類ある。
- SPI
- SPI
- VSPI
- HSPI
通常、何もしなければVSPIが使われるとのこと。
わかりやすい記事(https://qiita.com/cattaka/items/48f0853c2ac7552c833e)