TWE-Lite の開発環境の入手
TWE-Lite で温湿度センサーHDC1000の制御と、同じく温湿度センサーSHT31の制御を I2C 経由でできるようになったが、デフォルトの超簡単!TWELITE標準アプリでは常時電源がONになっているので、特にボタン電池ではすぐに電気を使い切ってしまう。無線タグアプリを使えば数秒に一回だけ起動して測定、および無線経由でのデータ送信を行うようになるので、電力消費をかなり減らすことができる。一方、無線タグアプリは限られた種類のセンサーしかサポートしていないため、SHT31 も HDC1000 も使うことができない。使いたければ、自分でソフトウェアを書き換える必要がある。
ソフト開発の環境は、今回は TWELITE-BLUE を使うので、2014/8月号 SDK というものになる。ここからダウンロードして c:\ に展開、c:\TWESDK\eclipse.cmd を実行すればeclipse が立ち上がる。
無線タグアプリのソースの取りだしとプロジェクトのビルド
ソフトウェアのほうは、ここから無線タグアプリのソースファイルをダウンロードし、c:\TWESDK\Wks_ToCoNet にコピーする(ワークスペースはどれを選んでもいい)。次に、eclipse からファイル→インポート→既存プロジェクトをワークスペースへでインポート。コピーしたフォルダを選べばインポートできる。
eclipse でのコンパイルは プロジェクト→プロジェクトのビルド。また、無線タグアプリには無線タグの子機、親機、中継機などのソースがすべて含まれており、プロジェクト→構成のビルド→アクティブにする、のメニューでビルドするアプリを切り替えて各バイナリを作成する。
ソースを書き換えてアプリがデフォルトで使用する ID を変更する
さて、TWE-LITE では各プログラムに ID と無線通信用のチャネルが割り振られており、同じ ID、チャネル のプログラム同士(親機と子機)がやりとりをするようにしている。もしも近くに無線タグアプリを使っている人がいた場合、混信してしまうので、できれば自分の親機・子機のネットワークに固有のIDを使うほうが望ましい。ソフトウェア上では Common\Source_User\config.h に ID 等の設定があり、たとえば以下のようになっている。
/* Specify the PAN ID and CHANNEL to be used by tags, readers and gateway */
# define APP_TWELITE_ID 0x67720102
# define APP_ID 0x67726305
# define APP_NAME "App_Tag"
# define APP_TWELITE_CHANNEL 18
# define CHANNEL 15
// リモート設定用
# define APP_ID_OTA 0x67726405
# define CHANNEL_OTA 25
無線タグアプリは、設定によってデフォルトの超簡単!TWELITE標準アプリにデータを送信したり、無線ごしに設定の更新を行う OTA を行うことがある。そのため、自分自身の ID である APP_ID 以外にこれらのアプリ用の ID もソースに書きこまれている。これらを変更する必要はないので、アプリのデフォルトのIDを変更したければ、上記の APP_ID と CHANNEL だけを書きかえれば良い。また、親機ならシリアル通信で +++ と打つ、子機なら MODE2 ピンを GND に落としてリセットすると、設定画面に入ることができる。設定画面でIDとチャネルを書きかえれば、EEPROM に書きこまれて次回の起動時からは新しいID,チャネルを使うようにできる。
それでは実際にテストしてみよう。ソースのAPP_IDを変更して親機、子機用のバイナリをビルドする。つぎに、それぞれのバイナリを TWE-LITE に書きこんでみよう。設定画面で APP_ID が変更されたか見てみると・・・IDは変更されていなかった???
ソースの APP_ID を書き換えることで TWE-Lite 子機の ID を変更する
いろいろやってみると、一旦、超簡単!TWELITE標準アプリを書きこんでリセットしてから +++ と打って設定画面に入り、S を打って設定をセーブしてから、新しい無線タグアプリのバイナリを書きこむと、新しい APP_ID に設定された。
これは EEPROM 上に書きこまれた ID, チャネル等とソースに書かれた(デフォルトの)ID,チャネルが競合するために起きるらしい。無線タグアプリなどのアプリにはそれぞれ、versionとデフォルトのIDがある。EEPROMのバージョンとプログラムのバージョンが合わない(今回で言えば、無線タグアプリだったチップに超簡単!TWELITE標準アプリを書き込んだ)場合、EEPROM の内容は無視してデフォルトのIDやチャネルなどを使用する。一方、もともと無線タグアプリがTWE-LITE に書きこまれていた場合、新しいバイナリが書きこまれても同じソフトウェアと認識されるので、ソースに書きこんだ APP_ID ではなく、EEPROM に設定された ID が使われるようだ。