平成23年10月16日 日曜日

若松ガイガーカウンターとmbed事始

Filed under: プログラミング — とめくぎ @ 6:41:36

さて、先月買った若松で売ってるガイガーカウンターキットですが、近々自宅以外の遠隔地に設置しようと計画中です。
せっかくイーサー付いてるわけですから、自宅以外の場所を計測させてネット経由で報告させるのが筋ってもんでしょう。

というわけで、先日の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/

平成23年10月8日 土曜日

Webカメラ

Filed under: たわごと — とめくぎ @ 20:54:57

だいぶ前にオークションで2千円くらいで手に入れてたWebカメラを引っ張り出した。
カメラはIDTS-IRCAMという奴。国内の販売元は倒産してもう無い。

このカメラにイオンb-mobileSIMと組み合わせて遠隔地の監視を安価に行う実験なのだ。
とはいっても、このカメラ自体にUSBはあるものの、直接のダイヤルアップは出来ない。
首尾よくドコモのUSB端末のL-02Aを確保したので、コレとマッチするルータを購入した。
(中身はLinuxらしいのでCDC-ACMに手を入れればーとか妄想は尽きない)

久々に引っ張り出したカメラ、はて、パスワードがわからんぞ。
こー言うときは定番のリセット長押しを試す。
リセットはされたみたいだが、DHCPが利かないのでIPアドレスがわからん。
マニュアルもどこか行ってしまったので、デフォルトがわからない。ネットでOEM元の型番がLWJ-330であることを知り、
それでマニュアルを探したところ、192.168.1.220ということが判明。
adminのデフォルトパスはadmin0.速やかに変えよう。

早速ルータのDMZ設定をあけて、れっつアクセス・・・・・。あれ?うまくいかんな。
イオンのサイトをーくみると・・・。
「また、高速なアクセスを確保するためプロキシサーバ経由の接続となります。」と有るッ!
インターネット側からツツく事ができんのか! プロキシにアクセスしている元アドレスも駄目で、完全にお手上げ。
よって、以上のような用途にはb-mobile向きませーん。WebCamのFTP機能で定期的に画像投げることにした。

FTPなんて時代錯誤なプロトコルを使わなきゃならないのはWebカメラの仕様。

なので、投げる先のサーバには日本通信のIPアドレスでアクセス制限を掛けた。
まあ、同じb-mobileアクセスで悪さする奴も居るだろう。安いし。

しかし、これ、確認君やルータ側で表示されるIPアドレスとは違うIPアドレスからアクセスが来る。
httpについては日本通信のプロキシを通ってくるんだけど、他のプロトコルは別の箇所を通ってやってくるみたい。
少なくともダイヤルアップ側のIPアドレスが直でネットにはつながってなさそう。

また、サーバには専用のアカウントを作ってFTP以外ログオンできないようにした。
FTPもchrootをかけて余計な操作が極力出来ないように対策・・・・。といっても焼け石に水。
適当なスクリプトを投げて、それを踏み台にすればある程度のイタズラはされてしまう。

早いうちにVPN貼れるように工夫したいところ。

HTML convert time: 0.084 sec. Powered by WordPress ME