suicaなどの電子マネーカードにチャージされている金額を読み取って表示するデバイスを作りました。

概要

suicaなどの電子マネーのカードをタッチすると、チャージされている金額を読み取って表示するデバイスです。

実際に動いていている動画はこちらになります。

想定はしていませんでしたが、iPhoneのApple payもうまく動きました。 iPhone側にも残金が表示されているので、このデバイスが正しい値を表示していることが分かります。

構成

全体像

下の図のような部品を使用しています。

FeliCaリーダライタ RC-S620S

今回の要になっている部品です。 Switch Scienceで売っています。
Switch Science: RC-S620S

↑のモジュールはFFCのコネクタがついているだけで、 下記のものも買うとユニバーサル基板で使えるようになります。
Switch Science: ピッチ変換基板

RC-S620SとマイコンはUARTでデータのやり取りをします。 なのでRC-S620SのモジュールはUSRTのTXRXの2本、電源のVCCGNDの2本、合計4本を結線するだけで使うことができます。 電源は5Vでも3.3Vでもどちらでも動作可能です。

RC-S620Sは公式のArduinoのライブラリを使えば簡単に使うことができます。 今回はArduinoではなくPICを使ったので、このArduinoのライブラリを改変して使用しました。
SONY Arduino向けRC-S620/S制御ライブラリ

具体的なSuicaへのアクセスは下記ページを参考にさせていただきました。
ORBIT SPACE: ArduinoでRELET(FeliCa電子マネー残高照会機)モドキを作ろう

マイコン PIC18F27J53

今回はPIC18F27J53を使用しました。 電源電圧は3.3Vで、内部クロックを使用して動かしています。

PIC18F27J53は非常に多くの機能を持ちながら、秋月で270円で買えるのでよく使っています。 PIC18F27J53はこちらでも紹介されています。
KERI’s Lab : PIC18F27J53のすすめ

表示部分 7セグLED

7セグのLED達はダイナミック点灯で数字を表示をしています。 7セグLEDはアノードコモンなので、LEDのアノード側はNPNトランジスタでONOFFし、 カソード側をトランジスタアレイ(シンクドライバ)でONOFFしています。

一桁分の回路はこんな感じになっています。

使用した7セグLEDの順方向電圧が5Vくらいあったので、ACアダプタの出力電圧である9Vを LEDのアノード側に印加しています。 PNPトランジスタを使ってLEDに電流を流すか流さないかを制御しています。 このPNPトランジスタをOFFにするためにはベースを9V、ONにするには8Vくらい以下にしないといけないので、 3.3VのマイコンではPNPトランジスタを駆動できません。 なのでNPNトランジスタを追加しています。

LEDのカソード側の回路は下図のようになっています。

TD62003というトランジスタアレイを使用しています。 これは入力側に01を入力すると出力側に入っているNPNのダーリントントランジスタがONOFFします。 なので電流をせき止めるor吸い込むの制御ができます。(これをシンクドライバというらしい)

おわりに

思ったよりも簡単にできてしまいました。 気が向いたらケースを作りたいです。