6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ESP-WROOM32とRC522でRFIDお遊びしてみた

Last updated at Posted at 2019-10-12

こんにちは。
今回は、秋月電子で入手したESP-WROOM32を用いて、RC522(rfidリーダ)を動かしてみました。
将来的にはRFIDタグを使って、ドアロックシステム、勤怠管理などへのの活用を想定しています。

#動作環境

開発環境のインストールなどは、他の方の記事がわかりやすいです。
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など)
    • 近傍型など....

古いのが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のピンアサインは以下の通り
ESP32-Pinout.png
(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のライブラリをインストールしましょう。
スクリーンショット 2019-10-12 1.28.06.png

インストールできたら
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タグをかざしてみると、以下のような画面が表示されます。
スクリーンショット 2019-10-13 1.26.23.png
灰色で隠した部分が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)

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?