前回は、センサネットワークをどのようにして形成するか、ノードの種類、センサネットワーク上での役割について触れました。このセクションでは、XBeeモジュールを使って実際にセンサのデータを読み取る方法を紹介します。
XBeeモジュールでセンサを読み取る
XBeeモジュールでセンサを読み取るには、
- XBeeモジュールを設定してセンサをサンプリングする (XBeeハードウェアオプション)
- MicroPythonスクリプトを実行する(MicroPythonオプション)
という、2種類の方法があります。
大きな違いとして、MicroPythonオプションではデータを送信する前にセンサデータに対して、エラー処理やデータの変換といった処理を行うことができるという点が挙げられます。送信前にデータに手を加える必要がある場合や、XBeeモジュールに接続した他のデバイスを制御したい場合等に、MicroPythonオプションが有利です。
例えば、「センサからデータを読み取るたびに点灯するLED」を作ることができます。応用すると、RFIDリーダにIDカードをかざすとドアのロックが解除される、カードキーのようなものが作れるようになります。この場合、MicroPythonを使ってセンサがデータを読み取ったことをLEDでユーザーに知らせたり、ロックの開錠・施錠動作をさせたりできます。
逆に、ハードウェアオプションではセンサデータを読み取ったままの状態でネットワークに送信します。送信前にデータを加工したい場合には、MicroPythonオプションを使用します。
どちらの場合も、センサはXBeeモジュールのIOピンに直接接続して使用します。
センサをXBeeモジュールに接続してデータを読み取り、センサネットワーク上の他のXBeeモジュールに送信します。アドレスを指定して特定のモジュールにだけデータを送信することも、すべてのモジュールにデータを送信することも可能です。
続いて、ハードウェアオプションとMicroPythonオプションを用いた例として、簡単な環境センサを構築してみましょう。
XBee環境センサの作成
この環境センサノードは、XBeeモジュールのアナログ入力ピンに接続したアナログ温度センサ(TMP36)を接続しています。
XBeeモジュールのアナログデジタル変換器(ADC)を使って、温度を0~1023 の範囲の数値に変換して読み取ります。
ここでは動作確認のために短い時間間隔(サンプリングレート)でデータを送信するよう設定します。実際使用するに当たっては電源の節約のために、サンプリングレートを遅くするか、XBeeモジュールのスリープを使用して、データ送信→スリープ→データ送信→…と繰り返すケースが多くなります。
XBeeモジュールには供給されている電力の監視を行う便利な機能があり、データパケットの一部にXBeeモジュールに供給されている電源電圧を送信できます。特にバッテリーや電池で駆動させる場合に、ユーザーに交換や充電の時期が迫っていることを知らせる、といった応用ができます。ご家庭の火災報知器やスマートフォンなどに、同じように電池の交換や充電を促す機能がありますね。
ハードウェアの作製
ハードウェアを簡単に構築できるよう、センサノードはブレッドボード上に組み立てます。ブレッドボードを使用することで実験が容易になりますし、回路が完成したらブレッドボード型のユニバーサル基板上にそのまま移植して使い続けられます。
XBeeセンサノードは、ブレッドボード上に、ブレッドボード用電源、温度センサTMP36、セラミックコンデンサ0.1uFを使用して作製します。
この他、もちろんXBeeモジュールと、XBee Explorerボード、Explorerボードをブレッドボードに設置するための2.54mmピッチのピンヘッダが必要です。
図1にはSparkFunのレギュレーター付きExplorerボードを示します。少し高価なボードですが、レギュレーター回路が内蔵されているため、誤って5Vの電源につないでしまってもXBeeモジュールを壊す心配がありません。
当然ながら、XBeeモジュールは壊してしまうと何の役にも立たなくなってしまうので、こういった保護回路のついたExplorerボードは、多少高くても利用する価値はあるといえるでしょう。
他にも各社こうしたExplorerボードを発売していますが、多くはブレッドボード用のヘッダーピンがはんだ付けされていません。各自はんだ付けして使用してください。
各部品を図2のようにブレッドボード上に回路を組み立てます。XBeeモジュールはまだ差し込まないでおきます。
ブレッドボードの電源モジュールは3.3Vを出力するよう設定します。
使用するExplorerボードによって、XBeeモジュールのピンとブレッドボードのピンとの対応が異なっている場合があるので、説明書と合わせてよく確認してください。
XBeeモジュールは電源の他に、17ピン(アナログ入力3、DIO3)に、温度センサTMP36からの信号線を接続します。
温度センサTMP36は平らな面を手前に置いた時に左から1、2、3ピンと名前が付いています。2ピンをXBeeモジュール17ピン、1ピンを電源3.3V、3ピンをGNDにそれぞれ接続します。
コンデンサは温度センサTMP36の1ピンと3ピンの間に取り付けます。向きはどちら向きでも構いません。
以上でハードウェアの組み立ては完了しました。次回は、最初に説明した2つの方法でXBeeモジュールに接続したセンサを読み取る方法を見ていきましょう。
ブレッドボードあれこれ
ブレッドボードを使った実験が一通り終わり、ある程度長い期間センサノードを使用したい場合には、ブレッドボードからユニバーサル基板に回路を移植した方が良いでしょう。ブレッドボードを長期間使用すると電線や部品が抜けてしまったり、バネ端子の接触が悪くなって動作不良を起こしたりすることがあります。ブレッドボードと同じ形状・同じ配線パターンのユニバーサル基板という物も市販されているので、活用すると便利です
また、本文中ではブレッドボード用の電源モジュールを使用しましたが、特にユニバーサル基板に移植する場合やたくさん使いたい場合には、この部分を自作することでより安価にできます。使用する電子部品は3.3Vの3端子レギュレーター、コンデンサ1uFと10uF、端子台などで、下図のようにブレッドボード上に組み立てます。
コメントを残す