
前回はファームウェアを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 | |
ID | 2025 | 2025 | 2025 | 2025 |
DL | 0 | 0 | 0 | 0 |
MY | 0 | 1 | 2 | 3 |
CE | Coordinator [1] | End Device [0] | End Device [0] | End Device [0] |
SM | No Sleep [0] | Cyclic Sleep [4] | ||
SP | 0 | 60000ms | 60000ms | 60000ms |
ST | 0 | 1000ms | 1000ms | 1000ms |
AP | API Mode [1] | API Mode [1] | API Mode [1] | API Mode [1] |
IR | 0 | 0 | 0 | 0 |
ここで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ラインの現在の状態を反映したサンプルフレームをコーディネータに自動的に送信します。