XBee ワイヤレスセンサー SD ロガー for Arduino

by ボクにもわかる地上デジタル

XBeeメインメニューへ戻る
地デジトップへ戻る

Arduino + Wireless SD Shield (XBee Shield)
Arduino + Wireless SD Shield (XBee Shield) + 超小型LCD

はじめに

 Arduino純正の Wireless SD Shield に超小型液晶を搭載し、XBee ワイヤレスセンサー用 SD ロガーを製作します。収集した情報はmicro SDカードに保存します。

必要なハードウェア

 以下に必要なハードウェアのリストを示します。センサー子機は一例です。このページでは親機の製作方法を中心に説明します。

Arduino + XBee SD ロガーに必要なハードウェア
品名 参考価格 備考

Arduino Uno SMD R3 2,390円 安価な互換品や秋月キット
Arduino Wireless SD SHIELD 2,500円 micro SD スロット搭載品が必要です。
I2C接続小型LCDピッチ変換キット 600円 秋月で売られている小型液晶キットです。(要ハンダ付け)
XBee-PRO ZB(S2) Module 2,900円 Arduinoに搭載する親機用。RPSMAコネクタ型がお奨めです。
XBee 専用アンテナ 550円 上記の親機XBeeのRPSMAコネクタに取り付けるアンテナです。
micro SD(SDHC)カード 1,000円 ログ保存用のmicro SDカード(FAT16/32,SD/SDHC対応)です。

XBee Wall Router 8,400円 実験用の照度センサと温度センサ、XBeeが内蔵されています。
ブレッドボードで作るセンサー」を使用することも可能です。

 このリストは一例ですが、本ページではArduino純正のWireless SD SHIELDに秋月電子で売られているI2C接続小型LCDモジュールピッチ変換キットを接続して製作する「XBee ZB + SD + LCD」ハードウェア(シールド)と専用のソフトウェアについて説明しますので、少なくともシールドと液晶は記載のものを使用していただくのが良いでしょう。
 Arduino Wireless SD SHIELD には、micro SDスロットがついています。似たような製品でArduino Wireless SHIELDがありますが、こちらはmicro SDスロットがついていません。
 XBeeモジュールはZigBeeもしくはZB、Series 2、S2、S2Bといった表示のあるZigBee対応品を使用します。古い製品に Series 1と呼ばれるZigBee規格に準拠していない製品があるからご注意ください。(詳しくは「XBee ZigBee Wi-Fi モジュールの種類」にシリーズや、アンテナ、無線性能などの特長や違いについて記載しています。)
 親機用のXBee-PROモジュールはPROではないXBeeでも実験はできます。しかし、XBee-PROの方が通信距離が長いので、なるべくならXBee-PROと専用アンテナの組み合わせをお奨めします。


親機にお奨めのXBee-PRO(RPSMA)と専用アンテナ

 秋月電子のI2C接続小型LCDモジュールピッチ変換キット(600円)はI2C接続の8文字×2行の小型キャラクタ液晶8文字×2行液晶(AQM0802A-RN-GBW 320円)と同社オリジナルのI2C接続小型LCDモジュール用ピッチ変換基板(AE-AQM0802 400円)とのセットです。ピンヘッダも付属しており別々に買うよりも16%以上も割安ですので「キット」と書かれた商品をお奨めします。


秋月電子のI2C接続小型LCDモジュールピッチ変換キット(参考 600円)

 XBee Wall Routerはセンサー子機として使います。Strawberry Linuxで「ZigBee レンジエクステンダー」の名称で売られています。もしくは「ブレッドボードで作るセンサー」などを製作しても良いでしょう。


照度センサと温度センサ内蔵の Digi純正 XBee Wall Router (参考 8,400円)

I2C接続小型LCDモジュールを製作する

 まずは秋月のI2C接続小型LCDモジュールの組み立てを行います。付属の基板には液晶を実装する表面とチップ部品6個が載っている裏面とがあります。2つ前の写真は基板の裏面です。液晶を基板の表面に実装してから裏面で半田付けし、余分なリード線を切り落とします。また、PUと書かれたジャンパーパターンのそれぞれ2か所に半田を盛ってショートにします。この時、2か所のジャンパーパターンが互いに接触しないように注意します。半田付けが終わったら基板背面の全体をポリイミドテープで絶縁保護します。


液晶を表面に実装し(左)、裏面で半田付けと絶縁保護(右)する

液晶モジュールをArduino Wireless SD Shieldに実装する

 次に液晶モジュールをシールドに実装します。ピンヘッダとともに Arduino Wireless SD Shield の表面に液晶を半田付けし、裏面でピンヘッダの余分なリード線を切断し、信号線2本と電源、GNDをArduinoの各ポートへ配線します。下図のようにSCL(黄色)をAnalog 5にSDA(橙)はAnalog 4に、電源VDDは3.3Vに接続します。


液晶をシールドに実装して配線する

 表面の液晶用ピンヘッダについても半田付けと余分なリードの切断を行い、絶縁します。とくに XBee PRO ZB モジュールを使用する場合、秋月の変換基板とXBeeモジュールのシールドとの距離が0.5mmほどしかないので、半田やリードが飛び出ているとXBeeモジュールの取り付け/取り外し時に接触する可能性があります。ピンヘッダのリードの飛び出しを最小限に抑え、半田もあまり盛り上がらないように注意してください。


液晶をシールドに実装して配線する

 以上のように製作した小型液晶付きの Wireless SD Shield に XBeeモジュールを実装し、Arduino UNOに接続すればハードウェアの完成です。

Arduino IDE (開発環境)のインストール

 Windows インストーラを使った場合のインストール方法「Arduino IDE インストール方法(PDF)」を参照し、Arduino IDEをインストールしてください。以下はArduino IDEのインストールとArduino UNO用のシリアルドライバのインストールが完了していることを前提に説明を続けます。

Digi X-CTU (XBee 設定ツール)のインストール

 Digiのホームページから「Support」メニュー内の「Diagnostics, Utilities & MIBs」を選択すると、Digi社の製品リストが表示されます。この中から「X-CTU」を選択します(http://www.digi.com/support/productdetail?pid=3352)。
 この中から「Legacy XCTU」の「XCTU ver. 5.2.8.6 installer」をダウンロードして、ダブルクリックするとインストーラーが起動してインストールできます。

親機用のXBee-PROモジュールの設定

 ここでは親機用のXBee-PROモジュールを「ZIGBEE COORDINATOR API」に設定します。「Coordinator」とはZigBeeデバイスの種類の名称で、ZigBeeネットワークを管理する役割を担ったデバイスを示しています。一つのZigBeeネットワークに一つのCoordinatorが存在する必要があります。ここでは分かりやすくCoordinatorのことを親機と表現することにします。
 設定には先ほどインストールした「X-CTU」を使用します。Arduino UNOにXBee PRO ZBモジュールとWireless SD Shieldを取り付け、Wireless SD Shield上のSERIAL SELECTスイッチを右側の「USB」に切り替えます。このArduino UNOをパソコンに接続した状態、X-CTUを起動し、シリアルポートの選択画面でArduino UNOが接続されているシリアルポート(COM番号)を選択します。
 次に上方にあるタブの中から「Modem Configuration」を選択し、「Read」をクリックします。うまくシリアル通信が出来れば、XBeeモジュールの設定値が表示されます。通信に失敗する場合はブレッドボードジャンパー線などでArduinoのRESET端子とGND端子とをショートにした状態にします。書き込み後に戻します。


 ファームウェアの種類「Function Set」をプルダウンして「ZIGBEE COORDINATOR API」を選択します。語尾に「API」のついたものと「AT」のついたものがありますが、ここでは必ず「API」を選択してください。


 最後に「Write」で書き込みます。

Arduino IDEへXBeeライブラリを追加する

 Arduinoへ書き込むソフトウェアのインストールを行います。まず、当方サイトのダウンロードページからXBee用ライブラリ(xbee_arduino.zip)をダウンロードします。ダブルクリックするとZIP圧縮されたファイルが見えます(下図@)ので、「XBee_Coord」フォルダを、Arduino IDEの「libraries」フォルダにコピーします(下図A)。


スケッチ(Arduino用のプログラム)をArduinoに書き込む

 アプリケーションを作成するためにArduinoを接続した状態でArduino IDEを起動します。起動すると下図のような画面が出てきます。


 Arduino IDEの必須の設定は2つだけです。「ツール」メニューにある「マイコンボード」と「シリアルポート」です。「マイコンボード」は購入したArduinoの種類を選びます。Arduino Unoであれば「Arduino Uno」です。「シリアルポート」はArduinoと通信を行うためのCOM番号を選びます。分からない場合は、適当に選んでおいて、動かなければ変更します。


 次にスケッチを読み込みます。スケッチ(Arduino用のプログラム)はXBee ZB ライブラリ Ver.193以降で配布します。該当のバージョンの場合「ファイル」メニューの「スケッチの例」「XBee_Coord」から開けます。もしくは「sample61_log.zip」からダウロードして適当なフォルダに展開し、Arduino IDEの「ファイル」メニューの「開く」からファイル「sample61_log.ino」を開きます。
 アイコンメニューの矢印「→」をクリックするとこのスケッチをコンパイルし、Arduino UNOへ書き込みます。書き込みに失敗する場合はシールドを外して試します。

動かしてみる

 スケッチの書き込みが終わるとArduinoのアプリが自動で起動し「サンプル61」の表示が出ます。この時、Wireless SD Shieldの Selial Selectスイッチを「MICRO」側にします。また、micro SDカードも装着しておきます。もし、表示が出ない場合は、一度、シールドを抜いてから再接続します。
 「サンプル61」の表示のまましばらく待つと1秒ごとに画面が変化するようになります。10秒以上待っても、タイトル画面「サンプル61」のまま進まない場合は、タイムアウトしてしまっていますので、Arduinoのリセットボタンで再起動します。それでも進まない場合はmicro SDカードを、一度、抜いて指し直します。
 この状態で子機となる XBee Wall Router などの XBee ワイヤレスセンサーの電源を入れて当該子機のコミッションボタンを1回だけ押すとペアリングが実行されます。子機のボタンは一つしかないので迷うことはないと思います。
 子機のLEDが点灯から点滅に変わったらペアリング完了です。もう一度、子機のコミッションボタンを押すと、Arduino親機にネットワークへの参加を通知します。次回からは、一度、押すだけでArduino親機が子機を発見できるようになります。
 もし、ペアリングがうまくいかない場合は、子機のコミッションボタンを4回連続で押してネットワーク設定を初期化します。Arduino親機をリセットして、もう一度、試してみてください。子機のコンセントを、一度、抜くと正しく動作する場合もあります。

SDカードに保存される

 収集した情報は液晶に表示するとともにSDカードに保存します。ファイル名は子機XBee ZBモジュールのIEEEアドレスの下8桁に拡張子CSVを付与した名前です。
 時刻はスケッチで設定します。時計の精度はArduino用のクロック次第です。また、ArduinoがOFFになるとリセットされます。より正確な時刻を刻み続けたい場合は、別途、RTC ICとRTCを動作させ続けるためのコイン電池といったハードウェアの追加が必要です。


XBeeメインメニューへ戻る

地デジトップへ戻る