Raspberry Pi
を屋外に常設する場合、IP規格対応の防水ケース入れて電源コードを引きます。
未来工業製WB-10DM、屋外用コンセントの引き込みも可
Raspberry Pi の電源
図1のような十数台の Raspberry Pi
の電源のオン/オフにも意外に手間がかかります。開発・デバッグ中は頻繁に電源のオン/オフが発生することもあり、これが数十台、数百台の規模になると、開発者には地獄です。
Raspberry Pi はWOL (Wakeup On
Lan)に対応していないため、マジックパケット送信による遠隔起動はできません。
テスト環境は当社事務所にAplix社製ビーコン54台とRaspbery Pi 端末13台を下図のように配置し、構築しています。端末13台は4mを辺とする正方形の4頂点上に配置し(これをグリッドと呼びます)、さらに各正方形の中心にも端末を配置しています。位置測位の対象となるビーコンは図の[R]と[B]の両方に配置しています。
前稿の二円指向三点測位(以下、旧版、と呼びます)では端末を正方形型に配置し(図1のA~I)、ビーコン(図1のB)のRSSIを測定して端末とビーコン間の距離(=半径)を算出しました。通常の三点測位では3円が重なっていないとエラーとなりますが、本測位モデルでは C1 と C2 (図では E と F)で x 座標を、C1 と C3(図では E と B) で y 座標を算出することにより、ビーコン(B)の位置と推定しました。
図1:二円指向三点測位(旧版)のイメージ
Image of 2 circles-oriented trilateration (old ver)
コマンド実行後に Raspberry Pi を再起動すると、画面上部に以下のアイコンが表示されるようになります。
新規に接続を作成する場合は、上記の NetworkManager アイコンをクリックします。現在の接続状態と、利用可能な AP の一覧が表示されますので、その中から接続したい AP を選択します。
たとえば、tpctp1 に接続したい場合は、以下のように選択します。 利用可能一覧に AP が表示されていない場合は、その他のネットワークを選択すると、さらに接続可能な AP が表示されますので、そのなかから選んで接続します。
この要領で接続をすると、多くの場合は AP の DHCP 機能により IP が割り振られることになります。 固定 IP を振り直したい場合は、NetworkManager アイコンを右クリックし、「接続を編集する...」メニュー項目を選ぶと、登録済の接続情報の一覧が表示されますので、そのなかから変更対象の接続を編集します。
電源を投入すると、前回のシャットダウンまで接続されていた AP に接続されます。
このとき、そのAP への接続に失敗すると、NetworkManager によって他の登録済みの AP に自動接続されます。
接続先の変更
Raspberry Pi 端末の接続先を変更したい場合は nmcli connection up コマンドを使用します。
nmcli connection up tpctp1
複数の Raspberry Pi の AP(SSID) を一括して変更するには、TeraTerm などの接続ツールを使って複数の Raspberry Pi にログインし、以下のブロードキャスト(一括)コマンドを発行すると良いと思います。
以下は、接続済みの端末に向けて tpctp2 という接続名の AP に一括接続切替をするためのコマンドです。
iPhone では WiFi AP 毎に『自動接続』をOFFできますが、これに相当する nmcli コマンドが見当たりません。テストを行っている場合等、特定の AP のみに接続を限定したいことがあると思うのですが...。connection down というコマンドがありますが、これはAP への接続を停するだけで、iPhoneで言うところの「『自動接続』をOFF」にはならないため、電波状況によっては接続が復活してきてしまう模様です。
端末は安価で定評も実績もある Raspberry Pi を使用しています。RPには多くの機種があり、信号受信アンテナの設置位置や無線チップも異なる(最新の3B+ではBCM2837B0、その他はBCM2837)ので、こちらも1つの機種限定したほうが簡単ですが、将来的な入手の容易性、拡張性、柔軟性を念頭に複数のシリーズを使用しています。
ビーコンから送信される信号はRaspberry Pi で受信・加工され、アプリケーションサーバを介して、データベースに書き込まれます。今回はデータベースに SQLite を使用しましたが、多数の端末を使用する場合はマルチユーザ利用に適した MySQL や PostgreSQL 等を使用する方が良いと思います。
3つ目の補正方法が領域補正です。上述の式1に n という係数がありますが、この n は伝搬損失係数(Path-loss index)と呼ばれ、理想的な環境では2となります。しかし、電波は干渉、減衰、回折、反射、吸収の影響を受けるため、端末とビーコンの配置場所により変動します。
式1を展開して n を求めると以下のようになります。
式2:伝搬損失係数 n の算出式
本補正法では、この n を使用して補正を実施します。
まず、アプリケーション(tpclocation.js)は、図のように近接する2つの固定ビーコン間で n を求めます。