M5Stackでできること 〜M5StackでRFID 2ユニットを使う

スポンサーリンク
センサとの接続

「M5Stack用WS1850S搭載 RFID 2ユニット」という製品を購入しました。

RFID(radio frequency identification)は、無線を使ってタグ(ICカードなど)と通信する技術です。
「RFID 2ユニット」は「MIFARE」という規格に準拠しており、MIFAREカードを「RFID 2ユニット」に近づけることで、カードの情報を読み取ることができます。

以前「FeliCaリーダー・ライター RC-S620S」という製品を使ったことはありますが、「RC-S620S」が 3,575円 なのに対し、「RFID 2ユニット」は 781円 と大幅に安価です(いずれもスイッチサイエンスでの2022年10月時点の販売価格)。
さらに、「RC-S620S」を使うには別途ピッチ変換基板なども準備しなければいけないのに対し、「RFID 2ユニット」はGROVEケーブルで直接M5Stackなどにつなぐことができます。

これだけお手軽なら、さまざまな用途に気軽に使うことができそうです。

そんな訳で、早速試してみたいと思います。
MIFAREカードには固有の「UID」が保存されているので、「RFID 2ユニット」でUIDを読み取り、M5StackのLCD画面に表示することにします。


何かを購入した時におまけでついてきたMIFAREカードがあるので、これで試すことにします。

M5Stack BasicのGROVEポートに「RFID 2ユニット」をつなぎます。

スケッチは以下のとおりです。

#include <M5Stack.h>
#include "MFRC522_I2C.h"

MFRC522 mfrc522(0x28);

void setup() {
  M5.begin();
  M5.lcd.setTextSize(2);
  Wire.begin();
  mfrc522.PCD_Init();
}

void loop() {
  if(!mfrc522.PICC_IsNewCardPresent() || !mfrc522.PICC_ReadCardSerial()) {
    delay(200);
    return;
  }
  M5.Lcd.print("[UID]");
  for (byte i=0; i<mfrc522.uid.size; i++) {
    M5.Lcd.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
    M5.Lcd.print(mfrc522.uid.uidByte[i], HEX);
  }
  M5.Lcd.println("");
  delay(500);
}

Arduino IDEの「ファイル」>「スケッチ例」>「M5Stack」>「Unit」>「RFID_RC522」をほんの少し変更しただけのものです。
ちなみに、このスケッチ例は「RC522」というICを搭載した「RFIDユニット」用のものですが、「WS1850S」を搭載した「RFID 2ユニット」でも同じスケッチがそのまま使えるようです。

「RFID 2ユニット」にカードを載せると、M5StackのLCD画面にカードのUIDが表示されます。

 

なお、私がM5Stack、M5StickCの使い方を習得するのにあたっては、以下の書籍を参考にさせていただきました。


ごく基本的なところから、かなり複雑なスケッチや、ネットワーク接続など、比較的高度なものまで、つまづかずに読み進めていけるような構成になっており、大変わかりやすい本です。