LoRaにGPSを付けて、会社の周りを歩いてみた（Google Earthで位置情報をプロットする）

# イントロダクション
これまで[LoRaによるIoT](http://qiita.com/openwave-co-jp/items/fc4695f6de36fc9cd398)、[LoRaWANによるIoT](http://qiita.com/openwave-co-jp/items/7edb3661ab5703e38e7c)とご紹介してきました。

そして今、会社では「LoRaって実際どれくらい飛ぶの？」というのが一つの話題になっています。

「LoRaにGPS付けて歩き回ればいいんじゃない？」

ということで、LoRaとGPSをくっつけて、歩いた結果をGoogle Earthでプロットしてみるということを行ったので、ご紹介します。

使用するものは次になります。

- [弊社](http://www.openwave.co.jp/)の[LoRa IoT スターターキット](http://www.openwave.co.jp/lorawan/)
- ThingSpeak
- [GPS受信機(AE-GYSFDMAXB)](http://akizukidenshi.com/catalog/g/gK-09991/)
- [昇圧コンバータ(AE-XCL101C501BR-G)](http://akizukidenshi.com/catalog/g/gM-08619/)
- [抵抗とダイオード](http://amzn.to/2qy2Oc7)


# 全体像
![全体像_GPS.PNG](https://qiita-image-store.s3.amazonaws.com/0/169302/b3628d50-fef3-f1e6-49c6-359b26579cbc.png)

- 弊社のLoRa IoT スターターキット（Dragino社製）
    - Dragino LG01-JP：LoRaゲートウェイ
    - Dragino LoRa mini Dev：LoRaノード
- AE-GYSFDMAXB：GPSセンサー
- [抵抗とダイオード](http://amzn.to/2qy2Oc7)←こちらを購入したら入ってました。
    - 抵抗：10kΩ
    - ダイオード：1N4148
- AE-XCL101C501BR-G：昇圧コンバータ（3.3V→5Vに変換できる）
- [USBバッテリー](http://amzn.to/2qy8Wky)←1000円くらいで買えます。

## 使用ソフト
- Arduino IDE(1.6.13)
- Excel
- Google Earth

## 使用プログラム
https://github.com/openwave-co-jp/LoRaGPSExample

- 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）を取得したものに書き換えます。

![LG01-JP.PNG](https://qiita-image-store.s3.amazonaws.com/0/169302/2ca560bf-c767-106d-5078-1b8a3fe6e99e.png)
注意）ゲートウェイ側のプログラムで、ThingSpeakのライブラリを使いますが、ThingSpeakのライブラリで、Console使っているので、プログラム上でConsoleを書くとデータがアップされないです。

## LoRaMiniとGPSセンサーをつなぐ
![IMG_20170519_120913.jpg](https://qiita-image-store.s3.amazonaws.com/0/169302/57d35d8c-cd3b-ab1b-d5d7-cf1fdc9365d6.jpeg)
![IMG_20170519_121032.jpg](https://qiita-image-store.s3.amazonaws.com/0/169302/c8638248-0329-5891-44a2-b2f2e64d03e5.jpeg)
![GPS_配線.png](https://qiita-image-store.s3.amazonaws.com/0/169302/6dae52c1-1347-86ef-25c0-de94f3c54cba.png)

| 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に書き込み

## 接続確認
![接続確認.PNG](https://qiita-image-store.s3.amazonaws.com/0/169302/938b5464-1681-bce3-d858-11c7c09a01c6.png)
→接続が確認できたら歩き回りましょう。

## ThingSpeakからCSVダウンロード

ThingSpeakにログインして対象のチャネルの画面を開くと、「Data Export」というボタンがあるので、そこからCSV形式で取得できます。
「使用プログラム」のGPS変換フォーマット_GoogleEarth.xlsxの黄色のエリアにCSVを貼り付けると、赤いエリアにGoogle Earthで使用するタグが出力されます。
![緯度経度変換.png](https://qiita-image-store.s3.amazonaws.com/0/169302/8aca00ff-6e4d-dc01-b515-516cb4fa8336.png)

注意：GPSの高さの精度がそれほど良くなかったので、ツールは高さを強制的に1mにしています。

## Google Earthにプロット
「使用プログラム」のLoRa実験GoogleEarth.kmlの57行目に先のツールの赤い列（タイトル行含まず）貼付けて保存します。
![KML貼付け.PNG](https://qiita-image-store.s3.amazonaws.com/0/169302/4bcbf21b-d826-ffdd-7177-5ae0fd5fefae.png)

LoRa実験GoogleEarth.kmlをダブルクリックするだけで起動できます。
![GoogleEarth.PNG](https://qiita-image-store.s3.amazonaws.com/0/169302/3d25d45f-2ffb-58c5-5cde-c928a05d8784.png)

# 最後に
今回使用した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ライブラリ)

この記事で使用するソースは、使用するハードに依存している部分が大きいため、他のハードとの組み合わせでどうなるかは分かりません。

[株式会社オープンウェーブ](http://www.openwave.co.jp/)