あっきぃ日誌

鉄道ブログのような技術系ブログのようななにか

Raspberry PiでICカードの残高をLCDモジュールに表示するやつ2015

OSCの展示でも定番になりつつあるICカードの残高チェッカーですが、環境再構築とか基板の作り変えとかスクリプトとか諸々をアップデートしました。

f:id:Akkiesoft:20150922012453j:plain:w450

環境再構築

まず、本体を自宅のカーテン用のRaspberry Pi Model Aとチェンジ。初代RSケースもわざわざ展示する感じでなくなってきたのと、PiBowケースの方がGPIOをいじりやすいので。

SDカードはMicroSDと小型変換アダプタに置き換え。MicroSDカードは以前買ったけどうまく使えず初期不良かと放り投げていたADATAのClass10の16GBを採用。どうも、RPi2ではちょいちょい相性が出るらしく、RPi1だとうまく使えたりするらしいです。しかも、インストール後は何事もなかったようにRPi2で動いたりする。なぞい。

Raspberry Pi • View topic - Brand new RPi2 wont boot

それはさておき、最新の環境をインストールして、libusbとかlibpafeとかをインストール。この手順もよく忘れたり手でやるのがだるかったりするので、Ansible playbook化しておきました。この後で紹介するスクリプトのダウンロードと自動起動化までやってくれます。lcd-icreader.ymlをいい感じにしてください。

Akkiesoft/RPi-tools · GitHub

スクリプト自体はこちら。

ストロベリー・リナックスのSB1602BWかスイッチサイエンスのI2C LCDを使って、Felica系カードの残高を表示するスクリプト。OSCのデモとかで使用中。 · GitHub

基板の作り変え

以前作った基板はケーブルで伸ばして、スタンドに括りつけていました。

akkiesoft.hatenablog.jp

ただ、これだとOSC展示機材運搬箱(Ejectコンテナ)に入れるとかさばるのと、準備と片付けが手間になるので、GPIOポートに直接させるようにしました。ちょうど2年目にしてリニューアルですね。

f:id:Akkiesoft:20150922013555j:plain:h450

LCDモジュールだけはずさないとダメでしたが、本体・PaSoRiも含めてタッパーに納められるようになりました。SDカードは先述の通り本体につけっぱなしになったので、こんどからは準備も片付けもすっきり簡単にできますし、Ejectコンテナの中身整理も楽になります。

f:id:Akkiesoft:20150922013718j:plain:w450

スクリプトのアップデート

わりと色々いじりました。

  • waonの残高表示の改良(履歴がないカードがunknownになっていた)。履歴ではなく残高のブロックを見るようにした
  • nanacoも履歴ではなく残高のブロックを見るようにした
  • 以下のポイントの表示に対応
  • 東急のるレージ名誉駅長PASMOのみ、PASMOを判別できるようになった
  • 残高表示の時の表記を「(カード名) balance:」から「(カード名) ザンダカ:」に、「XXX yen」から「¥XXX」に変更してみた(カタカナとか円記号も出るんだなー!)
  • 最新のWiringPiモジュールに合わせて関数を変更

残高表示の改良とポイントの表示は以下のサイトが大変参考になりました。ありがとうございます。

ICカードのフォーマット解析

WiringPiモジュールは、メンテされているようでされておらず(Issueのコメントを見るに、作者はわりと見てはいるらしいけど忙しいらしい)、ドキュメントも古いままで軽くビビりましたなど。いつの間に関数名変わってたんだろ。本当はI2CもWiringPiを使ってみようとしたものの、説明とサンプル不足で断念。

まとめ

いろいろいじったので、次回以降から見た目も表示結果も変わったものがお見せできます。そして環境構築(LCDモジュールの組み立て以外)も、展開も、収納も、簡単と。よいですな。

前から書いてますが、LCDモジュールを使って表示する以外のコードは、Raspberry Piにかぎらず度のLinuxマシンでも動かすことができるので、なんかいい感じに活用してみても良いかと思います。とりあえずわたしもmikutterプラグインかなんかに改造してみようかと(?)