若松ガイガー 20130827版 公開

 本記事には古い情報が含まれている場合があります。まとめページ を作成しましたので併せて御覧下さい。


 静岡県内で強い放射能汚染を疑わせるトラックに遭遇した記事 を先々週くらいに書きました。
 牧ノ原SAで車を停めてノートパソコンを広げて測定値を確認して「やっぱり怪しかったんだ」という結論になりましたが、さすがに走行中は「なんとなく怪しい気がする」という程度で、それほど強い確信は持てなかったのは事実。。。


 CPS値の尋常らしからぬ変動具合が走りながら分っていれば、一緒に掛川ICを降りて決定的なデータを収集できたはず・・・という屈辱をバネに苦節10日間、ついに会心の機能を盛り込むことに成功いたしました。
http://dl.ftrans.etr.jp/?0b2a66e54ceb4f0680ae6a31991a6d9185eaeb1d.jpg
(J209×2、高感度GPS、車載ルーター常時接続、lcdLayout=2 モード)


 ちょっと見えにくいかも知れませんが、右側の棒みたいなの分かりますでしょうか?
 なんと過去8秒分の測定値を16セグメントでグラフ化し、測定値の変化をリアルタイムに視認可能になりました!


20130827版 ファームウェア一式
まっさらな mbed に導入する前提で全てのファイルを同梱していますが、旧バージョンからアップグレードされる方は geiger.bin のみの上書きで大丈夫です。


20130505版との機能比較 (20130505版の仕様はこちらを参照ください)

  • StewGateU(beta)に対応
  • xively.com(cosm.comの後継)に対応
  • 液晶レスモニタリングポスト向けに液晶表示を止めるモードを新設
  • NMEA形式ログをUdp送信するときの書式をSyslogの規格(RFC3164)に出来るだけ準拠


20130802版との機能比較 (20130802版の仕様はこちらを参照ください)

  • 簡易グラフ表示機能を暫定追加(とりあえずlcdLayout=2時に8秒分のcps値を16段階でグラフ表示)
  • 線量変化の率でブザー鳴動する条件を追加(lcdLayout=2時に動作)
  • cps値を閾値にしてブザー鳴動する条件を追加(lcdLayout=2時のみ)
  • DHCPからのアドレス取得の再試行回数を指定できる機能を追加
  • GM管定義ファイルの中で管の特性に依存するパラメータを定義できるよう機能強化
  • CDSと連動して自動輝度調整する際の階調変化を滑らかになるよう修正
  • 複数管のときでも管毎にレコメンド線量値の計算機能を実装
  • I2C接続の気圧センサー(LPS331AP)に対応
  • I2C接続の湿度センサー(HIH-6130)に対応
  • アナログ出力の湿度センサー(HIH-4030)のパラメータファイルを同梱

注意


 以前に本家のオリジナルファーム Ver1.0 を利用されていた方の mbed 内に GEIGER-2.bin というタイムスタンプ 2008/01/01 のファイルが出来ている場合があります。


 2012/1/7頃に実施された自動アップデートによってダウンロードされたプログラムのようですが、mbed の中に拡張子 BIN のファイルが複数あると意図せぬ誤作動が起きやすくなりますので、私のファームを導入する前に GEIGER-2.BIN は予め削除しておいて下さい。


 特にタイムスタンプが変な(新しいのに古い日付の) BIN ファイルが混じると理解困難な不可解な現象(意図したファームが動いてくれない)が起きやすくなりますので、そんなときには、全てのファーム(拡張子が BIN)を削除して再起動させ、その後に目的の BIN を1つ入れて再起動し直して下さい。


 タイムスタンプが変なファームによって mbed の内部で行われているバージョン管理が狂ってしまったとき、BINファイルがひとつもない状態にして起動させることで狂った管理テーブルがクリアされるようです。

 2013/08/02版は追記すると書きつつ説明を怠っていたので、あわせて今回に説明させて頂きます。
 長文になりますこと、ご容赦下さい。



StewGate-U(beta)に対応
xively.com(cosm.comの後継)に対応



 内部的な動作変更でして、パラメータの設定方法(使い方)の上では全く変わっておりません。



液晶レスモニタリングポスト向けに液晶表示を止めるモードを新設



 私のところで屋外測定してるモニタリングポストは必要ないため液晶を繋げてありません。
 液晶が不要なときは、ただ単に繋げなければいいだけの話ではありますが、液晶表示にもそれなりにリソース食ってるので、液晶表示ロジック一式をメモリーに展開することもしないというモードを新設しました。


 env.ini 内にて lcdLayout=-1 とすることで液晶関係を完全に切り離して空きメモリーを増やすことが出来ます。
 今でもかなり安定しているとは思いますが、更に安定性が向上するかも知れません。



NMEA形式ログをUdp送信するときの書式をSyslogの規格に出来るだけ準拠



 NMEA形式の測定値データ(GPS+DMDRT)を SYSLOG サーバーに飛ばしている人は皆無だと思うんですけれど、これまでは SYSLOG の仕様の一つ RFC3164 を全く無視し、NMEA書式そのままで SYSLOG サーバーに飛ばしていました。
 それはそれで受け取る側の SYSLOG サーバーが上手に処理してくれるので実害はないと思いますが、RFC3164 の規格書 を読んで、私なりに「これで準拠したはず」と解釈した書式になるようにデータを出力するオプションを設けました。


 NMEA定義ファイル内で facility=15 みたいに、ファシリティ番号を定義すると、RFC3164 ぽく出力されるようになります。
 きっと汎用的な SYSLOG 管理ソフトで扱えるフォーマットになっているはずです。
 今のままでいい人は、facility を未定義のままお使い下さい。



簡易グラフ表示機能を暫定追加



 今回の目玉と言って良い(言いたい)機能です。
 キャラクタ液晶の4桁×2行のエリアを用いて、16セグメント×8列 の棒グラフを描画します。


 色んな目的に使うことが出来る目処は立っているのですが、とり急ぎ lcdLayout=2 のホットスポット捜索モードのときに CPS値 (1秒あたりのカウント数) を表示することに使ってみました。
 横軸が8列あり、最大で過去8秒分に渡って変化の雰囲気を視覚的に確認することができます。
(最新が右端で1秒おきに左へスクロールしていく)


 車載機をグラフ表示される際は、くれぐれも、よそ見運転に注意!!


 さてグラフを表示させる方法ですが、GM管定義ファイル(J408.ini や J209.ini)の中に、graphScale=1 みたいな記述を追加してください。
 lcdLayout=2 の時に上で挙げたように右側にグラフが表示されるようになります。
 外付けボタン のある人はボタンプッシュで lcdLayout の内容が変わっていきますが、ボタンのない人は、env.ini 内で lcdLayout=2 と書いてみて下さい。


 ちなみに、graphScale の右辺の数字はcps値を縦16ドットのグラフで表すにあたっての縮尺の度合いを示し、「1」のとき、1cpsを1ドットの高さで(つまり等倍で)表されます。
 お勧めとしては J408 クラスのとき「1」、J209 あたりで「0.25〜0.5」くらいが適値かなと思います。
 普段は全体の 1/4 位でチョろチョろしつつ、先般の汚染トラック遭遇くらいのときにフルスケール振り切る風になるはずです。


 管が SBM-20 の方でも graphScale を設定しさえすれば一応はグラフ表示されますが、SBM-20 で 平均1cps ったら 0.6μSV/h 前後、平均2cpsで 1.2μSV/h に相当します。
 直ちに避難を開始したほうが良いほどの高線量の環境じゃないとグラフっぽく見えませんので、SBM-20 だと実用的に使える場面はないかもしれません。


 cps値じゃなくて、過去8分間にわたってcpm値の変化をグラフ表示するくらいが精々かと思われますが、需要ありそうなせば次版で実装してみたいと思いますが、いかがでしょう?



線量変化の率でブザー鳴動する条件を追加



 ブザー鳴動を線量の変化率で制御するオプションを追加しました。
 ホットスポット捜索時にしか使われないと思うので、lcdLayout=2 のときのみに動作するようにしてあります。


 env.ini 内に sound_percent=25 みたいに指定すると、左側の測定値(レコメンド秒数)が右側の測定値(レコメンド秒数×5)の 25% 以上になったときにブザーが鳴動するようになります。
 日常的に 20% くらいは常に変動するので、この機能を使われる場合は 20〜30 くらいの数値を指定するのが良いように思います。(20以下の設定では使わないほうがいい)



cps値を閾値にしてブザー鳴動する条件を追加



 先日の汚染トラッククラスを見逃すことがないよう新たに設けました。
 瞬間的に観測された cps値 に基づいてブザー鳴動します。
 GM管定義ファイルもしくは env.ini の中で sound_cps=30 みたいに定義します。
(両方で定義したときはGM管定義ファイルを優先)


 J209クラスの管の時で「40」くらい、J408クラスの時で「10」くらいにしておくと、先般のトラックレベルに遭遇した時にブザーが鳴るはずです。
 判定に用いる cps値、複数管のときは全管の合計値となりますので、GM管2本で運用してる方のときは1管時の ×2 な値にしておきましょう。



DHCPからのアドレス取得の再試行回数を指定できる機能を追加



 私の車載ルーターだけかもしれませんが、ルーターと同時に電源を入れたとき、ルーター内部での DHCP サーバー起動が若松ネットガイガーの起動よりも遅いせいか、LANのリンクは張れているものの DHCP からのアドレス取得に失敗する、ということが時々起きます。


 ひとえに粘り負けなので、retryDHCP というオプションを追加しました。
 「3」を設定するとアドレス取得を3回まで粘るようになります。
 env.ini 内でお使い下さい。



GM管定義ファイルの中で管の特性に依存するパラメータを定義できるよう機能強化



 もっとも初期のバージョンは専ら SBM-20 を使う前提にたって、ほとんどのパラメータを env.ini 内に記述していましたが、私の最近は J209 やら J408×3 やらに主軸が移ってきたせいで、gmtype=J209.ini にしたのに sound_cpm は SBM-20 向けに 30 のままにしてあって殆どブザー鳴りっぱなし〜とかやらかすことが増えてきたので、その手の管の感度等に依存するパラメータを GM管定義ファイル の中でも設定できるようにしました。


 いろんな管を取っ替え引っ替え使っていない人も多いでしょうから、以前までの env.ini 内に記述する方法もそのまま残してありますが、両方で違う値を定義したときは GM管定義ファイル が優先します。


 両方で記述できるパラメータは以下のとおりです。

  • stepVolt
  • sound_cps
  • sound_cpm
  • signalInterval

I2C接続の気圧センサー(LPS331AP)に対応



 これまで気圧センサーとして I2C インターフェースの MPL115A2 に対応しておりましたが、繋いだ方は分かると思いますが、測定値がなかなか惨い・・・
 傾向としては概ね掴めますけど、グラフは人様に見せれる代物じゃありません。


 そんなとき、秋月の新製品一覧を眺めていたら、なにやら精度の良さそうな気圧センサー LPS331AP を見つけ、早速ポチった上で対応いたしました。
 どのくらい素晴らしいかと言いますと・・・

MPL115A2 LPS331AP
http://dl.ftrans.etr.jp/?6ae0cd0ced12429494641fdc0704c0e23ae1e874.png http://dl.ftrans.etr.jp/?0ecd09d264f64649a0834358b86298d1bdb94bf4.png


 ここまで歴然とした差だと、もう MPL115A2 は捨てるしかありませんね。


 この LPS331AP は SPI/I2C どちらの方法でも接続可能ですが、I2C は僅か2ピンしか消費しないうえに、同一バスライン上に複数の機器を並列することで同時接続できますので、I2C で接続することにします。
 説明書 に従って I2C モードになるようにしましょう。


http://dl.ftrans.etr.jp/?8228ff90e5734006902924aba87f85e22fad767e.png


 次に説明する予定の湿度センサー HIH-6130 も一緒に回路図に書き加えました。
 この図の中に説明文を書きましたが、HIH-6130 には信号線のプルアップ抵抗 2.2kΩ が強制的に入っています。
 対して LPS331AP のほうは、ピンをショートさせるかどうかで選択できます。


 両方のプルアップを有効にすると合成抵抗 1.8kΩ となり、たぶんこの程度なら動くとは思われるものの、そこまでインピーダンスを低くする必要もないので、HIH-6130 とセットで使うときには LPS331AP のプルアップは利用しないほうがベターです。


 LPS331AP の I2C アドレスは B8/B9 と BA/BB を選択できます。
 evn.ini 内の定義も選択したアドレスに対応させるように記述します。

B8/B9を選択したとき LPS331AP=i2c;b8
BA/BBを選択したとき LPS331AP=i2c;ba

(上の回路図は B8/B9を選択したとき です)



I2C接続の湿度センサー(HIH-6130)



 湿度センサーに aitendoで扱われてる HSM-20G を利用してきましたが、表向き「湿度測定範囲:20-95%」と謳ってますけど、データシート に「Output Voltage Range:DC 1V-3V」と書かれているとおり、実際には 1V(約30%)〜3V(約80%) の範囲しか測れません。


 「Operating RH Range:20-95%」というのは、ただ単に「湿度20〜95%の環境で運用されることを前提にしてます」というだけで、これを「測定範囲」と誤訳しているのがソモソモの間違い。。


 30%以下や80%超が測れなくても実害はないのですが、少々値が張るものの、HIH-6130 という湿度センサーに対応させてみることにします。


 接続方法は LPS331AP の説明文のところを読んで下さいませ。


 測定結果の例を出してもいいのですが、我が家では有り余る太陽光発電の電力を用い、昼間は除湿器フル稼働により「低湿な環境」を維持してまして、あいにく HSM-20G のレンジ範囲を超えるような極端な低湿/高湿な環境ではありません。
 屋外だと、かなり広い範囲で変動しますので、いずれ屋外のを交換した上で測定値をお見せしたいと思ってます。



※有り余る太陽光発電の電力(ちょっと脱線)
 巷で流行ってる太陽光発電を導入されてる家庭の方は、自前で発電されているにもかかわらず、1Wでも売電する電気量を増やすべく最大限の節電で夏を乗り切られているそうですが、我が家の電気は売れない電気。


 発電できるのに電気を余らせると勿体ないので、除湿器などの快適家電(贅沢家電)を無人の昼間にフル稼働させ、存分に電気を浪費する生活を営んでおります。(それでも無人の昼だと公称990Whの独立型太陽光発電の電気は余る)
 帰宅したとき部屋が乾いてると、それだけで幸せじゃないですか。