若松ガイガー 20111027版 公開
本記事には古い情報が含まれている場合があります。まとめページ を作成しましたので併せて御覧下さい。
この前に予告してましたとおり、ヒープメモリーの積極活用で空きメモリーを大幅に確保できました。
まさに「これまでの苦労はなんだったんだろう・・・?」って状態です。。
メモリーが確保できたので新機能も実装しちゃいました。
「新機能って、せっかくのメモリー減るじゃん」って心配されるかもしれませんが、必要ないサービスは有効にしなければ、ポインターの分くらいしかメモリーを消費しませんのでご心配なく。
ちなみに PC 接続してデバッグログを見ると、数秒おきに空きメモリー容量が見えたりしますので、興味のある方はどうぞ
かなり負荷の高い方法で空きメモリーを割り出しているので、今後のバージョンでは削除する予定ですが。
20111027版 ファームウェア一式 こちらの20111103版 をお使い下さい。
20111018版との機能比較(20111018版の仕様はこちらを参照ください)
- Twitter/Pachube/Logging/WebPostを複数アカウント(条件)で多重起動できるようにしました
- これまでの60分・10分に加えて60秒移動平均も追加しました
- 上段に60秒平均、下段に10分平均(以前のまま)、を液晶表示するホットスポット検索モードを用意しました
- (メモリーを確保できたので)WebPostで不動項目(GM管の特性など)も毎回送信できるようにしました
- GPS受信でチェックサムも計算するようにしてエラーデータを排除するようにしました
- NMEA形式でGPSログを出力するモードを仮実装しました(DMDRTセンテンスにも仮対応)
普通のガイガーカウンターぽく「60秒平均モード」を新設しました。直近60秒間の計測値を使って計算しています。
低線量地域では SBM-20 くらいの中感度管だと、かなり変動幅の大きい数値になりますが、J408 や STS-6 と言った高感度管(SBM-20の4〜5倍の感度)に換装した場合には、割にいい感じの数字になるのではないのかな、と思ってます。
これに伴い、液晶の表示レイアウトを変更するモードを新設しました。
env.ini で lcdLayout を 2 とすることで、上段に60秒平均値が出るようにしました。
下段がこれまで通りの10分平均です。
上段と下段とを見比べて、上段が高ければ線量が上昇中、上段が低ければ線量が低下中、とザックリ判断することができますので、ホットスポットを探し当てるのに便利かなと思ってます。
(ただし、低線量(特に0.2μSV/h 以下)の環境では、上段と下段の違いは測定誤差でしかありませんので気にしないように)
空きメモリーが出来たことを活用して、microSD 向けに NMEA 形式のまま GPS ログを出力するモードを仮実装しました。
出力されたファイルは普通の GPS ロガーが吐き出すデータと同様に扱えます。
今のところ GPS から得たセンテンスのうち、$GPRMC と $GPGGA しか出力してませんが、カシミールに取り込むなどして使う分には全く問題ないはずです。(カシミールではテスト済み)
ただし、このNMEA形式は 1秒おきに 約250バイトを生成します。1時間で 900KB、24時間で 21MB です。
通常は十分に空き容量のある microSD カードに記録して頂きたいところですが、やむを得ず内蔵フラッシュディスクを保存先に使う場合には、空き容量から逆算した時間に留めるとともに、パソコンと接続させるときには GPS が衛星を捕捉しない環境を選んで下さい。GPS が位置データを受信すると内蔵フラッシュディスクに書き込み処理が行われますが、このタイミングでパソコンとの接続が途切れます。
つまりは1秒おきにUSBの再接続動作が起きて、事実上パソコンから mbed が見えなくなります。
microSD カードに記録する設定でお使い頂ければ、このような不自由はありせん。
NMEA形式のログファイルの中で「$DMDRC」「$DMDRT」という見慣れないセンテンスも見つかると思いますが、そのうち「$DMDRT」については 某巨大掲示板の有志の方々 によって作成が進められている汚染地図プロットプログラムに準拠するために用意しました。
「$DMDRC」は総カウント数やGM管の特性情報なども出てきますが、どちらも「仮実装」ということで、出力仕様が今後大きく変わる可能性あり、ってことで含みおき下さい。(特に「$DMDRC」のほうは「案」くらいのレベルなんで絶対に変わります)
また通常の処理よりも優先して、(割り込みで起動する)GPS受信に同期して書き込み処理してます。
Logging サービスの書き込みと同時にぶつかったときには、一応は早い者勝ちで処理するようにプログラム書いてまして、遅かった方が書き損じる(データが欠落する)可能性があります。
あとNMEA形式のログに限った話でなく Logging でも言えるのですが、若松ガイガーにはスイッチがなく停止状態にできないため、「書き込み中に電源断」「書き込み中にカード抜き」という事態に対処できません。
1秒おきにファイル書き込みしてる関係で、FATテーブルが壊れる確率は Logging の数十倍です。
私の環境では、精々チェックディスクかければ直る程度の損傷具合でしたけれど、そこら辺を注意してご利用下さい。
定義ファイルの仕様変更は、追加・変更分のみ書きます。
全体的な仕様を知りたい方は まとめページ を御覧ください。
定義ファイル | 項目名 | 目的 | 指定方法 |
env.ini | twitter0 または twitter | 標準的なアカウント | Twitter設定ファイル名 |
env.ini | twitter1 | 追加のアカウント | 〃 |
env.ini | twitter2 | 追加のアカウント | 〃 |
env.ini | pachube0 または pachube | 標準的なアカウント | Pachube設定ファイル名 |
env.ini | pachube1 | 追加のアカウント | 〃 |
env.ini | pachube2 | 追加のアカウント | 〃 |
env.ini | logging0 または logging | 標準的な条件 | Logging設定ファイル名 |
env.ini | logging1 | 追加の条件 | 〃 |
env.ini | logging2 | 追加の条件 | 〃 |
env.ini | webpost0 または webpost | 標準的な条件 | WebPost設定ファイル名 |
env.ini | webpost1 | 追加の条件 | 〃 |
env.ini | webpost2 | 追加の条件 | 〃 |
env.ini | lcdLayout | 液晶の表示レイアウト | 0:標準 1:GPS/NTPの利用状況表示 2:60秒平均を上段に表示 |
env.ini | sma または cpm_array_max |
標準移動平均化分数 | 1〜10(省略時は10) |
env.ini | l_sma または long_cpm_array_max |
長時間移動平均化分数 | 1〜60(省略時は60) |
env.ini | s_sma | 短時間移動平均化秒数 | 1〜600(省略時は60) |
env.ini | nmeaLog | NMEAログ出力 | 出力先のファイル名 |
WebPost設定ファイル | mode | 送信モード | 0:不動項目は初回1回のみ送信 1:不動項目も毎回送信 |
追記
WebPost設定ファイルに新設した「mode」ですが、これ、最後の最後まで項目名で悩んで、とりあえず・・・で「mode」としましたが、どうにもシックリ来ないので、次版で「fixedFields」とかに変えようと思ってます。すみません。
fixedFields(固定項目)を 0:毎回送信しない(初回1回のみ) 1:毎回送信 とか。
追記(2011/10/29)
まだ払拭してきれていない GPS の感度問題です。
昨日は外に出て20分たっても GT-723F が赤LED常灯で、全く衛星を捕捉する気配がありませんでしたが、いったん電源の OFF/ON をやってみたら即座に(1分以内に) LED チカチカ始まりました。
なんか GPS が詰まってるのか?って風な挙動です。私の GT-723F に限った個体不良かもしれませんが・・・
もし、これが個体不良じゃなくて GT-723F の既知の問題だったとしたら、GPS の電源を mbed から制御する回路を追加する必要がある気がしてきました。(10分たっても衛星を捕捉しなかったら再起動させる、みたいな)
あと、GPS の 5番ピン(mbed→GPS)を配線しないと推奨してましたが、配線せずに浮かせておくんじゃなくて、GND(1番ピン)に繋げて確実に落としてしまったほうが、さらにノイズ耐性が上がることに気がつきました。
3番4番は中のレベルコンバータを経由してる(GT-723F を分解して分かった)ので放置で構いません。
「5番をGNDへ」お試し下さい。