若松ガイガー 20111130版 公開

※(追 12/02)省電力モードでバグが見つかってます。(詳しくは記事の最後を)


 しばらく更新が途絶えて、そろそろネタが尽きたかと思われたかもしれませんが、水面下でコッソリ作業を続けておりました。
 恐らくは影響を受けていた方は僅かだと思われる細かいバグ修正しつつ、かなりの人に喜んで頂けるんじゃないのかと思う機能強化が数点です。


20111130版 ファームウェア一式 バグが見つかって 差し替えました


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

  • GPS通信速度で38400bps以上が指定できないバグを修正
  • Twitter/Logging/UdpSend で日本語を含む送信に正式対応(設定ファイルはUTF-8形式で保存すること)
  • Twitterでツィートするときの線量の閾値を設定できるよう機能追加
  • モバイルバッテリーでの運用を想定し必要最小限の電力で動作する省電力モードを仮実装
  • 2台のGPSレシーバーを接続してのデュアルGPSに対応(1stGPSで測位不能なとき2ndGPSを自動選択)
  • 設定ファイルの項目名の判定で小文字/大文字の区別を排除
  • (互換機むけ)複数管使用時に管毎のcpm値を出力する際の項目名が間違えていたバグを修正


 11/15のコメント で予告しておりました日本語を含むツィートに完全対応しました。
 これまでも、設定ファイルを UTF-8 で保存することで日本語を含むツィートが可能だったらしいのですが、日本語1文字で3バイト消費する UTF-8 に合わせて内部の変数を広く確保し、余裕で140文字の日本語ツィートが出来るようにしてあります。
 Windows のメモ帳などで勝手に付加される BOM の処置も行っていますので、「正式対応」と銘打ってみました。
 ちなみに、日本語以外に中国語でもアラビア語でも何でも大丈夫なはずです。(試してはいませんが理論上は世界の全ての言語に対応しているはず・・・)



 次・・・音が鳴り始める線量閾値は sound や sound_usv で指定できるようにしましたが、それの Twitter バージョン「線量が高くなったらツィートする」機能を用意しました。
 もともと私のファームでは最高で3種類まで Twitter 設定ファイルが利用できる風になってますので、指定線量を超えたときは別の Twitter アカウントでツィートするとか、同じ Twitter アカウントのままメッセージの内容だけ変えてツィートするとか、いろいろと応用して貰えるかなと思います。
 さらに細かい制御をしたい方は、WebサーバーかSyslogサーバーを立ち上げてもらって、そこへ WebPost/UdpSend でデータ飛ばすようにしてサーバーの中で何とか工夫してくださいね。



 次・・・先週末の さわやかウォーキング with Mark2 で感じたのですが、青白バックライト付き液晶&GPS 込みで 250mA も食う機材を持ち歩くという運用は普通じゃないことに気がつきました。
 そこで、mbed のサイトに載っていた数々の省電力プラン の中から省電力効果の大きい、LANの無効化(-40mA)、クロックダウン(-22mA)、USBの無効化(-20mA)の3つだけ取り込んでみました。
 env.ini の中に savePower=1 を書くと省電力モードになります。


 ただし USBの無効化 に関しましては 先ほどのリンク にありますとおり、mbed の中の工場出荷ファーム(私が作ってるファームよりも更に奥のファーム)の差し替えを行わないと省電力にはなりません。(-62mA の省エネに留まる)
 その「USBの無効化が出来るようになるファーム」を導入したあとで、元のメーカー出荷の標準ファームに戻すことも簡単にできますので、モバイルで外へ持ち出す方は気軽に試してみましょう〜


 どノーマル(+リチウム電池)の Mark2 に 5.0V ジャストの電源を投入して比較させてみました。
 数値の単位は mA で、mbed のみならず、液晶やGM管むけ高電圧など Mark2 の全てで消費する電流値です。

標準 省電力モード(LAN無効/CLKダウン) 省電力モード(左に加えUSB無効)
http://dl.ftrans.etr.jp/?b9060ea41c17401c90fae87c4c3979bdbc32865a.jpg http://dl.ftrans.etr.jp/?b1955891894c499f82168a22f783812911f88f6a.jpg http://dl.ftrans.etr.jp/?14506876254b416c9008d221c67d2b4f24d73cfd.jpg

http://dl.ftrans.etr.jp/?92160a5608784633be968e21d0fe3779f57c1f73.jpg
 もの凄い効果です!


 「USBの無効化が出来るようになるファーム」まで入れると 50mA 台にまで節約され、右写真のとおり、セリアの100円USB電源に単3NiMH×2本+PSP用USB充電ケーブルというチープな電源構成でも正常かつ安定して稼働するようになりました。


 実際に単3NiMH×2本でどれくらいもつのかは、おいおい評価してみますが、100均のUSB電源は過放電保護回路がなく、放電させすぎると NiMH電池の寿命が縮みますので放電させすぎないように。


 ちなみに、「USBの無効化が出来るようになるファーム」をセットしても、USB ポートにケーブルが刺さっていると USB 無効化されないようで、50mA 台の省電力状態で使う際にはACアダプタ向け EIAJ#2 の口から給電する必要があります。
 省電力モードでは LAN が無効化されますので、使用できるのは Logging サービスのみとなり、Twitter や Pachube などのネットワークを利用したサービスは無視されます。GPSmicroSD は利用可です。




 次・・・私のように予備の GPSレシーバー を常にストックしている方に朗報です。
 mbed にはシリアル通信が3ポートあるみたいなんですが、その2つ目 10番ピンを用いて2台目の GPSレシーバー を接続できるようにしました。
 まさに「下手な鉄砲も数打ちゃ当たる」的な発想の代物ですが。
 本当は衛星の捕捉数などの情報から「感度が良さそうな方のGPS」を判別して利用するのが望ましいとは思いますが、今回のバージョンではそこまで辿り着けず・・・
 とりあえずのところ、プライマリ(14番ピン)のGPSが衛星を見失ったらセカンダリ(10番ピン)を試してみる、という挙動になってます。


 また、nmealog もプライマリ側とのみ連動して動作します。(セカンダリの情報は利用されません)
 GPS の種類は通信速度を含めプライマリとセカンダリで異なっていても構いません。



 最後に・・・項目名「lcdLayout」とか、「なんでL だけ大文字やねん!」って生理的に受け入れられない方が多少なりともおられると思いましたので、項目名(=の左側)は大文字小文字の個別をしないようにしました。
 「LcdLayout」でも「LCDLAYOUT」でも「LcdlayouT」でも・・・もう好きにしてください。
 ちなみに、項目名と値の区切りは「=」「:」のどちらでも大丈夫なようになってます。(初期の頃から忍ばせておいた隠し機能)

定義ファイル 項目名 目的 指定方法 省略時
env.ini savePower 省電力モード 0:通常 1:省電力 通常
env.ini gpsBaud0 または
gpsBaud
プライマリGPSの通信速度 4800とか9600とか GPS未使用
env.ini gpsBaud1 セカンダリGPSの通信速度 4800とか9600とか GPS未使用
Twitter 設定ファイル tweet_usv ツィートする線量の閾値 0.4とか 線量に関わらずツィート


 デュアルGPSの配線
http://dl.ftrans.etr.jp/?91b5227bfd2b459aaa993f10e0c2785d7c2735a9.jpg


次版の予定
 リチウム電池GPS も付けておられない方が、買ったまんまの Mark2 に私のファームだけ入れて外出先でログ記録するときは、外部電源につないだ Mark2 をインターネットにつないで一旦 NTP 時計合わせし、そのまま電源が落ちないように気をつけながら外へ持ち出す、という運用にならざるを得ませんが、せっかく実装した省電力モードを有効にすると LAN が止まって NTP 時計合わせが出来なくなってしまいます。
 モバイルなのに NTP のために省電力有効にできないというのも本末転倒なので、起動直後から LAN を停止させるのではなく、DHCP や NTP など最初の数十秒だけ LAN 有効にしておいて計測が始まったあたりで LAN を停止させる、というお利口モードを用意しようと思います。
(省電力有効にしつつ起動直後だけ NTP 時計合わせが出来るというもの)


 あと今回の省電力モード実装に伴うテスト中に実感したのが、省電力モード ←→ 通常モード の切替えをしたいがだけのためにパソコンをつないでモード変更しないといけない、という苛立ち。
 ここはひとつ、操作無用のモニタリングポストにとっては禁断?の、プッシュボタンを付けてしまおうではないですか!という境地に至りました。
 とはいえ、あまり凝ったインターフェースを作ると疲れますし、だんだんモニタリングポストらしからぬことになってしまいます。
 そもそも、そーいう系には一桁mAしか電気を食わない専用ガイガーが似合ってるので、とりあえずは以下の3機能だけのためにボタンを用意しようかなと思ってます。

ボタン押しながら電源ON env.ini で設定した省電力モードの反対で起動する
動作中に軽くボタンを押す 液晶の表示モード(lcdLayout)を 0→1→2→0 のように切り替える
動作中にボタンを長押し 安全に動作停止(データ書き込み中に電源が落ちてファイルが破損することを防ぐ)


 SPP な bluetooth ユニットを mbed にシリアル接続してスマホなどから遠隔制御する構想もあって部品は購入済みなのですが、Mark2 には液晶やフラッシュディスク付いてるんだからスマホとリアルタイム通信する必要もないだろ、という気持ちに傾きつつあり、「やっぱ、まずはボタンだよな」と・・・

 他にご意見あったら是非とも。


追記(2011/12/01)
 省電力モードにした Mark2 にセリアUSB電源に単3NiMH×2本から給電して・・・という件、過放電させないようにって念押ししてましたが、言ってた当人が、ついうっかり不動になるまで放置してしまい・・・


 電池の開放電圧を測ってみると 0.7V とか・・・嗚呼、完全なる過放電なり!
 100均USB電源を使う場合は終端 2V(NiMH1個あたり1V)を検知して、過放電手前で給電停止する回路が必要ですねぇ


 まだ10回位しか充放電させていない、割に新鮮なNiMH電池で稼働時間は13時間くらいでした。


追記(2011/12/02)
 省電力モードで再現性のあるバグ(フリーズ現象)を発見しました。
 「USBも停止して最大省電力」の時のみ発生するぽいです。


 「省電力モードを使わない」もしくは「USB停止ファームを導入していない」もしくは「USBから給電を行っている場合」は発生しません。