LoRaの長距離通信（Long Range）にチャレンジ

#１．背景
LoRaは__Lo__ng __Ra__ngeの略で長距離通信を意味しているそうです．
自作のGateway（GW）を自宅２Fのベランダにを置いていますがどれくらいの距離を飛ばせるのか実験というかチャレンジしています．
何回かの実験を経て６１ｋｍまで飛ばせたので調べたことや実験の概要などをまとめてみます．
【2020/09/30追記】８５．７ｋｍまで飛びましたので経緯を追記しました．
【2020/10/14追記】１１５．０ｋｍまで飛びましたので経緯を追記しました．誤記修正など．

#２．先人の記録
下表は筆者がネットで調べた主な公開されている長距離通信です．これ以外にもあるかも知れません．（ご存じの方はぜひ教えてください．追記したいです）

| 実施者   | 距離   |　条件など   |
|:-----------:|:------------:|:------------:|
| [ハカルプラス様](https://hakaru.jp/hakaru-tech/%E9%80%9A%E4%BF%A1/iot-lpwa/lora%E7%84%A1%E7%B7%9A%E3%80%80%E9%80%9A%E4%BF%A1%E8%B7%9D%E9%9B%A2.html)  | ５．０ｋｍ  |   琵琶湖大橋  |    
| [Ambient様](https://ambidata.io/samples/network/lora/)     | ４ｋｍ      | マンション４F    |    
| [愛媛大学都築様](http://miyabi.ee.ehime-u.ac.jp/~tsuzuki/study/SCOPE-C/2017/SF12greenHouse.pdf)   | １７．８ｋｍ    |  屋上 SF12  |    
| [センスウェイ様](https://www.senseway.net/technical-information/performance/)    | １２３．４ｋｍ    |  富士山5合目 SF10 |    
| [iij斎藤様](https://eng-blog.iij.ad.jp/archives/1188)    | 約５３ｋｍ（筆者が地図で計測した値）    |   展望台   |    
| [Zaragoza大学 様](https://www.thethingsnetwork.org/article/lorawan-distance-world-record)  | ７６６ｋｍ    | 気球！ |

サラゴサ大学の766kmがダントツの世界記録ですね．日本記録はセンスウェイ様の123kmでしょうか．
LoRaの理論的な通信距離は広島市立大学の高橋先生が計算（[*](https://www.soumu.go.jp/main_content/000543714.pdf)）されており、それによれば1622kmですが何もない自由空間での話であり、地球上では地面があるのでそうは行きません．
まず見通しであることが条件になります．地球は丸いので高い方が有利になります．サラゴサ大学では気球に取り付けたEnd Deviceが大西洋上25000mで標高2253mのスキー場のGWとの間で通信できたとのことで下のような図で計算すると最大の見通し距離は約８４７ｋｍになり、見通し範囲内であったことが分かります．
![earth](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/353064/32cf90b3-fb55-cd1c-492d-0e3f1a8cc6c7.png)
図中の等価地球半径８４９０ｋｍというのは大気の影響で電波が屈折しながら地球上を伝搬するために地球の半径を大きくして電波が直進するとした場合に相当する地球の半径だそうです．（電波が地球上を曲がりながら進むとはこれまで知りませんでした．．）

#３．電波の伝搬の性質
物理的な話になりますが電波が伝搬していく特性でいくつか知られていることがあります．
##３．１　電波伝搬特性
電波が平面的に伝わる際には距離の二乗で小さくなっていきます．
実際には地面の反射波との合成になるので距離によって大きくなったり小さくなったりもします．
一例として送信アンテナ高さ１０００ｍ（山の上の想定）、受信アンテナ高さ７ｍ（自分のGWの高さ）、各アンテナゲイン3dBi、送信出力２０ｍWとして計算したものが次の図です．![伝搬.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/353064/7b05de06-bf5c-07a2-73ed-e96476fd0f78.png)

（※このグラフは[サーキットデザイン様のサイトの無線技術計算ツール](https://www.circuitdesign.jp/technical/radio-wave-propagation-characteristics/)を使って計算しました．）
近距離では変動が激しいですが１００ｋｍまでの範囲では約４３ｋｍ以上では落ち込むことはなくなり、－１１０ｄＢｍ前後で徐々に小さくなっていくようです．

##３．２　フレネルゾーン
電波が送受信される際には下図のように空間をフットボール状の形で広がって伝わるそうです．（電磁界だから？でしょうか．）地面より下の部分は障害となって通信に寄与しません．アンテナの高さがないと半分はロスしてしまうことになります．

![フレネル.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/353064/74e03146-f851-00d7-25b8-cab4c2665c35.png)

広がりの大きさはフレネル半径と呼ばれ、計算で求めることができます．
例１：　周波数９２３MHｚ、通信距離１００ｍの場合．
フレネル半径は２．９ｍとなり高さ３ｍあればロスなく伝わります．（上下だけでなく、左右方向も必要ですが）
例２：周波数９２３MHｚ、通信距離１００ｋｍの場合．
フレネル半径は９０．１ｍとなります．
６割確保できればさほどロスが無いそうですがそれでも５４ｍになりますので超巨大なタワーが必要になりますね．
数ｍの高さのアンテナでは半分のロスを見込む必要があります．先のグラフの値が3dB小さくなります．
実際にはさらに屋根など周りの構造物の影響を受けると思えます．

##３．３　ハイトパターン
電波を受信する際に直接波と大地の反射波の合成となるため、高さによって強弱が現れる現象です．
うまく通信できないときはアンテナの高さを変えてみるとよくなるかも知れません．

![ハイトパターン.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/353064/cbc1e39d-b2d0-4a9d-a8b8-6b370179cc81.png)

試しに上述の電波伝搬特性で受信アンテナの高さを１４ｍに変えて計算してみると受信強度が落ち込むヌルポイントが８５ｋｍ付近にも現れました．

#４．LoRaチップの受信性能と課題
SEMTECH社から提供されているLoRa Calculatorで受信感度などの計算をすることができます．
日本の規則仕様でBW=125kHz、CR=4/5とした時の受信感度を次の表に示します．

| 拡散係数 | 受信感度 |
|:--------:|:--------:|
| SF7 | -123dBm |
| SF8 | -126dBm |
| SF9 | -129dBm |
| SF10 | -132dBm |
| SF12 | -137dBm |

拡散係数（SF値）が大きい程感度はよくなりますがデータとして低速になるため送信時間の制限からデータサイズが小さくなります．SF10で送信時間400mSで11byteとなりCayenne形式のGPSデータが送れるぎりぎりになります．
SF12で11byteのGPSデータを送信するには0.93秒必要となり400mSを超えますので日本ではキャリアセンスを5mS以上とる、チャンネルを38ch（923.4MHz）以下に限定するなどの技術的条件を満たす必要があります．

#５．最初は近所で実験
まずは家の近所を車で走り回って試してみました．環境としては水田と住宅が半々くらいの地方です．
１ｋｍ以下でも通信できない地点（地上１ｍ位）がある一方、５．１ｋｍ離れたショッピングセンターの屋上駐車場では通信できていました．なお、条件はSF7で送受ともDragino GPS　HATに付属のアンテナです．
高い所が有利であると実感しました．

#６．近所の山に登る
登るといっても車で９合目か山頂まで車でいくことのできる山ばかりです．
GW側のアンテナはコーリニアアンテナを自作しました．利得は7dBi、ケーブルロス（き電線損失と言うらしい）が2dBくらいありますので送信電力は2dBm下げて11dBmとして運用しました．GWの受信は有利になるはず．
コーリニアアンテナというのは屋外のGatewayの写真でよく見かける形式で外見は数十センチの長さのパイプ状で水平面は無指向性という特性になります．
ED（End Device)のアンテナはDragino GPS HAT基板に付属のものです．

通信実験する山は途中に遮るような高い山がないことを確認する必要がありますが地形断面図というので確認できます．（長距離通信には途中で遮る山を逆に利用する山岳回折という高度な技？があるようですが今回は使いません．）
任意の二点の地形断面図を作成できるサイトはいくつかありますが[Web地形断面図メーカー](http://ktgis.net/service/topoprofile/)というサイトで作成しながら探しました．元の地図がメルカトル図法なので厳密には二点の最短距離という訳でないのですが途中の障害となる山の有無を判断するには問題ないと考えました．

| 場所（高さ） | 距離 | 結果 |
|:--------:|:----:|:--------:|
| 山その１（1377m） | 27.6km | △（２パケットだけ）|
| 山その２（201m） | 23.6km | × |
| 山その３（924m） | 22.1km | ◎|

山その１では山頂で５０パケット位送信しましたが受信できたのは２パケットというのは通信できたと言えるのか微妙なところです．
また、山その１ではアクチベーションはOTAAでしたが受信できたのはJoinRequestだけでセッションを開始できていませんでした．双方向の事前の認証の通信が必要なOTAAは長距離通信には向いていないと考えて以後はABPにしてED→GWの片方向の通信としました．
OTAAが劣るという訳ではありません．都度認証されるので成りすましにくい安全な方法だと思います．

#７．長距離にチャレンジ
長距離を目指す手段として拡散係数をSF10に変更します．9dB有利になります．

| 場所（高さ） | 距離 | 結果 |
|:--------:|:----:|:--------|
| 山その４（701m） | 45.6km | ◎平均-114.8dBm |
| 山その５（1128m）| 61.4km | ◎平均-116.2dBm （二回目） |

山その５の実験では車の移動は片道100km位になり、一日がかりでした．
山その４では一回で通信できましたが山その５の一回目は通信できませんでした．
通信状況の改善を図るべくアンテナをカメラの三脚に樹脂のパイプで取り付けるようにして地上高く設置できるようにしました．これで2m30cmくらいの高さで安定して送信することができるようになりました．

また、場所によって伝搬状況が違うと考え、山頂以外にも展望台など５か所で実験をしました．
（片道１００ｋｍの移動で一日かけて実験しているのでできることはやっておきたいという気持ちもありますが．）
唯一通信できたのは山頂から少し下がった地点にあるパラグライダーの離陸場でした．開けていることや斜面がGWの方向を向いていたのがよかったのかなと思います．9割のパケットが到達していました．
地形断面図は下図のようです．

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/353064/e4a34003-532c-a91b-c083-3068a8d5aa40.png)
（※地理院タイル （標高タイル）を「[Web地形断面図メーカー](http://ktgis.net/service/topoprofile/)」サイトで作成）

#８．さらなる長距離を目指して
次の目標は100km超えです．どの山に遠征？して実験しようか画策中です．
今年はコロナ禍で制約があり難しいかも知れませんが．．．．
実験できたら追記する予定です．

#９．謝辞
調べるにあたり、[サーキットデザイン様の技術情報](https://www.circuitdesign.jp/technical/)を大いに参考にさせていただきました．
地形断面図は[Web地形断面図メーカー](http://ktgis.net/service/topoprofile/)を使って作成しました．

【2020/09/30追記】
#１０．　改良
１００ｋｍ越えをねらってロープウェイで北アルプスに登ってテストしましたが通信できませんでした．
成功していれば１３３ｋｍだったのですがLoRaの世界はそれほど甘くはありませんでした．．．
そこで次の２点の改良を行いました．
・GWのアンテナの高さを１ｍ位高くしました．
・SF12なら通信できるかも知れないと考えてSF10とSF12の両方でテストできるようにしました．
　　具体的には時計を参照してGW側は0-29秒の間はSF10で、30-59秒の間はSF12で待ち受けます．
　　ED側は毎分15秒にSF10で、毎分45秒にSF12でパケットを送信するように各ソフトを改修しました．
※GWによってはMultiSFといって異なる複数のSFの電波を同時に受信できることもできるらしいのですがうちのGWのDragino GPS HAT（SX1276)にはそのような高度な機能はついていない．．．


#１０．１　自己記録更新
手堅く？距離８５．７ｋｍにある山に登ってテストしました．結果としてほとんどのパケットは受信できていました．GWアンテナの高さを高くしたことと山頂の見晴らしが開けていたのがよかったのかなと思います．
山頂付近で場所を移動させて何か所かで送信しましたが場所によってはSF12のみ受信できており、SF10とSF12の違いを確認することができました．ただ、SF10で受信できていない場合にSF12の受信強度(RSSI)が落ちているかというとそうでもなくて謎ですが．．

| 場所（高さ） | 距離 | 結果 |
|:--------:|:----:|:--------|
| 山その６（1739m） | 85.7km | SF10◎平均-113.3dBm |
|   |   | SF12◎平均-112.6dBm |
地形断面図です
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/353064/18594b1d-9f3e-15aa-6e87-aaa9761484c7.png)
（※地理院タイル （標高タイル）を「[Web地形断面図メーカー](http://ktgis.net/service/topoprofile/)」サイトで作成）

【2020/10/14追記】
#１０．２　自己記録更新その２
いよいよ１００ｋｍ越えにチャレンジです．
バスで２７００ｍまで上がってそこから山頂まで徒歩で登ります．
地図で見ると山頂から通信方向に１５ｍ低いサブピークが位置しているおり、障害になることが心配されたので念のため、登山道をサブピークの横まで行ってそこでも送信しました．

| 場所（高さ） | 距離 | 結果 |
|:--------:|:----:|:--------|
| 山その７（3026m） | 115.0km | SF10◎平均-111.3dBm |
|   |   | SF12◎平均-111.1dBm |

山頂（A地点）、サブピーク横（B地点）、山頂の北１５０ｍ（C地点）の３カ所で送信しましたが、いずれもほとんどのパケットは受信できており、山その６より受信信号強度が良いという結果になりました．

[TTN Mapper](http://ttnmapper.org)のAdvanced Mapsで可視化したものをこんな感じということで下に載せます．
上からC地点、A地点、B地点になります．図ではGW側はカットしています．
Signal（信号強度）が-115dBm以下（水色）や-120dBm以下（青色）となっていてGWの値と違っていますが理由は謎です．．
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/353064/0dad29ae-d4b0-d2fb-ef9e-55c1c2d54c41.png)

（※[TTN Mapper](https://ttnmapper.org)サイトで作成）

地形断面図です（サブピークが分かるように横に広げています）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/353064/60b858ef-c252-ec1f-b977-6bfb158665df.png)
（※地理院タイル （標高タイル）を「[Web地形断面図メーカー](http://ktgis.net/service/topoprofile/)」サイトで作成）

次の目標はセンスウェイ様の１２３．４ｋｍを超える通信を行って日本記録樹立！？です．
（オレオレ認証ならぬオレオレ記録ですが．．）
寒くなってきたので来年までおあずけかも知れません．（笑）