これは高知工科大 Advent Calendar 2016の9日目の記事です.
高知工科大B4の@gyaneです.
言語処理系の話をするとかいってましたけど嘘です.
ラズパイで簡易購買システム的な何かを作った話をします.
研究室のボス(以下ボス)「研究室内にカップ麺とか買える売店ほしいよね」
私「そうすか.某部ではFelica使った購買システム作っていいかんじにやってますねー」
ボス「へー いいねぇ」
数日後
ボス「買ってきたよ(Felicaのカードリーダを手に)」
私「」
ボス「ラズパイ持ってたよね? それ使ったらなんかできそうじゃね? よろしく!」
私「」
だいたい以上のような事件がありました.
この時期は卒研生は忙しく,研究室の滞在時間も長くなっています.
私も若干欲しいところはあったので,息抜き&この記事のネタ作りにと
思い,作ることにしました.
作るものはプリペイド方式のキャッシングシステムです.
カードリーダに学生証をかざすだけで,一定の金額をチャージしたり,
ものを買うときはそこから引かれたりする,というのものです.
FelicaでCashingするSystemとか,どこかで聞いたことがあると思う人も
いるかもしれませんが,それは気のせいです.
作るにあたって考慮すべきこと,考慮しなくていいことなどは以下の通り.
- 研究室の余っているディスプレイやキーボードもしくはマウスを使いたいが,場所がなくて使用できない(半分くらいは嘘だが).
- 何か買うのは100円単位,チャージは1000円単位.それだけでおk.
- 作るの時間かけてらんない
あとなにかあったきがしたけどわすれました.
ディスプレイを使えないとはいえ,
ユーザに何も情報をあげないわけにはいかないです.
というわけで,私の机の中にあったキャラクタディスプレイを使うことにしました.
カードかざした時点で金が引かれるというのは嫌なので,
その確認などに使用するためのボタンが欲しいです.
周りにタクトスイッチしかないのでそれを使うことにしました.
すごくありきたりな環境で面白みに欠けます.
- デバイス: RaspberryPi Model B+
- OS: Raspbian
- 使用言語: Python 2.7.3
- データベース: MySQL 5.5
- 非接触カードリーダ: Sony Model RC-S310
Felicaのリーダからデータを読むのは, 落ちてたものを使用させていただきました.ありがたや.
お世話になったRaspberryPi.
カードリーダは結構な旧世代型です.
スピード重視で作ったので作りは雑です.
本当に運用するならちゃんとコードの煩雑さはもう少しどうにかしないといけないなーとか思ったり思わなかったり.
とりあえずブレッドボードで線をつないでます.
ブレッドボードで使い続けるのはちょっと嫌なので, そのうちてきとうに基板にします.
入力はタクトスイッチふたつとカードリーダからのみです.
操作は,
- チャージするときはOKのスイッチを押してからカードをかざして確認のOKを押すと1000円チャージ
- 買うときはカードをかざして確認のOKを押すと100円ひかれる
- 初めて使用されたカードは自動で登録される
といった具合です.
チャージ額/支払い額の指定は1000円/100円だけなのは嫌ですね.
そのうちなんとかしたいです.
研究室でとりあえずデバッグにと思って放置してるんだけど,
ボス以外だれも興味を示してくれない.
ブレッドボード使ってる時点でうちの研究室では存在感強いと思うんだけどなー
いくらksシステムとはいえ辛いぞ.
近日中(?)に運用を開始します(?)
運用開始しましたら,研究室外の方も構いませんので,
どうぞいらしてお金を落としていってください.