若松ガイガー 20141230版 公開
本年の残り僅かになりました。
前回2013年8月にファーム更新して以来、ずっと無更新が続いていたので、「もう終わったのかい?」って方も大勢おられたかと思います。
2014年の日付を冠したファームをリリースしないまま2014年が終わるのも不本意なので、密かにコチョコチョ弄ってた部分をまとめて今回リリースすることに致します。
20141230版 ファームウェア一式
まっさらな mbed に導入する前提で全てのファイルを同梱していますが、旧バージョンからアップグレードされる方は geiger.bin のみの上書きで大丈夫です。
20130827版との機能比較 (20130827版の仕様はこちらを参照ください)
- 簡易グラフ表示を2管時には上下分割で8段階グラフ表示
- NTPによる時刻取得でリトライしていなかった元ライブラリのバグを修正
- I2C接続の気圧センサー(LPS25H)に対応
- I2C接続の湿度センサー(AM2321)に対応
- I2C接続の温度センサー(ADT7410)に対応
- I2C接続の温度センサー(STTS751)に対応
注意
以前に本家のオリジナルファーム Ver1.0 を利用されていた方の mbed 内に GEIGER-2.bin というタイムスタンプ 2008/01/01 のファイルが出来ている場合があります。
2012/1/7頃に実施された自動アップデートによってダウンロードされたプログラムのようですが、mbed の中に拡張子 BIN のファイルが複数あると意図せぬ誤作動が起きやすくなりますので、私のファームを導入する前に GEIGER-2.BIN は予め削除しておいて下さい。
特にタイムスタンプが変な(新しいのに古い日付の) BIN ファイルが混じると理解困難な不可解な現象(意図したファームが動いてくれない)が起きやすくなりますので、そんなときには、全てのファーム(拡張子が BIN)を削除して再起動させ、その後に目的の BIN を1つ入れて再起動し直して下さい。
タイムスタンプが変なファームによって mbed の内部で行われているバージョン管理が狂ってしまったとき、BINファイルがひとつもない状態にして起動させることで狂った管理テーブルがクリアされるようです。
mbed のベースライブラリも最新版を適用してあるので、未知の不具合が改善されているかもしれません。
簡易グラフ表示を2管時には上下分割で8段階グラフ表示
※写真を撮って載せる予定
NTPによる時刻取得でリトライしていなかった元ライブラリのバグを修正
ルーターの種類によってだと思いますが、普通に NTP による時刻取得ができるもの、物凄い確率で失敗するねもの、がありました。
普段リチウム電池はセットしてあって時計は保持されているし、デフォで24時間おきに再試行されるので、実害なく放置していましたが、奮起して精査しましたところ、利用していた公開ライブラリのバグを見つけてしまい・・・
そのバグを修正したうえで、デフォルトで3回リトライするような処理にしました。
これにより、かなり確実に時計取得に成功するかなと思います。
またリトライ数は env.ini 内で ntpRetry=9 みたいに指定することで変更できるようにしました。
I2C 接続の各種センサーに対応
秋月で販売されているものを中心に、I2C 接続のセンターへの対応を増やしました。
デバイス名 | アドレス | 気圧 | 温度 | 湿度 | コメント |
mpl115a2 | 0x60固定 | △ | ○ | 気圧の誤差(変動)が大きい | |
LPS331AP | 0x5C、0x5D | ○ | ○ | ||
LPS25H | 0x5C、0x5D | ○ | ○ | 当ファームにて新しく対応 | |
HIH-6130 | 0x27固定 | ○ | ○ | ||
AM2321 | 0x5C固定 | ○ | ○ | 当ファームにて新しく対応 | |
ADT7410 | 0x48、0x49、0x4A、0x4B | ○ | 当ファームにて新しく対応 | ||
STTS751(0) | 0x38、0x39、0x48、0x49 | ○ | 当ファームにて新しく対応 | ||
STTS751(1) | 0x3A、0x3B、0x4A、0x4B | ○ | 当ファームにて新しく対応 |
STTS751 には(0)と(1)とかあって指定できるアドレスが違うだけで中身は一緒です。
今の秋月にあるロットは STTS751(0) のようです。
LPS331AP と LPS25H とは、ほとんど一緒なのですが、WHO_AM_I の返事が違うということで、これまでも実質的には対応できていたにも関わらず、エラーになって使用できない状態でしたが、今回のファームから晴れて LPS25H も利用できます。
いつの間にか秋月での LPS331AP の取り扱いも終了してるみたいだし、これから気圧も測定されたい方は LPS25H をどうぞ。
env.ini の中で
AM2321=i2c
LPS25H=i2c;5D
STTS751=i2c;38
みたいにして使います。(アドレス固定のものはアドレス指定なし、選択式のものはアドレス必須)
ADT7410 はデフォルトだと 13ビット で測定値が出力されますが、ちゃんと 16ビット に変更するコマンドを投げてますので、16ビット で出力されたものを利用しています。