イントロダクション
これまでLoRaによるIoT、LoRaWANによるIoTとご紹介してきました。
そして今、会社では「LoRaって実際どれくらい飛ぶの?」というのが一つの話題になっています。
「LoRaにGPS付けて歩き回ればいいんじゃない?」
ということで、LoRaとGPSをくっつけて、歩いた結果をGoogle Earthでプロットしてみるということを行ったので、ご紹介します。
使用するものは次になります。
全体像
- 弊社のLoRa IoT スターターキット(Dragino社製)
- Dragino LG01-JP:LoRaゲートウェイ
- Dragino LoRa mini Dev:LoRaノード
- AE-GYSFDMAXB:GPSセンサー
-
抵抗とダイオード←こちらを購入したら入ってました。
- 抵抗:10kΩ
- ダイオード:1N4148
- AE-XCL101C501BR-G:昇圧コンバータ(3.3V→5Vに変換できる)
- USBバッテリー←1000円くらいで買えます。
使用ソフト
- Arduino IDE(1.6.13)
- Excel
- Google Earth
使用プログラム
- LoRaGPSExample/GPS_check/GPS_check.ino →デバイス(LoRa mini)
- LoRaGPSExample/GPS_check_GW/GPS_check_GW.ino →ゲートウェイLoRa受信(LG01-JP)
- LoRaGPSExample/GPS変換フォーマット_GoogleEarth.xlsx →CSVの変換ツール
- LoRaGPSExample/LoRa実験GoogleEarth.kml →Google Earthで開くファイル
手順
ThingSpeakの設定
https://thingspeak.com/
ThingSpeakにアカウントを作成し、チャネル追加します。
Channel Settingで、フィールド2~フィールド5を有効にします。
(フィールド1は今回は実装しませんが、複数端末でID管理するために使わずに残しています)
すると、チャネルIDと書き込みキー(WriteAPIKey)が得られます。
LoRaゲートウェイのプログラミング
「使用プログラム」のGPS_check_GW.inoを、Arduino IDEで開きます。
チャンネルIDと書き込みキー(WriteAPIKey)を取得したものに書き換えます。
注意)ゲートウェイ側のプログラムで、ThingSpeakのライブラリを使いますが、ThingSpeakのライブラリで、Console使っているので、プログラム上でConsoleを書くとデータがアップされないです。
LoRaMiniとGPSセンサーをつなぐ
LoRa mini Dev | 昇圧コンバータ | GPSセンサー |
---|---|---|
3.3V(3V3) | ce | |
3.3V(3V3) | vbat | |
3.3V(3V3)→抵抗 | 抵抗→RXD | |
A2←ダイオード(カソード) | ダイオード(アノード)←RXD | |
A1 | TXD | |
GND | VSS | GND |
vout | 5V | |
A0 | 1PPS |
デバイスのプログラミング
「使用プログラム」のGPS_check.inoを、Arduino IDEで開きます。
→LoRa mini Devに書き込み
接続確認
ThingSpeakからCSVダウンロード
ThingSpeakにログインして対象のチャネルの画面を開くと、「Data Export」というボタンがあるので、そこからCSV形式で取得できます。
「使用プログラム」のGPS変換フォーマット_GoogleEarth.xlsxの黄色のエリアにCSVを貼り付けると、赤いエリアにGoogle Earthで使用するタグが出力されます。
注意:GPSの高さの精度がそれほど良くなかったので、ツールは高さを強制的に1mにしています。
Google Earthにプロット
「使用プログラム」のLoRa実験GoogleEarth.kmlの57行目に先のツールの赤い列(タイトル行含まず)貼付けて保存します。
LoRa実験GoogleEarth.kmlをダブルクリックするだけで起動できます。
最後に
今回使用したGPSの精度はもしかしたらあまりよくないかもしれませんが、割合簡単に作れたのでLoRaの実地実験にはもってこいかもしれません。
Google Earthで3Dで見た時に計測地点との間にどんな障害物があるのかも分かって、何かと考察しやすかったです。
そして実際に歩いてみると、LoRaの設定やノードとゲートウェイの位置関係でかなり届く範囲の違いがありました。(setupの中でLoRaの設定に関する記述もあります。)
今回の内容はLoRa環境を構築する際の、エリア設計/検証にお役立ていただけるのではないでしょうか。
注意
プログラミングにはArduino IDEを使用しますが、事前にArduino IDEに次の設定が必要です。
- Dragino向けの設定をしておく必要があります。
http://www.ibeacondo.com/download/LG01_LoRa_Gateway_Manual_JP.pdf - 次のライブラリを検索してインクルードしておく必要があります。
- 「LoRa sending data」(LoRaライブラリ)
この記事で使用するソースは、使用するハードに依存している部分が大きいため、他のハードとの組み合わせでどうなるかは分かりません。