さて、先月買った若松で売ってるガイガーカウンターキットですが、近々自宅以外の遠隔地に設置しようと計画中です。
せっかくイーサー付いてるわけですから、自宅以外の場所を計測させてネット経由で報告させるのが筋ってもんでしょう。
というわけで、先日のb-mobileルータとwebcamのセットで県内某所の施設に設置予定。
しかし、デフォルトのファームだと海のものとも山の物ともつかぬ、パッチョベイとやらに登録して云々と面倒くさい。
twitterで投げたのを拾ってくるのは訳無いからそっちで・・・・、と思ったら、こっちもTwitter以外のどっかのASPに登録して云々と、面倒くさい。
できれば直接サーバのスクリプトに投げたいんだけどー。
とガイガーカウンターの公式サイトを眺めてると、公開されているソースを弄ってGPSやらhttpに投げる改造をされている方が居るのを発見した。
確かにmbedの開発ボードとしての側面もあるこのキット。せっかくなのでmbedでプログラムに挑戦だ!
挑戦して初めて知ったのだけど、これブラウザがあれば開発環境はすべてWebの統合開発環境(IDE)上。すっごい導入が楽。
ソースをweb上の開発環境に投げて、ブラウザ上で実行されるIDEでコンパイル。コンパイルが完了すると、ダウンロードダイアログがでるので、mbedのフォルダにコピるだけ。なんともエレガント。
というわけで、作者のプロジェクトをインポートして早速改造開始!
まずは要らないパッチベイやらGPSの機能を除去。メモリを少しでも空けたい。
元々付いてるtwitterのコードを参考に、CFGファイルに書いたURLにPOSTするメソッドを作成してパッチベイの変わりに初期化部分とmainループに設置するだけ。
あっさりと出来てしまった。
今まではtcpipの低レベルなところから実装して云々と、Webに直接マイコンを繋ぐのは大変だったけど、mbedには強力なツールやみんなが作ったソースがある。
ソースをインクルードして呼ぶだけで簡単にWebに踏み出せるのがすごい。
イーサー付きのH8マイコンボードで放り投げてしまっている、サーバアラート灯もコレで作りたいね!
あと秋月VFDをネットに直結も出来るし!
夢は膨らみまくりんぐ。
■追記
Webアップデート試してみたんだけど、ファイルをダウンロードしたところで表示がズっコケで失敗するなぁ。
メモリ不足かしらん?mbed上にはgeiger.b_、geiger.t_、geiger.m_が出来てる。
遠隔地にあるんで、アップデートできたらなぁと思ったのですが、残念です。
■さらに追記
webアップデートを調査してみたんだけど、既存ファームをバックアップする仕組みの部分でコケている様子。
mbed上のdirを開き、ファイルリストを取得して既存binファイルをリネームする処理なんだけど、どうもそこいらがメモリを食うようで、ストップしてしまう様子。
まあ、その前にファイルの整合性チェックのためのmd5でも結構食っているので、そっちが問題なのかもしれない。
遠隔地で計測させるため、リモートアップデートが失敗すると取り返しが付かないので、この機能は省く事にした。
あと、起動時にetherが刺さってないかDHCPの取得に失敗したときにデータをPOSTするタイミングで再度IPの取得を試みるはずが取得できてない模様。
ウチのファームだけかな?
とりあえず
//これを if (noInternet==1 && eth0.link()==1){
if (noInternet && eth0.link()){//←こうした
以上のようにしたら直った。たぶん「if (noInternet==1 && eth0.link()){」でも良いんじゃないかな?
停電からの復帰時にルータの起動完了より先にガイガーが起動してしまうので、DHCPからIPもらい損ねたり、etherのUPLINKもらい損ねたりするので結構重要。
開発元
http://diytec.web.fc2.com/mark2r2/
mbed
http://mbed.org/