3
3

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.

Wio LTEとFeliCa リーダーライター RC-S620/S で FeliCa の IDm を読む

Last updated at Posted at 2019-12-28

年末進行のハズなのに、手元にFeliCa リーダー・ライター「RC-S620/S」が到着したので手を出してしまった 松下(ニックネーム: Max) です。

Wio LTE JP Version に RC-S620/S を取り付けたら、サクッと FeliCa が読めるようになりましたので手順を紹介します。

image.png
FeliCa 近づけて IDm(製造 ID) を表示させているところ

手順

  • ハードウェア
    • Wio LTE の UART ポートに接続。
  • ソフトウェア

ハードウェア

最終的には以下のようになります。

image.png

RC-S620/S

RC-S620/S は既に完成してます。フラットケーブルを接続するだけです。
このフラットケーブルの接続は「気合」です。ググっと手で押し込む感じになります。表裏は写真で見ている通り、「青」が見えるように挿しこみます。

image.png

FFC-6

フラットケーブルをブレッドボードに落とすことができるモジュールです。
現行品は、はんだ付けが必要となります。

ブレッドボードに挿し、フラットケーブルを接続すると以下のようになります。フラットケーブルは引き出し型なので、RC-S620/S よりは安定して接続できます。

ピンアサインは商品ページに書かれています。
Grove ケーブル の並びと同じになっているので素直に挿すことができます。

image.png

Wio LTE との接続

ブレッドボードを介して FFC-6 と Wio LTE JP Version の UART に接続します。

ソフトウェア

Arduino 向け RC-S620/S 制御ライブラリ をダウンロードし、 Arduino IDE のライブラリとして取り込み、コードを書けば動きます。

RCS620S.cpp の編集

RC-S620/S ライブラリを取り込んだら RCS620S.cpp を探して2点編集します。

  1. 新しい Arduino ライブラリを読み込むようにする
  2. Serial とハードコードされている部分を変更する
diff -ur --color arduino-RCS620S.origin/RCS620S.cpp arduino-RCS620S/RCS620S.cpp
--- arduino-RCS620S.origin/RCS620S.cpp  2019-12-28 23:17:25.734916000 +0900
+++ arduino-RCS620S/RCS620S.cpp 2019-12-28 23:18:52.932437700 +0900
@@ -7,7 +7,7 @@
 #include <stdio.h>
 #include <string.h>
 #include <inttypes.h>
-#include "Wprogram.h"
+#include "Arduino.h"
 #include "Print.h"
 #include "HardwareSerial.h"

@@ -309,7 +309,7 @@
     const uint8_t* data,
     uint16_t len)
 {
-    Serial.write(data, len);
+    Serial1.write(data, len);
 }

 int RCS620S::readSerial(
@@ -324,8 +324,8 @@
             return 0;
         }

-        if (Serial.available() > 0) {
-            data[nread] = Serial.read();
+        if (Serial1.available() > 0) {
+            data[nread] = Serial1.read();
             nread++;
         }
     }
@@ -335,7 +335,7 @@

 void RCS620S::flushSerial(void)
 {
-    Serial.flush();
+    Serial1.flush();
 }

 int RCS620S::checkTimeout(unsigned long t0)

Arduino API は 1.0 から include ファイルが Wprogram.h から Arduino.h にリネームされています。一方、配布されているライブラリは古い方を参照しているため include を調整します。

RC-S620/S と接続す UART が Serial とハードコードされています。
本来ならば RCS620S のインスタンス作成時に引数で UART を指定できるようにする修正を入れたいところですが、ちょっと面倒だったので Wio LTE JP Version の UART である Serial1 をハードコードして対応しています。

スケッチ

WioLTE_rcs620s.ino
# include <WioLTEforArduino.h>
WioLTE Wio;
# define CONSOLE SerialUSB

# include <RCS620S.h>
RCS620S rcs620s;

void setup() {
  delay(200);
  CONSOLE.println("\n-- START");
  Wio.Init();
  CONSOLE.begin(115200);
  Wio.PowerSupplyGrove(true);
  Serial1.begin(115200); /* for Wio LTE hardware UART */
  while(!rcs620s.initDevice()); /* ret=1 is failed init */
  CONSOLE.println("\n-- Ready");
}

void loop() {
  CONSOLE.println("\n-- loop");
  if (rcs620s.polling()) {
    CONSOLE.println("FeliCa detected!");
    CONSOLE.print("IDm = ");
    for(int i = 0; i < sizeof(rcs620s.idm) ; i++) {
      char buf[2];
      sprintf(buf, "%02X", rcs620s.idm[i]);
      CONSOLE.print(buf);
    }
    CONSOLE.println();
  }
  rcs620s.rfOff();
  delay(1000);
}

あとは FeliCa を近づければ以下のように表示してくれます。

-- loop
FeliCa detected!
IDm = xxxxxxxxxxxxxx

と表示します。

FeliCa の IDm

FeliCa が持っているユニーク ID が IDm(製造 ID)です。FeliCa を鍵のように使いたい場合はこの情報を使えば OK かと思います。
それ以外の詳細な技術資料は PDF でダウンロード できます。

読み込める FeliCa

FeliCa 規格になっているものであれば何でも読み込み可能です。(書込みは試していません)
https://www.sony.co.jp/Products/felica/business/products/

今回は以下の3つを試して IDm が読み込めることを確認しました。

デバッグ用としては IDm がカードに刻印されているものが便利です。

この後の発展について

Cat.1 モデムがついている Wio LTE で読めるようになったので、 AWS Lambda 等の FaaS を直接呼び出せる SORACOM Funk を使って、クラウド上のデータベースとのマッチングをするといった事が簡単にできるでしょう。

クラウドアダプタ / SORACOM Funk
SORACOM Funk

余談: SoftwareSerial との相性が悪いみたい

Arduino UNO R3 は HardwareSerial が1つしかないので SoftwareSerial を使うしかないのですが、ちょっと試したところうまく動きません。
2012年にトライされた方の記録: http://www.atelier-nodoka.net/2012/04/arduino-software-serial-problem/
どうしたらいいんだろう。。。 Wio LTE JP Version には HardwareSerial が実装されてて良かった!

今回使った機材の費用

ざくっと計算すると、このくらいでした。

  • 約 15,840円

※金額は税抜きです。

役割 機材 金額
マイコン&モデムボード Wio LTE JP Version 9800円
FeliCa リーダー・ライター RC-S620/S 3350円
RC-S620/S ピッチ変換基板セット FFC-6 510円
検証用 FeliCa カード FeliCa Lite-S (RC-S966) 5枚セット 1240円
ブレッドボード どこのやつだったかな? 300~500円くらい
ケーブル Grove ジャンパーピン変換ケーブル (5本入り) 500円くらい

おわりに

こんなことをしている場合じゃないんだが、、、
すでに持っている FeliCa が読めるようになるのは楽しいし、可能性を感じる。
入退出に使えるよね?

参考資料

EoT

3
3
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
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?