XBeeモジュールの使い方(802.15.4での温度センサネットワーク:スリープモード)


 前回はファームウェアを802.15.4に設定しアナログ温度センサMCP9701(Microchip社製)を3個のエンドデバイスXBeeに接続し、IRパラメータを用いて60秒間隔でコーディネータXBeeに温度結果を送信しました。今回はIRパラメータを用いずCyclic Sleep Modeを用いてネットワークの構築方法を解説します。Cyclic Sleep Modeを用いることにより、エンドデバイスの電源を効率的に運用することが可能になります。

 XBee3を使用して1個のコーディネータXBeeと3個のエンドデバイスXBeeのConfigurationを以下のように設定します。

 コーディネータエンドデバイス1エンドデバイス2エンドデバイス3
ID2025202520252025
DL0000
MY0123
CECoordinator [1]End Device [0]End Device [0]End Device [0]
SMNo Sleep [0]Cyclic Sleep [4]  
SP060000ms60000ms60000ms
ST01000ms1000ms1000ms
APAPI Mode [1]API Mode [1]API Mode [1]API Mode [1]
IR0000

 ここでSP (Sleep Time)はSleep Period でありスリープの周期を意味しています。今回は60秒周期でスリープを繰り返し、その60秒の中のST (Wake Time)で設定した1秒だけ起きて仕事をすることにします。

 このような設定をすると、コーディネータXBeeのコンソール画面には以下のようにフレームがエンドデバイスから送られてきます。

 前回のIR (IO Sampling Rate)パラメータを使用したフレームの送信では、このパラメータによりサンプリングレートを指定しているためフレームの送信は理にかなったものでした。今回はIRを指定せずに周期的スリープモードに設定しただけで、なぜフレームがコーディネータに送信されるのでしょうか?

 XBeeモジュールはエンドデバイスが周期的スリープモードに設定されると、定期的にウェイクアップし、コーディネータまたはルータからのデータを確認します。DIOピンがADC[2]に設定されている場合、モジュールはウェイクアップ時にI/Oサンプルを自動的に送信するように設定されています。この動作は、エンドデバイスXBeeに対してデータ送信のための明示的なコマンドを必要とせずに、アナログ入力がコーディネータに確実に通知されるようにするためのモジュール設計の一部です。

 もしIRパラメータが設定されている場合、モジュールはADC[2]などのアナログ入力を含むI/Oラインの現在の状態を反映したサンプルフレームをコーディネータに自動的に送信します。