温度センサー(LM61CIZ)から出力される値を子機のXBeeで読み取って、親機のXBeeに送信する実験を行ったときのメモです。
以前に書いたXBeeの通信テストの記事を前提に書いています
XBeeの通信テストwith APIモード on Mac OS X その(1)
XBeeの通信テストwith APIモード on Mac OS X その(2)
XBeeの通信テストwith APIモード on Mac OS X その(3)
もくじ
手順
・子機のXBeeユニットに温度センサーをセットする
・XCTUで親機のXBeeを通して子機のXBeeの設定を変更する
・子機XBeeから送信されてくるセンサーの値を確認する
子機のXBeeユニットに温度センサーをセットする
以前にXBeeの通信テスト用に作成した子機のXBeeユニットに温度センサーを追加でセットします。温度センサーは秋月電気通商さんで購入したLM61CIZ(4個200円)です。
ブレッドボードの給電ラインから、プラス(+)、GND(ー)に対応するセンサーのピンへジャンパワイヤをセットします。温度センサー(LM61CIZ)にはピンが3本付いています。
下記の画像では左から、プラス(+)、出力、GND(ー)です。センサーの形状から向きを間違えないようにします。
ブレッドボードからのプラス(+)は温度センサーのプラス(+)ピンに接続し、
ブレッドボードからのマイナス(ー)は温度センサーのマイナス(ー)ピンに接続します。
プラスとマイナスを逆に接続してしまうと、センサーが異常に高温になり、危険です。私は一度、間違えて接続してしまったのですが、センサーから焦げたような臭いが発せられました(´Д`)。
温度センサーの出力をXBeeのピンにセット
温度センサー(LM61CIZ)の真ん中のピンはセンサー値をアナログ値(電圧)として出力するので、これをXBeeのアナログ値を入力することができるピンに接続します。
XBeeのアンテナ側を上とすると、右側のピンの配置の上から2番目の「ADC1/DIO1」ピンに接続します。
温度センサーへの入力電圧の確認
この時点でXBeeと温度センサーで電源(電池ボックス)を共有しています。
温度センサー(LM61CIZ)の仕様を見ると、入力電圧は+12V〜-0.2Vということで、電池ボックスの電圧(私の用意したものは4V)をそのまま使っても問題なさそうです。
温度センサーから出力される値の出力電圧
この温度センサーは温度に応じた電圧を出力します。(アナログ出力)
センサーの説明書によれば、0℃なら+600mVの電圧、25℃で+850mVの電圧を出力します。
XBeeはアナログ値を最大+1200mVまで読み取ることができるそうです。温度センサー(LM61CIZ)は100℃の場合、+1600mVの電圧を出力するのでXBeeの仕様をオーバーしてしまいますが、室温などの常温の範囲であれば+1200mVに収まると思うので、今回は実験ということで無視しました。(100℃でも測定できるようにするには、電圧を調整する回路を作る必要があります。)
XCTUで親機のXBeeを通して子機のXBeeの設定を変更する
USB変換基板に親機のXBeeを挿し、パソコンのUSBポートに接続。XCTUを起動します。
次に、子機のXBeeユニットの電源を入れて、親機が子機を認識していることを確認します。
子機のXBeeのピン設定(I/O Settings)のD1ピンの設定を変更
親機を通じて、子機の設定を変更します。
左のリストから子機をクリックして、右側に子機の設定欄を表示させます。
I/O Settingsの
D1 AD1/DIO1 Configuration を ADC [2] に変更し、鉛筆のアイコンをクリックして設定を書き込みます。
以上の設定で、子機のXBeeのD1ピンに入力されたアナログ値を親機に送信することができます。
子機XBeeから送信されてくるセンサーの値を確認する
XCUTにて、XBeeのリストから親機を選択し、XBeeの操作画面を表示させ、コンセントとプラグのアイコンをクリックすると、子機から送られてきたデータ(APIフレーム)を確認することができます。
受信したデータの内容欄をスクロールして下の方を見ると、「Analog sample:」と書かれた欄があります。16進数で4桁のデータ(02 DB)が送られていることが分かります。
16進数の「02 DB」は10進数に直すと、731です。
(16^3 x 0 + 16^2 x 2 + 16^1 x 13 + 16^0 x 11 = 731)
XBeeのD1ピンから731という値が送信されてきたことが分かります。
この値はXBeeが0〜1200mVを1024段階で表した時の731段階目を読み取ったという意味です。
また、温度センサーのLM61CIZは0℃で600mVを出力し、1℃あたり10mV上昇していく、ということから温度に変換すると、
(731 x 1200mV / 1024段階 – 600mV ) / 10mV = 25.6℃ となります。
子機のXBeeユニットでは温度センサーの出力を直接XBeeに入力しているので、このままでは精度が低くなります。精度を上げるための回路を作るのはまた別の機会に行いますが、とりあえず子機のXBeeユニットの温度センサーで読み取った値を親機で受信し、おおざっぱな温度に変換することができました。
3 thoughts on “XBeeで受信した温度センサーの値を送信する”