センサ値チラ見システムを作る ( ATmega328 + BLE(RN4020) + Androidスマートフォン )
    
    
    電池駆動においても長時間に渡ってセンサ値を離れた場所から確認できる 「センサ値チラ見システム」 を作成する方法に関して書きとめています。
    
    4つのステップで作成します。ステップを経るごとに省電力化が進みます。
    
        - ステップ1 : 1秒ごとに測定し、BLEデバイスとマイコンは常に活動のシステム
        
 - ステップ2 : BLE接続時のみ測定し、BLEデバイスとマイコンは常に活動するシステム
        
 - ステップ3 : BLE接続時のみ測定し、測定後BLEデバイスは休眠し、BLE切断するシステム
        
 - ステップ4 : BLE接続時のみ測定し、測定後BLEデバイスとマイコンは休眠し、BLE切断するシステム
    
 
    4つのステップの「測定を行っていない状態」における電流値は以下でした。(テスターを用いた電流測定の結果。テスターのレンジ設定は、20[mA]設定)
    
        - ステップ1 : 7.01 [mA]
        
 - ステップ2 : 7.01 [mA]
        
 - ステップ3 : 4.15 [mA]
        
 - ステップ4 : 0.45 [mA]
    
 
    主要部品
    
    
        
                | マイコン | 
                マイコンボードとしては、Arduino UNOに搭載されているマイコンチップである ATmega328 を単体使用します。 
                 省電力用途には、Arduinoよりも、ATmega328単体の方が向いています。 
                Arduinoは、I/Oが整理されており、プロトタイプ開発に向いています。しかし、LEDや抵抗、コンデンサ等が組み込まれており、省電力用途には向きません。 | 
              | 
        
            
                | BLEデバイス | 
                BLE ( Bluetooth Low Energy ) デバイスは、 RN4020 を使用します。 | 
                  | 
            
            
                | 確認端末 | 
                センサ値を確認する端末は、Bluetooth搭載のAndroidスマートフォンを使用します。 | 
             | 
        
        
    ステップ1 : 1秒ごとに測定、BLEデバイスとマイコンは常に活動のシステム
    最初のステップでは、以下の動作を確立します。
    
        - BLEデバイス : プライベートサービスの作成と設定。
        
 - マイコン : 1秒ごとにセンサ値を測定する。
        
 - マイコン : 測定値をBLEデバイスのキャラクタリスティックに書き込む。
        
 - Androidアプリ : BLEデバイスとの接続、切断。
        
 - Androidアプリ : BLEデバイスからの測定値の通知(Notify)による読み取り。
    
 
    
    
    
    
    
    
    ステップ2 : BLE接続時のみ測定し、BLEデバイスとマイコンは常に活動するシステム
    マイコンでの測定について、ステップ1では、定期的に測定を行いましたが、ステップ2では、BLE通信の状態を表すピンの出力の「LOW→HIGH」の変化をトリガーにして、BLE接続後の測定時のみ測定をするようにします。
    Androidアプリについては、測定結果を受け取ると、BLE通信を切断するようにします。
    
    このステップでは、以下の動作を追加します。
    
        - マイコン : BLE通信の接続が発生したときにセンサ値を測定する。
        
 - Androidアプリ : BLEデバイスからのセンサ値の通知(Notify)後にBLE通信の切断。
    
 
    「ハードウェア」「BLEプライベートサービス」については、ステップ1から変更はありません。
    
    
    
    ステップ3 : BLE接続時のみ測定し、測定後BLEデバイスは休眠し、BLE切断するシステム
    BLEデバイスについて、ステップ1、2では、常に活動していましたが、ステップ3では、BLEデバイスは、基本休眠させ、BLE通信の状態を表すピンの出力の「LOW→HIGH」の変化をトリガーにして、BLE接続後の測定時のみ活動をするようにします。
    センサーについて、ステップ1、2では、常に通電していましたが、ステップ3では、測定時のみ通電するようにします。
    
    このステップでは、以下の動作を追加します。
    
        - マイコン : 起動直後にBLEデバイスをスリープさせる。
        
 - マイコン : BLE通信の接続が発生したときにBLEデバイスをスリープから復帰させる。
        
 - マイコン : 測定前にセンサーに通電し、測定後に通電を解除する。
        
 - マイコン : 測定値書き込み後、BLEデバイスをスリープさせる。
    
 
    「BLEプライベートサービス」「受信側ソフトウェア」については、ステップ2から変更はありません。
    
    
    
    
    ステップ4 : BLE接続時のみ測定し、測定後BLEデバイスとマイコンは休眠し、BLE切断するシステム
    マイコンについて、ステップ1、2、3では、常に活動していましたが、ステップ4では、マイコンは、基本休眠させ、BLE通信の状態を表すピンの出力の「LOW→HIGH」の変化をトリガーにして、BLE接続後の測定時のみ活動をするようにします。
    
    このステップでは、以下の動作を追加します。
    
        - マイコン : 起動直後にマイコン自身をスリープさせる。
        
 - マイコン : BLE通信の接続が発生したときにマイコン自身をスリープから復帰させる。
        
 - マイコン : 測定値書き込み後、マイコン自身ををスリープさせる。
    
 
    「ハードウェア」「BLEプライベートサービス」「受信側ソフトウェア」については、ステップ3から変更はありません。
    
    
    
    参考
    後閑哲也、「電池1年!スマートBLEデータ・ロガー」、Interface 2015年8月号、P54、CQ出版社