本記事には古い情報が含まれている場合があります。まとめページ を作成しましたので併せて御覧下さい。
台風接近に伴う土砂降り(水浸し)のため、市内あちこち大渋滞の道路で、動くのを待ってる間にノートパソコン使いつつテストしてました。
帰宅まで4時間強かかりましたが・・・
たぶん致命的なバグはないと思うので、とりあえず公開いたします。
ファームウェアと書くと敷居が高いですが、単にマイコンで初期起動するプログラムに過ぎません。
(パソコンのマザーボードのあれと違って、入れ損なっても壊れることはない)
2011/09/20版 ファームウェア一式 です。 こちらの20110926版 をお使い下さい。
オリジナルとの機能比較
- GPSとの通信速度を自由定義(4800/9600以外でも大丈夫)
- 経度の計算が間違えているオリジナルの既存バグを修正
- GPSとの通信方式を割り込みを用いて非同期処理(GPS待ちが発生しない)
- 現在時刻をNTPのほかGPSからも取得
- リチウム電池接続により、NTPもGPSも使えない場合でも正しい時計を保持
- ADCモードの廃止(放射線の入射強度を調べる試みとしては面白いが、メモリー確保のため廃止)
- ファームウェアのネット更新機能の廃止(同じくメモリー確保のため廃止)
- 内蔵フラッシュディスクにログを記録する logging サービスの実装
- 各サービス(twitter/pachube/logging)を同時実行可能に
- twitter/logging サービスについて、それぞれに動作間隔(分)や出力書式を自由に設定
env.ini の仕様(赤字は追加された項目)
項目名 | 説明 | 省略時の挙動 | 制限 |
gpsBaud | GPSとの通信速度 | GPS未利用 | 4800/9600等の数値 |
ntpServer | 時計合せに使用するNTPサーバー | NTP未利用 | 最大30文字 |
Twitter設定ファイル | Twitterサービス未利用 | 最大30文字 | |
pachube | Pachube設定ファイル | Pachubeサービス未利用 | 最大30文字 |
logging | Logging設定ファイル | Loggingサービス未利用 | 最大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 |
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サービスの起動間隔(分) | 数値のみ |
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サービスの起動間隔(分) | 数値のみ |
Logging 設定ファイルの仕様
項目名 | 説明 | 制限 |
path | ファイル名の書式(使用できるパラメータは後述) | 最大60文字 |
format | ログ記録時の書式(使用できるパラメータは後述) | 最大140文字 |
interval | Loggingサービスの起動間隔(分) | 数値のみ |
書式に使用できるパラメータ
項目名 | 説明 | 出力例 |
%SEQ% | 初回起動時からの連番 | 00000001 |
%DATE% | 日付(timezoneで補正後) | 2011/09/20 |
%TIME% | 時刻(timezoneで補正後) | 12:24:31 |
%YEAR% | 日付の西暦年 | 2011 |
%MONTH% | 日付の月 | 09 |
%DAY% | 日付の日 | 20 |
%HOUR% | 時刻の時 | 12 |
%MINUTE% | 時刻の分 | 24 |
%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 |
%HEIGHT% | 高度(ジオイド高) | 3776 |
%SPEED% | 速度(km/h) | 180 |
メモリー節約のため、文字数のチェックとか一切を省いていますので、簡単にバッファオーバーラン起こします(笑)
特に書式を利用する場合、置換後の文字数が150文字以上となると確実に暴走します。
ツィッターの仕様は140文字までなので、置換後の文字数が140文字以内に納まるように気をつけて設定して下さい。
ちなみにオリジナル版も、文字数や妥当性は全くのノーチェック状態です。
ログファイルのファイル名も書式で設定できますが、置換後が 8文字+3文字 を超えるとエラーが出ます。
使っていけない記号とかもありますので、あまりにトリッキーなファイル名は避けた方がいいです。
ファイルへは append モードで書き足してます。
既知の問題(仕様制限)
- (予告していた)自宅サーバー等の cgi への POST(GET) 機能が出来ていません。検証に使えるサーバーを探してます。
- loggingサービス(内蔵フラッシュディスクにログ記録)がフラッシュディスクの残容量を見ずに書き込みしているので、もしマンタンになったら、きっと動作が停止します。出力書式や間隔を見直して、早々マンタンにならないように工夫ください。
- パラメータの値には指定できる長さに上限がありますが、そのチェックは行ってません。あまり長い文字列を入れると暴走します。(壊れるわけではないですけど)
- 数字項目に文字を入れたり、といった妥当性チェックも行っていません。気をつけて設定ファイルを作って下さい。
- 漢字には未対応です。(mbedの世界に漢字という概念はない気がする)
- Twitterサービス使用中に、稀に SuperTweet から ErrorCode:6 が返されツィートが失敗することがあります。たぶん SuperTweet 側の事情だと思うのですが、原因がよく分かりません。無視して放置しておくと勝手に直ります。
- ソフトじゃなくてハードの問題ですが、ポン付けしたGPS(GT-723F)の感度が著しく悪くロスト多発です。たぶん高圧発生回路の高周波ノイズの影響をモロに受けていると思われ。改善策を模索中です。
何かバグが見つかればコメントください。
追記(お願い)
私のファームウェアを用いて Pachube される方、できましたら Feed の Tag 欄に「wakwak_koba」を追加してやって下さい。
私のファームを使われている方の測定結果(送信品質)の検証ができればと思ってます。
また、私のファームに何かバグがあって挙動がおかしくなったときに、オリジナルと違うファームを使っての結果であること(オリジナルの作者さんが原因でない旨)を明示する目的もあります。
どうぞ、よろしくお願いいたします。
追記(2011/09/26)
microSD や WebPost に対応した 2011/09/26 版を公開しました