センサ値チラ見システムを作る ( ATmega328 + BLE(RN4020) + Androidスマートフォン )



電池駆動においても長時間に渡ってセンサ値を離れた場所から確認できる 「センサ値チラ見システム」 を作成する方法に関して書きとめています。

4つのステップで作成します。ステップを経るごとに省電力化が進みます。

4つのステップの「測定を行っていない状態」における電流値は以下でした。(テスターを用いた電流測定の結果。テスターのレンジ設定は、20[mA]設定)

主要部品

マイコン マイコンボードとしては、Arduino UNOに搭載されているマイコンチップである ATmega328 を単体使用します。

省電力用途には、Arduinoよりも、ATmega328単体の方が向いています。
Arduinoは、I/Oが整理されており、プロトタイプ開発に向いています。しかし、LEDや抵抗、コンデンサ等が組み込まれており、省電力用途には向きません。
BLEデバイス BLE ( Bluetooth Low Energy ) デバイスは、 RN4020 を使用します。
確認端末 センサ値を確認する端末は、Bluetooth搭載のAndroidスマートフォンを使用します。

ステップ1 : 1秒ごとに測定、BLEデバイスとマイコンは常に活動のシステム

最初のステップでは、以下の動作を確立します。

ステップ1-1.ハードウェア組み立て
センサ値チラ見システムのハードウェアの組み立て

ステップ1-2.ソフトウェア仕様
ステップ1のセンサ値チラ見システムのソフトウェアの仕様

ステップ1-3.BLEプライベートサービスの作成と設定
BLEのプライベートサービスの作成と、RN4020への設定

ステップ1-4.送信側ソフトウェア実装
送信側ソフトウェア、すなわちマイコンのソフトウェア、すなわちATmega328のソフトウェアの実装

ステップ1-5.受信側ソフトウェア実装
受信側ソフトウェア、すなわちスマートフォンのソフトウェア、すなわちAndroidアプリの実装

ステップ1-6.動作確認
ハードウェアとソフトウェアを起動し、動作確認

ステップ2 : BLE接続時のみ測定し、BLEデバイスとマイコンは常に活動するシステム

マイコンでの測定について、ステップ1では、定期的に測定を行いましたが、ステップ2では、BLE通信の状態を表すピンの出力の「LOW→HIGH」の変化をトリガーにして、BLE接続後の測定時のみ測定をするようにします。
Androidアプリについては、測定結果を受け取ると、BLE通信を切断するようにします。

このステップでは、以下の動作を追加します。

「ハードウェア」「BLEプライベートサービス」については、ステップ1から変更はありません。

ステップ2-1.送信側ソフトウェア実装の変更
BLE通信の接続が発生したときにセンサ値の読み取りとBLEデバイスへのセンサ値の書き込みをするように、ATmega328の実装の変更

ステップ2-2.受信側ソフトウェア実装の変更
BLEデバイスからのセンサ値の通知(Notify)後にBLE通信の切断をするように、Androidアプリの実装の変更

ステップ2-3.動作確認
ハードウェアとソフトウェアを起動し、動作確認

ステップ3 : BLE接続時のみ測定し、測定後BLEデバイスは休眠し、BLE切断するシステム

BLEデバイスについて、ステップ1、2では、常に活動していましたが、ステップ3では、BLEデバイスは、基本休眠させ、BLE通信の状態を表すピンの出力の「LOW→HIGH」の変化をトリガーにして、BLE接続後の測定時のみ活動をするようにします。
センサーについて、ステップ1、2では、常に通電していましたが、ステップ3では、測定時のみ通電するようにします。

このステップでは、以下の動作を追加します。

「BLEプライベートサービス」「受信側ソフトウェア」については、ステップ2から変更はありません。

ステップ3-1.ハードウェア組み立ての変更
BLEデバイスのスリープおよびスリープからの復帰ができるように、配線の変更

ステップ3-2.送信側ソフトウェア実装の変更
BLEデバイスについて、BLE切断時はスリープさせ、BLE接続後の測定時のみスリープから復帰するように、ATmega328の実装の変更

ステップ3-3.動作確認
ハードウェアとソフトウェアを起動し、動作確認

ステップ4 : BLE接続時のみ測定し、測定後BLEデバイスとマイコンは休眠し、BLE切断するシステム

マイコンについて、ステップ1、2、3では、常に活動していましたが、ステップ4では、マイコンは、基本休眠させ、BLE通信の状態を表すピンの出力の「LOW→HIGH」の変化をトリガーにして、BLE接続後の測定時のみ活動をするようにします。

このステップでは、以下の動作を追加します。

「ハードウェア」「BLEプライベートサービス」「受信側ソフトウェア」については、ステップ3から変更はありません。

ステップ4-1.送信側ソフトウェア実装の変更
ATmega328自身について、BLE切断時はをスリープさせ、BLE接続後の測定時のみスリープから復帰するように、ATmega328の実装の変更

ステップ4-2.動作確認
ハードウェアとソフトウェアを起動し、動作確認

参考

後閑哲也、「電池1年!スマートBLEデータ・ロガー」、Interface 2015年8月号、P54、CQ出版社