2014年10月10日金曜日

Beetle Moduleを使って出退勤システムを作ってみた

こんにちは。長田です。
今日は、Beetle Moduleを使って、簡単な出退勤システムを作ってみました。















手前の4つのボリュームを回すことで自分のID(2~8の範囲の値を4ケタ)を設定し、送信ボタンを押すことでPCに送信します。

PC側ではそれを受信してアプリ内で検証し、ファイルを出力して入力部に結果をフィードバックします。

大まかな処理ははこのようになっています。

















以下、システムについて見ていきます。

1.システム概要

全体の大まかな概要としては、入力部から無線通信でPCにIDデータを送り、
PC側では入力されたIDがメンバーリストに存在するかどうか照合して、結果をファイルに書き出す、といったものです。
この写真のものが入力部となっていて、ボリュームを回すことでIDを1ケタずつ設定し、
右下のボタンを押すことで送信します。結果に応じて、赤と緑のLEDが点滅します。

                                                     



これがメンバーリストのテキストです。「4ケタのID:名前」の書式で書いて、Windowsの環境変数の設定のようにセミコロン(;)で区切ってあります。このファイルを編集することでメンバーを変更できます。IDを受け取った際にこのメンバーリストを指定文字で区切って読み取り、
受け取ったデータが存在するかチェックします。












アプリの画面出力はこんな感じ。これと同時にテキストファイルにも書き出し、入力部に結果をフィードバックします。

2.実践

食堂に装置を置いて、隣の部屋にあるもう一方の、PCと接続したモジュールと通信します。
















写真だとすごく見づらいですが、ボリュームの値をすべて8に設定してあるので、IDは「8888」になります。メンバーリストにはID8888は設定されているので正常に登録できるはず……恐る恐る送信ボタンをポチッ。






















緑のLEDが光ったので、正常に登録が完了しているはず。PCの様子を見に行きます。











アプリの画面には正常に結果が出力されています。
テキストファイルも、










正常に書き込まれていました。タイムスタンプもしっかり押されています。
他に適当な値を入れて実験を。ID8762を送信してみます。このIDはメンバーリストにはありません。


























赤いLEDが点灯しました。一度しか光っていないのでID整合エラーです。PC側のアプリおよびテキストファイルの出力は、






このようになっています。
アプリ側ではIDが存在しないといわれ、テキストファイルの内容も変化していません。では、もう一度IDを8888に設定して送信してみます。すると、












 先ほど出勤登録がされていたので、今度は退勤となりました。ちなみに写真だとわからないので割愛しますが、出勤登録では緑のLEDが一回点灯したのに対して、退勤登録の場合は2回点灯しています。
また、例外やデータの損失などがあった場合には、赤LEDが何度か点滅するようになっているので、少し待ってから再送信するといいでしょう。










ちなみにテキストファイルは下図のように登録が積み重なっていきます。
これで誰が何時に出退勤したかという情報がわかるというわけです。

3.終わりに

 全体の製作期間は4日ほど。途中わからないことをいつまでも悩んでかなり時間を取られてしまいました。

 あと、可変抵抗の特性の種類をよく理解せずに買ってしまい、買ったのがAカーブだったため、回転角度と抵抗のグラフが二次曲線を描く特性とAD変換による損失などから、ボリュームの両端付近(IDでいうと0,1,9)の入力の変化をとらえるのが難しく、結局IDの入力範囲を2~8とすることになりました。無念…。ちゃんと調べて、Bカーブ(直線を描く)の抵抗を買うべきでした…。

 社員の方に、「問題を切り分けて書き出すなりして整理すれば、わからないことを聞くことができる」と言われ、自分がなかなか質問に踏み出せなかった理由がわかった気がしました。

以上で、私のBeetle Module体験記(?)は終わりです。
最後まで読んでくださりありがとうございました。