概要
去年に購入して、積んでいたシリーズです。M5StickCに接続してiPhoneのSuicaを読み取ってみました。
RC-S620Sとは?

FeliCaを開発したソニー株式会社が販売しているリーダー・ライターです。USB接続のものが主流ですが、組み込み系や電子工作用にシリアル接続ができるRC-S620Sが販売されています。
現状USB接続以外のNFCリーダーで、電波法的に確実にOKなのはこの機種ぐらいのはずです。上の写真の右側にある緑色の部分が本体で、鉄板の穴を使って固定できます。
本体にはフラットケーブルなどの付属品はなにもありません。そのため上記にある変換基板とフラットケーブルのセットを購入しています。これはピンヘッダはついていませんので自分で取り付ける必要があります。この商品でなくても0.5mmの6ピンフラットケーブルに対応していれば利用できます。
変換基板の下は自作のGrove接続への変換基板になります。
- FeliCa リーダー・ライター RC-S620S(スイッチサイエンス)
- FeliCa RC-S620S/RC-S730 ピッチ変換基板のセット(フラットケーブル付き)(スイッチサイエンス)
上記を購入して利用しました。変換基板はこれ以外でも大丈夫ですが、まずはセットで購入したほうがいいと思います。
接続方法
M5StickC(ESP32) | Grove Ship | 変換基板(RC-S620S) |
GND | GND | GND |
ー | NC | Reserve |
GND | GND | GND |
GPIO33(RX) | SIG2 | TXD |
GPIO32(TX) | SIG1 | RXD |
5V | VCC | VDD |
こんな感じに接続しています。今回はM5StickCのGrove端子で接続しています。UARTでの接続ですので端末側とRC-S620SでTXとRXがクロスで接続する必要があるので注意してください。

自作のGrove Shipは単にジャンパケーブルを使うのが面倒なので利用しているだけで、通常はブレッドボードにジャンパケーブルで結線をすれば問題ありません。個人的にはジャンパケーブル好きじゃないので非常に気に入っています。
ライブラリ
上記に紹介されているソニーが作成したArduino用純正ライブラリが存在しています。しかし10年以上前のライブラリで、Arduino UNO用に作られているのであまり使い勝手はよく有りません。とくにSerialを使ってRC-S620Sと接続をしているのでESP32では手を入れる必要があります。
そこで、Serialを指定できるようなに修正したものを上記に作ってみました。上記のライブラリをZIPでダウンロードするか、リリースにあるZIPファイルをArduino IDEでインストールすることで利用できるようになります。
スケッチ例
#include "RCS620S_ESP32.h"
RCS620S rcs620s(Serial1);
#define COMMAND_TIMEOUT 400
#define PUSH_TIMEOUT 2100
#define POLLING_INTERVAL 500
void setup() {
Serial.begin(115200);
Serial1.begin(115200, SERIAL_8N1, 32, 33);
delay(1000);
int ret = rcs620s.initDevice();
Serial.print("RCS620S Init = ");
Serial.println(ret);
}
void loop() {
// Polling
rcs620s.timeout = COMMAND_TIMEOUT;
int ret = rcs620s.polling();
Serial.print("RCS620S polling = ");
Serial.println(ret);
if (ret) {
Serial.print("idm = ");
for (int i = 0; i < 8; i++) {
Serial.print(rcs620s.idm[i], HEX);
}
Serial.println();
Serial.print("pmm = ");
for (int i = 0; i < 8; i++) {
Serial.print(rcs620s.pmm[i], HEX);
}
Serial.println();
}
rcs620s.rfOff();
delay(POLLING_INTERVAL);
}
ライブラリのスケッチ例にあるサンプルです。Serial1.begin()で接続しているPINを指定して初期化していますので、ここを書き換えることで他のボードでも利用可能だと思います。またM5StickCでも最新型の5V INが青いバージョンはM5.begin()を呼び出さないとGrove端子に5Vが出力されず、動作しませんので注意してください。
実行して、Suicaをリーダーに近づけるとIDが取得できるはずです。
まとめ
IDを取得するだけであれば比較的かんたんに利用できると思います。ただし、細かい処理を行おうとすると自分で資料を調べて確認する必要があるのでちょっと面倒ですね。整備されたライブラリがあればいいのですがそれなりの価格がするのと、日本以外ではあまり需要がない気もするので仕方ないですね。
コメント