本記事には古い情報が含まれている場合があります。まとめページ を作成しましたので併せて御覧下さい。
テント背負ってビール飲みに行ってきたような連休の過ごし方でしたけど、致命的なバグは潰れたはずぽいので、とりあえず公開いたします。
20110926版 ファームウェア一式 こちらの20110928版 をお使い下さい。
20110920版との機能比較(オリジナルと20110920版の違いはこちらを参照ください)
- WebPost サービス(任意の Web サイトへデータを Postする機能)を追加
- Logging サービス(ログ記録する機能)において、内蔵フラッシュディスクのほか microSD に対応
- 起動直後のほか約24時間おきにNTPから時間取得
- 出力できる項目が増加(UTC時刻・稼働時間・総カウント数などなど)
- Twitter/Pachube/Logging/Webpost の各サービスについて初回の遅延起動をサポート
- Twitter/Pachubeの内部ロジックを全面的に再構築
- PC接続時に出力されるログの表示整形およびエラー番号の詳細表示(HTTPのレスポンスコードが見えます)
env.ini の仕様(赤字は今版で追加された項目)
項目名 | 説明 | 省略時の挙動 | 制限 |
gpsBaud | GPSとの通信速度 | GPS未利用 | 4800/9600等の数値 |
ntpServer | 時計合せに使用するNTPサーバー | NTP未利用 | 最大30文字 |
Twitter設定ファイル | Twitterサービス未利用 | 最大30文字 | |
pachube | Pachube設定ファイル | Pachubeサービス未利用 | 最大30文字 |
logging | Logging設定ファイル | Loggingサービス未利用 | 最大30文字 |
webpost | WebPost設定ファイル | WebPostサービス未利用 | 最大30文字 |
ip | IPアドレス | DHCPを利用 | xxx.xxx.xxx.xxx |
netmask | サブネットマスク | ip指定時は省略不可 | xxx.xxx.xxx.xxx |
gateway | デフォルトゲートウェイ | ip指定時は省略不可 | xxx.xxx.xxx.xxx |
dns | 参照DNSサーバー | ip指定時は省略不可 | xxx.xxx.xxx.xxx |
enableMac | MACアドレス利用の有無 | 未利用 | 0 または 1 |
gmtype | GM特性ファイル | 省略不可 | 最大30文字 |
sound | ブザー鳴動フラグ | 1:放射線検知の度に鳴動 | 0 または 1 |
timezone | 標準時刻からの誤差 | 省略不可 | 数値のみ |
init_stabilize_time | 起動後に計測を待つ時間(秒数) | 30 | 数値のみ |
cpm_array_max | 移動平均の短時間分数 | 10 | 1〜10 |
long_cpm_array_max | 移動平均の長時間分数 | 60 | 1〜60 |
Twitter 設定ファイルの仕様
項目名 | 説明 | 制限 |
id もしくは ID | TwitterアカウントのID | 最大60文字 |
pass もしくは PASS | SuperTweetのパスワード | 最大60文字 |
format | ツィート時の書式(使用できるパラメータは後述) | 最大140文字 |
interval | Twitterサービスの起動間隔(分) | 数値のみ |
delayStart | Twitterサービスの起動遅延時間(分) | 数値のみ |
Pachube 設定ファイルの仕様
項目名 | 説明 | 制限 |
apikey もしくは PACHUBE_APIKEY | PachubeのAPIKEY | 最大60文字 |
feedid もしくは PACHUBE_FEEDID | PachubeのFEEDID | 数値のみ |
usv0 | 直近10分間のuSV/hをFeedする場合の項目ID | 数値のみ(未使用時は-1) |
nsv0 | 直近10分間のnSV/hをFeedする場合の項目ID | 数値のみ(未使用時は-1) |
cpm0 | 直近10分間のcpmをFeedする場合の項目ID | 数値のみ(未使用時は-1) |
usvlong0 | 直近60分間のuSV/hをFeedする場合の項目ID | 数値のみ(未使用時は-1) |
nsvlong0 | 直近60分間のnSV/hをFeedする場合の項目ID | 数値のみ(未使用時は-1) |
cpmlong0 | 直近60分間のcpmをFeedする場合の項目ID | 数値のみ(未使用時は-1) |
interval | Pachubeサービスの起動間隔(分) | 数値のみ |
delayStart | Pachubeサービスの起動遅延時間(分) | 数値のみ |
Logging 設定ファイルの仕様
項目名 | 説明 | 制限 |
path | ファイル名の書式(使用できるパラメータは後述) | 最大60文字 |
format | ログ記録時の書式(使用できるパラメータは後述) | 最大140文字 |
interval | Loggingサービスの起動間隔(分) | 数値のみ |
delayStart | Loggingサービスの起動遅延時間(分) | 数値のみ |
WebPost 設定ファイルの仕様
項目名 | 説明 | 制限 |
url | POST 先のサイト | 最大250文字 |
interval | WebPostサービスの起動間隔(分) | 数値のみ |
delayStart | WebPostサービスの起動遅延時間(分) | 数値のみ |
書式に使用できるパラメータ
項目名 | 説明 | 出力例 | WebPost対象 |
%SEQ% | 初回起動時からの連番 | 00000001 | 毎回 |
%DATE% | 日付(timezoneで補正後) | 2011/09/20 | × |
%TIME% | 時刻(timezoneで補正後) | 12:24:31 | × |
%DATETIME% | 日時(timezoneで補正後) | 2011/09/20 12:24:31 | 毎回 |
%YEAR% | 日付の西暦年 | 2011 | × |
%MONTH% | 日付の月 | 09 | × |
%DAY% | 日付の日 | 20 | × |
%HOUR% | 時刻の時 | 12 | × |
%MINUTE% | 時刻の分 | 24 | × |
%SECOND% | 時刻の秒 | 31 | × |
%U_DATE% | 日付(UTC) | 2011/09/20 | × |
%U_TIME% | 時刻(UTC) | 03:24:31 | × |
%U_DATETIME% | 日時(UTC) | 2011/09/20 03:24:31 | 毎回 |
%U_YEAR% | 日付の西暦年 | 2011 | × |
%U_MONTH% | 日付の月 | 09 | × |
%U_DAY% | 日付の日 | 20 | × |
%U_HOUR% | 時刻の時 | 03 | × |
%U_MINUTE% | 時刻の分 | 24 | × |
%U_SECOND% | 時刻の秒 | 31 | × |
%CPM% | 直近10分間のcpm値 | 19 | 毎回 |
%uSV% | 直近10分間のμSV/h値 | 0.118 | 毎回 |
%L_CPM% | 直近60分間のcpm値 | 17 | 毎回 |
%L_uSV% | 直近60分間のμSV/h値 | 0.105 | 毎回 |
%LONGITUDE% | 正確な経度 | 138.728635 | 毎回 |
%LATITUDE% | 正確な緯度 | 35.360444 | 毎回 |
%R_LONGITUDE% | アバウトな経度 | 138.73 | × |
%R_LATITUDE% | アバウトな緯度 | 35.36 | × |
%ALTITUDE% | 高度(ジオイド高) | 3776 | 毎回 |
%SPEED% | 速度(km/h) | 180 | 毎回 |
%UPTIME% | 稼働時間(秒) | 45514 | 毎回 |
%F_COUNT% | 起動してからの累積カウント数 | 65241 | 毎回 |
%MAC% | MACアドレス (enableMac=1のとき) |
0102030f0e0d | 毎回 |
%VERSION% | ファームウェアのバージョン | 20110926 | 初回 |
%GM_CARIB% | ガイガー管の特性 | 129.032 | 初回 |
%GM_VOLT% | ガイガー管の特性 | 380 | 初回 |
%GM_OFFSET_uSV% | ガイガー管の特性 | -0.032 | 初回 |
%GM_CARIB_CPM0% | ガイガー管の特性 | 12 | 初回 |
%GM_CARIB_uSV0% | ガイガー管の特性 | 0.061 | 初回 |
%GM_CARIB_CPM1% | ガイガー管の特性 | 28 | 初回 |
%GM_CARIB_uSV1% | ガイガー管の特性 | 0.185 | 初回 |
※WebPost対象「初回」は起動して初回1回のみ、「毎回」は interval で設定した間隔の度に、それぞれ送信
プライバシーポリシー?として、個体を識別できる記号(MACアドレス)の送出に関しては任意で設定できるようにしました。
若松ガイガー(というか mbed をベースにしたネットガイガー)を複数機お持ちの方には MAC アドレスによる個体識別は便利だろうと思います。
経緯度の取り扱いに関しては悩むところですが、ハードウェア的に個体を識別するものではないという判断で WebPost する対象といたしました。
将来のバージョンで、WebPost する情報から経緯度だけを外すオプションを作るかもしれません。
(追記)
20110928版にて位置情報を WebPost するかどうかフラグ追加しました。
未指定のデフォルトは「位置を送信しない」です。
位置情報も送信する際には WebPost 設定ファイルの中で enableGPS=1 と書いて下さい。
既知の問題(今後の課題)
- Logging サービスでディスクの残量チェックを行っていない
- SDHC(4GB〜)には未対応(対応させる方法もあるらしいので引き続き調査)
- SDカードが入ってない状態でSDカードに書き込みするとフリーズする (fopenの中で止まってる・・・ナンデ?)
- Twitter/Pachube/WebPost で、それぞれ複数アカウントを使ったマルチ送信に対応したかったけどメモリー不足で挙動不審になったため取り止め
個人的な目玉は WebPost サービスです。測定値を任意サイトへ HTTP-POST 形式で送信する仕組みです。
自宅サーバーなどお持ちの方にとっては、超待望のサービスではないのかな、と。
いったん自宅サーバーで受けて情報を加工して別のサービスへ転送させるなど、mbed のチープなメモリー空間に制約されない、ものすごい応用ができるはず。。
当初、Post する内容を選ぶような構想もありましたが、中で使ってる公開 HTTPClient ライブラリの HTTPmap オブジェクトがメモリー食い過ぎ(std::string なんて気軽に多用するなよ!)で、自由に設定できるようにしても組み合わせてによってフリーズ多発になること必至(フリーズさせない組み合わせを見つけ出すのが大変)なので、予め必要と思われるもの、ことごとく固定で WebPost する設計にしました。
不要な情報は受信側で切り捨てて下さいませ。
「初回のみ送信」という印がありますが、全項目を一括で Post しようとするとメモリー不足で固まるので、「稼働中に変動しない項目」は最初に1回だけ Post するようにしています。
受信側で情報をくっつけて処理してください。
複数 mbed を同じサイトへ飛ばしている時ならば、enableMac=1 で MAC アドレスを通知にして、受信側で MAC アドレスをキーにくっつけて下さい。
試せる Web サイトがないって方は、以下の評価(お試し)サイトをご利用下さい。
私の友人が作成されたサイトですが、出来が未だ中途半端ぽいので実証実験する程度の利用に留めるのが吉だと思います。(ガイガーの数値には依存してなくて温度や湿度など数値ものならば、何を Post しても大丈夫らしいです)
1.http://www.logoole.etr.jp/entry/ から APIKEY を取得
2.WriteKey と ReadKey を記録仮に
WriteKey 6D46_qUKnEqOGCsfXYRz2g ReadKey rjaIIrzXLUig09rNfnxCrA が画面に表示されたとして話を進めます。
3.WEBPOST.CFG の URL=http://api.logoole.etr.jp/6D46_qUKnEqOGCsfXYRz2g.post とする。
4.env.ini で #webpost のコメント # を外す
5.若松ガイガーを再起動(設定ファイルを読み込ませる)
6.しばらく放置(どれくらい放置すべきかは delayStart や interval の設定値による)
7.別パソコンで Post されたログを見る
表形式で見る http://api.logoole.etr.jp/rjaIIrzXLUig09rNfnxCrA/datatable.html グラフで見る http://api.logoole.etr.jp/rjaIIrzXLUig09rNfnxCrA/L_uSV.png
なんかショボすぎますが、いちお連休3日間の成果だそうです。
「まだPachubeを超えてねぇぞ」って伝えてあります。
今後のバージョンアップに期待しましょう。
いきなり microSD 対応ったって、あの表面実装スロット は使いづらいように思います。
私の場合、外箱のネジは常に外した状態で、100均のマジックテープバンドで蓋を止めてますので、使いやすい別の場所に microSD スロットを付けることにします。
microSD スロットは スイッチサイエンスの でも マルツの でも、それ以外でも好きなものをお使い下さい。
ほとんどヤケクソな取り付け位置ですが(笑)
GM管のアノード側は 400V 近い高電圧が来てますので、絶縁だけはくれぐれも厳重に。速攻でパーツを破壊します。
(液晶の上の余地も基板上は高圧生成回路ですから、厳重な絶縁必須です)
あれ、右のは?
プログラムを作るとき用の mbed マシンを新しく調達しました!
mbed本体(5200円)+オレンジボード完成品(3900円)+リチウム電池ホルダー(50円)です。
オレンジボード基板のみ(1400円) でも良かったのですけど、LANコネクタとか小物を秋月に注文すると大して変わらない値段になってしまうので・・・
GM管は繋がってないので cpm 数は増えないですけど、とりあえずデバッグには十分つかえます。
17番ピンの負論理パルス (←訂正、オシロで見たら正論理でした) をカウントしているだけなので、ここに別の管を繋げば簡単にガイガーカウンターに出来そうです。
信号取り出しまで出来た自作ガイガーカウンター があるので、ソフト作りが一段落したら、17番ピンに繋いでネットガイガーに仕立てようと思います。
ということで、新しい mbed を買って早速 GT-723F を繋いで分かったことが。
捕捉の邪魔をするノイズ源は mbed 本体でした!(高圧生成部もかもしれないが)
CPU は 96MHz と、一昔前のパソコン並の速度ですから、それなりに盛大にノイズも出すのでしょう。
何とかシールドしたいところです。。
追記(2011/09/28)
バグ修正および軽微な機能追加した20110928版を公開しました。
追記(2011/10/25)
オレンジボードのmbedの17番ピンに自作ガイガー管を繋いだ「互換機」を作ってみました。