マイコン工作実験日記

Microcontroller を用いての工作、実験記録

PASMOの検知

2014-04-04 22:05:02 | Weblog
前回のNFC記事からかなり間が空いてしまいました。前回は ISO14443Bの代表的な用例である運転免許証を検知する実験をおこないましたが、今回はPASMOの検知を試してみました。



PASMOはSuicaと同じく、Felicaの代表的な応用例です。TRF7970AではISO Controlレジスタというレジスタの設定を変更するだけで対象とするNFCの種類 (ISO14443A, ISO14443B, ISO15693, Felica)を選択することができます。他にもパラメータを設定するレジスタはいろいろとあるのですが、とりあえずこのレジスタさえ設定すれば、その他の主要なレジスタはよろしく設定してもらえるらしい。複数の種類のカードを対象として検知するには、このレジスタの設定を切り替えながら、それぞれの種類に応じたポーリングコマンドを投げてみて、その応答有無を確認する必要があります。今回は、Felicaだけを対象に検知してみます。ISO14443BではREQBというコマンドを投げましたが、Felicaの場合にはPOLLINGというコマンドを投げて、その応答を確認します。



この例では、POLLINGコマンドにおいてシステムコード要求というオプションを付けてみました。2枚のPASMOで試してみたので、ちがう結果が得られています。Felicaの仕様については、Sonyが技術資料を開示してくれているので、コマンドや応答のフォーマットは、この資料で調べることができます。上の例では、最後の2バイトの 0x0003が要求したシステムコードに対応する部分で、この値は Suica/PASMO(ならびにその他の交通系カード)に共通のようです。

Suica/PASMOに関しては FelicaリーダやAndroid使って先人が調べた結果がネット上に豊富にあるようなので、これらを参照すれば、カード残額くらいは自分でも表示できそうな気がします。もう少し勉強して、挑戦してみようかな。