2014年5月24日2021年9月26日

XBeeで受信した温度センサーの値を送信する

IMG_7442

温度センサー(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円)です。

IMG_7446

ブレッドボードの給電ラインから、プラス(+)、GND(ー)に対応するセンサーのピンへジャンパワイヤをセットします。温度センサー(LM61CIZ)にはピンが3本付いています。
下記の画像では左から、プラス(+)、出力、GND(ー)です。センサーの形状から向きを間違えないようにします。

IMG_7443ブレッドボードからのプラス(+)は温度センサーのプラス(+)ピンに接続し、
ブレッドボードからのマイナス(ー)は温度センサーのマイナス(ー)ピンに接続します。

IMG_7439

プラスとマイナスを逆に接続してしまうと、センサーが異常に高温になり、危険です。私は一度、間違えて接続してしまったのですが、センサーから焦げたような臭いが発せられました(´Д`)。

温度センサーの出力をXBeeのピンにセット

温度センサー(LM61CIZ)の真ん中のピンはセンサー値をアナログ値(電圧)として出力するので、これをXBeeのアナログ値を入力することができるピンに接続します。

IMG_7440

XBeeのアンテナ側を上とすると、右側のピンの配置の上から2番目の「ADC1/DIO1」ピンに接続します。

IMG_7441

温度センサーへの入力電圧の確認

この時点で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] に変更し、鉛筆のアイコンをクリックして設定を書き込みます。
スクリーンショット-2014-05-20-0.07.06以上の設定で、子機のXBeeのD1ピンに入力されたアナログ値を親機に送信することができます。

子機XBeeから送信されてくるセンサーの値を確認する

XCUTにて、XBeeのリストから親機を選択し、XBeeの操作画面を表示させ、コンセントとプラグのアイコンをクリックすると、子機から送られてきたデータ(APIフレーム)を確認することができます。

スクリーンショット-2014-05-21-17.56.36_

受信したデータの内容欄をスクロールして下の方を見ると、「Analog sample:」と書かれた欄があります。16進数で4桁のデータ(02 DB)が送られていることが分かります。
スクリーンショット 2014-05-21 17.56.5416進数の「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で受信した温度センサーの値を送信する

コメントはこちらから

メールアドレスは公開されません。 が付いている欄は必須項目です

タグ一覧

© 2024 びわ湖のほとりの人 All Rights Reserved.