センサーネットワークを用いた物探しセンサーの開発と運用

目次

1. はじめに

人々は家に多くの物を保管する。中には、たまにしか使わないもの、電子機器の保証書のような手に入れてから長い月日が経過してから使う物もある。 そこで、それらの物の場所を、センサーネットワークを使って管理することができないかと考えた。

センサーネットワークとは複数のセンサー付き無線端末を空間に散在させ、それらが協調して環境や物理的状況(温度、音、映像など)を採取することを可能とする無線ネットワークである。

本研究の目的は、電波強度というセンサー間の電波のつながりの強さで距離を測り、三辺側量法を用いて探し物の場所を特定していくことである。

2. 準備

XBee、Arduino FIO
図2-1 XBee、Arduino FIO

2.1 Arduino FIO

2.1.1 概要

Arduinoとは、スタンドアロン型のインタラクタデバイス開発だけでなく、ホストコンピュータ上のソフトウェアで制御することもできるワンボードマイコンの一種である。 その中のArduino FIOは、 ATmega328P、8つのアナログ入力、オンボード共振器、14ディジタルI/Oピンを有し、リチウムポリマーバッテリー、USB経由充電回路を含んでいるという種類のボードである。また、Zigbeeソケットはボードの下部にある。 FTDI basicを使い、Sparkfunのブレイクアウトボード(Arduino Fio)にスケッチをアップロードすることができる。

2.1.2 仕様

表2-1 Arduino FIOの仕様
マイクロコントローラ ATmega328P
動作電圧 3.3V
入力電圧 3.35V~12V
充電用入力電圧 3.7~7V
ディジタルI/O 14個
アナログ入力ピン 8個
1個のI/Oピンの最下DC電流 40mA
フラッシュメモリー 32KB(ブートローダで使用されるのは2KB)
SPAM 2KB
EEPROM 1KB
クロック速度 8MHz
28mm
長さ 65mm
重さ 9g

2.1.3 Arduino IDE

 スケッチを書いてArduinoのボードにアップロードすることのできるソフトウェア。エディタ、コンパイラ、基盤へのファームウェア転送機能などを含む。その内部ではC言語のコンパイラgccやアップロードプログラムavrduleが使用されている。

Arduino IDEの画面
図2-2 Arduino IDEの画面

2.2 XBee(ZigBee)

2.2.1 概要

ZigBeeとは、センサーネットワークを主目的として、Zigbee Allianceによって仕様が策定されている無線通信規格である。

2.2.2 ZigBeeのレイヤ構造

ZigBeeのレイヤ構造の図
図2-3 ZigBeeのレイヤ構造の図

これより、ZigBeeの使用者はアプリケーション層を設定するだけで よい。 データ転送速度は20Kbps~250Kbpsと低速で転送距離が短いが、安価で消費電力が少ないといった特徴を持つ。

2.2.3 ZigBeeのネットワーク構成

ZigBeeのネットワークは以下の3種類のノードによって構成される。

ZigBee Coordinator(ZC)
ネットワーク内に1つ必要、ネットワーク全体の制御を行う端末(親機)。
ZigBee Rooter(ZR)
ネットワーク内でデータの中継機能を含む端末。無くても良いが到達距離を伸ばせる。
ZigBee End Device(DED)
ネットワーク内でデータの中継機能を持たない端末。スリープモードに設定して省電力化もできる。

これらの要素を含み、メッシュ型やツリー型のネットワークを構成しZigBee Rooterがデータを中継することで直接電波の届かない端末間でも通信が可能となる。

2.2.4 XBeeのインターフェイス

XBee Grove Development Board
図2-4 XBee Grove Development Board

このインターフェイスにXBeeを取り付けることで、専用のUSBケーブルを用いてPCと接続することができる。

2.2.5 ATコマンドモードとAPIパケットモード

ATコマンドモード
モデムと同様なATコマンドでお互いに通信する。
1対1で相手のアドレスを指定して要求(リクエスト)を送信して、帰ってくる応答(レスポンス)で確認する。シリアル通信のケーブルを無線化したようなものなので「透過モード」とも呼ばれる。
APIパケットモード
RooterやEnd Deviceで収集したデータは「APIフレーム」というプロトコルでパケット化されて垂れ流し式で送信される。
特定のデバイスにリモートコマンドを送出してポートの値を変更することは可能だが、この変更は一時的なもので、デバイスを再起動したり、リセットすると元に戻る。

2.2.6 XBee設定ソフトウェア

XCTUというソフトウェアを用いてXbeeの設定を行う。

ZigBee USB Explorer にZigBeeを指し、USBケーブルでPCに接続して、PCから「ZigBee」の設定を行うことができる。

2.2.7 仕様

以下、XBee S2C ZigBeeにおいての仕様である。

・性能
トランシーバーチップセット Silicon Labs EM357 SoC
データレート RF 250Kbps、シリアル最大1Mbps
屋内/アーバンレンジ 60m
屋外/RF見通しレンジ 1200m
送信出力 3.1mW(+5dBm)/6.3mW(+8dBm)
受信感度(1%PER) -100dBm/-102dBmブーストモード
・機能
シリアルインターフェイス UART、SPI
コンフィグレーション方法 API又はATコマンド、ローカル又は無線(OTA)
周波数帯域 ISM2.4GHz
フォームファスタ スルーホール、表面実装
対干渉性 DSSS(直接拡散方式)
ADC入力 (4) 10ビットADC入力
ディジタルI/O 15
アンテナオプション スルーホール:PCBアンテナ、U.FLアンテナ、RPSMAコネクタ、内蔵ワイヤ、SMT:RFパッド、PCBアンテナ、U.FLコネクタ
動作温度 -40℃~+85℃
外形寸法と重量 スルーホール:2.438×2.761cm、SMT:2.199×0.305cm
・プログラマビリティ
メモリ N/A
CPU/クロックスピード N/A
・ネットワーク&セキュリティ
プロトコル ZigBee PRO 2007、HA-Ready(バインディング/マルチキャスティング対応)
暗号化 128ビットAES
高信頼パケット転送 Retries/Acknowledgements
IDとチャネル PAN ID、クラスターID、エンドポイント(オプション)
・電力条件
電源電圧 2.1~3.6V DC
送信電圧 33mA @3.3V DC/45mAブーストモード
受信電流 28mA @3.3V DC/31mAブーストモード
パワーダウン電流 <1μA @25℃
・規制認可
FCC、IC(アメリカ)
ETSI(ヨーロッパ)
RCM(オーストラリア、ニュージーランド)

3. 位置同定について

3.1 測定方式

・三辺測量法
三角形各辺の距離を調べ、探したい物の位置、高さを求める測定方法。
今回は電波強度を使って三辺の距離を求め、「3.2 同定法」の計算によって探し物の場所を求める。

3.2 同定法

三辺測量の図
図3-1 三辺測量の図

余弦定理より

calcu1

ここでa、b、cが求まった時、探し物の座標を求める。 「PC」の座標を(0, 0)、「トークン」の座標を(a, 0)とする。 この時、角Cの大きさが分かれば探し物の座標は、

calcu2

であるので、角Cにおけるsin、cosの値を求める。

calcu3
calcu4
calcu5

より

calcu6
calcu7 (3-1)

これにより、bとcの値と探し物の座標が対応することが分かる。

4. 実験

4.1 実験の目的

3つのセンサー間のそれぞれの電波強度を測定し、そこから距離を測定し「3.2 同定法」の計算で探し物の場所を求める。

4.2 使用機器

表4-1 使用機器の表
PC Panasonic CF-SX2
ZigBee S2C ZigBee Modules(TH and SMT)3個
Arduino FIO 1個
Xbee Grove Development Board 2個
Micro-USBケーブル 2個
リチウム電池 +2000mAh 3.7V 7.40Wh

4.3

4.3.1 XCTUでZigBeeの設定を変更する。

ZigBee S2CをXbee Grove Development Boardに取り付け、Micro-USBケーブルを使ってPCに接続する。(図4-1)

XBeeとPCの接続図
図4-1 XBeeとPCの接続図

XCTUで接続したPCのポートを読み込み、ZigBeeの設定画面を読み込む。

XCTUの設定画面
図4-2 XCTUの設定画面

この変更を3つのZigBeeすべてに行う。

変更する部分は表4-3,4-4,4-5である。

表4-3 PC側のXBeeの設定(13A200 40F70923)
ID、PAN ID 1234(3つ全て同じなら自由)
CE Coordinator Enable Enables[1]
AP API Enable API Enable[1]
表4-4 トークン側のXBeeの設定(13A200 40F78154)
ID PAN ID 1234(3つ全て同じなら自由)
AP API Enable API Enable[1]
表4-5 探し物側のXBeeの設定(13A200 40F78203)
DH Destination Address High 13A200
DL Destination Address Low 40F70923
AP API Enable API Enable[1]

4.3.2 機材を接続する。

図4-3のように機材を接続する。

機器の接続図
図4-3 機器の接続図

図4-3の実際の接続図を図4-4に示す。

接続図
図4-4 接続図
RSSI測定の図
図4-5 RSSI測定の図

4.3.3 位置算出の準備

(3-1)の式により直接座標を求める他に、図4-5において、A、Bの電波強度で部屋の位置をデータベース化しておくことにより、電波強度の組から直接探し物の位置を求めることができる。

PC側のXBee、トークン側のXBeeそれぞれをCoordinatorとした時の探し物とのRSSI値を、ATコマンドによって求める。

部屋の全体図
図4-6 部屋の全体図

PC側のXBeeとトークン側のXBeeの電波強度をあらかじめ求めて置く。

この測定をX1~X11すべてのところで行う。

4.3.4 電波強度を測定し、データベース化する。

表4-6 RSSI値(16進法)
位置 A B
X1 1F 2D
X2 29 38
X3 30 2C
X4 37 3B
X5 30 30
X6 35 3C
X7 3A 39
X8 48 41
X9 43 44
X10 36 31
X11 34 2F

表4-4を元に、電波強度の等高線の図を描く。

電波強度の等高線の図
図4-7 電波強度の等高線の図

表4-4は16進法で表されているので8間隔で等高線が組まれている。

等高線はPCから出ている曲線、トークンから出ている曲線の2種類がある。探し物に取り付けたタグからのRSSI値をそれぞれ測定し、そのRSSI値に近い等高線同士の交わるところ付近に探し物がある。

4.4 考察

当初の予定では「トークン」はPCに繋がっていず、部屋の隅に固定しておくはずだった。しかし、スタンドアロンで独立している「トークン」、「探し物」に付けたセンサー同士の電波強度をPCで受信するまでに至らず、「トークン」もPCに繋いで電波強度の組をデータベース化した。 しかし、引き出し等にしまってあると本来の距離と変わってしまうこと、探し物に取り付けたリチウム電池の寿命についての問題を解決していかなくては実際に運用していくには難しいだろう。

5. まとめ

本研究では、ZigBee端末を用いた探し物探索端末を提案した。探し物にZigBee端末を取り付け、PCに2つのZigBee端末を付けることにより、部屋のどこに探し物があるのかを電波強度に計測、三辺測量による座標計算によって観測できるようになった。

6. 謝辞

本研究を進めるにあたり、終始のご指導並びに機材を提供していただいた本情報通信工学専攻の坂本直志教授に深謝します。

7. 参考文献

  1. DIGI International https://www.digi.com/products/zigbee
  2. ARDUINO Genuino https://www.arduino.cc/
  3. ボクにもわかるXBee用センサネットワーク http://www.geocities.jp/bokunimowakaru/diy/xbee/index.html
  4. XBeeをはじめてみよう(シリーズ1編) http://mag.switch-science.com/2012/07/20/startup_xbee_s1/
  5. XBee Setting http://im-lab.net/xbee-setting-2/
  6. XBee http://cubic9.com/Devel/%C5%C5%BB%D2%B9%A9%BA%EE/Arduino/XBee/
  7. 広石 達也 "ZigBeeノードの自動較正測位手法"、January 2010
  8. 高島 雅弘, 趙 大鵬, 柳原 健太郎, 福井 潔, 福永 茂, 原 伸介, 北山 研一, "センサネットワークにおける受信電力と最ゆう法を用いた位置推定" 電子情報通信学会論文誌B Vol. J89-B No.5 pp.742-750,2006