802.11ah(WiFi HaLow)が旬ですが、あえてシリアルLPWA無線を試してみた。意外と。。。

802.11ah(WiFi HaLow)については、
「802.11ah(WiFi HaLow)で本当にTCP/IP通信できるの？　その2」( https://qiita.com/Cente_mw/items/0ae0d548d8be600e88f4 )
で「その2」まで書いてきました。

実験も重ねていますので「その3」をお待ちくださいね。

本日は、そんなWiFi HaLowが注目される中、同じ920MHzの周波数を使った長距離向け無線 LPWAのシリアル無線機を使って、長距離を飛ばしてみたいと思い立ちました。

なぜ、あえて「シリアル無線機」なのか？　っという点なのですが、、、
そもそも、WiFi HaLowは無線LAN互換とも言えるTCP/IPのパケットが流れる通信路ですよね。ですから、「ようやくこれで、長距離（数百m～km単位）をWiFiで繋げられる！」と喜んでいる利用者、機器開発者も多いと思います。
ですが、末端までTCP/IPを飛ばせるって事は、末端でTCP/IPを処理しないといけないということでして、つまり（ミドルウェア屋が喜ぶ？）末端にTCP/IPスタックを入れてくださいな！　っということなのです。
 
![画像1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032022/b7afdc68-a1d3-9c71-82bd-77d530de6205.png)
**図1　HaLow環境では末端にTCP/IPが必要**

これ、意外にコスト高（要求するCPU処理能力も、ソフトウェア工数も）になったりしませんかね？そんな人もいるのでは？　っと思うに至り。

つまり、たかが「温度」や「湿度」等の情報（仮ね）をIoTとして伝達したいのに、その無線子機にTCP/IPを搭載したいでしょうか？　SPIやシリアル、GPIOというレガシーなI/Fでセンサー類は繋がりますから、それこそPICやArduinoで子機を作れないか？って考えるかな、と思ったのです。
そこで、無線子機には既存のシリアル無線機で良いんじゃない？同じ920MHzならば同様に飛ぶでしょう？という論理。
ですので、あえて920MHzを使ったLPWAシリアル無線機をArduinoで実装して、無線実験です。
え？（ミドルウェア・プロトコル屋の私がそんなこと言うの？）TCP/IPは要らないの？っと思われるかもしれませんが、大丈夫です。末尾まで読んでいただければ、ちゃんと最後にはTCP/IPになりますので。MQTTでIoTできますので。

採用したシリアル無線機は、双葉電子工業のFEP-01という920MHzの無線機。
![画像6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032022/04d9a9a2-fde0-edd4-e755-38a2a30de24c.png)

https://www.futaba.co.jp/product/industry/industry_module/fep01 

シリアルI/Fのスピードは115.2kbps(懐かしいですね)ですが、無線上は 50kbpsという遅さ。ペイロードは最大128byte（！）というスペックです。上記URLによると、野外見通し距離で1200m飛ぶとあります。

まずは長距離電波試験です。
適当なセンサーが用意できなかったので、PCのシリアルに接続しました。対向もPCのシリアルとしました。
片方の通信機をDMG MORI Digital西棟屋上（地上約14m）に固定し、もう一方の通信機を車の上（地上約1.5m）に設置して移動します。屋上から車を目視できる状態です。
![画像5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032022/db52675b-0521-b922-0544-e465adb6e6a5.png)



| 番号 | 通信距離 | 電波強度 |
|:-:|:-:|:-:|
| 1 | 240m | -68dBm |
| 2 | 1120m | -97dBm |

実際に1200m近く距離を取り通信をしました。電波強度は驚異の-100dBmあたりまで通信できています。
速度が遅い＝安定性が高い　という仮説が正しいようです。超安定しています。
普通のWiFiとかだと -80dBmで怪しくなるのでは？っという予想からすると、相当に飛ぶようです。この無線機はダイバーシティ送受信対応なので、ある程度の反射波にも対応できる（偏波面の変化に対応できる）様です。
この無線機だと相手はシリアルなので、CPUの選定からセンサー類も設計しやすいでしょう。別記事で、Arduinoでこの無線機をシリアルから制御するサンプルを公開しようと思います。ちょっとお待ちくださいね。

さて、シリアル対向で1200m飛ぶ事（ただし50kbps）は確認できたので、次にMQTTパブリッシャーをどうやって実現するかを考えましょう。Serial→Ethernet変換器？　ん？　EthernetSerialParallelTranslator？　ん？

<font color="#008D82">**ESPT**</font>じゃん！

Centeハードウェアシリーズ – 組込み開発技術ブランド「Cente」

https://www.cente.jp/product/cente-hardware/

ほら、ここで本業のミドルウェア屋と繋がるんです。
シリアル-Ethernet変換する基板（GW：ゲートウェイと呼びましょう）でシリアルプロトコルからイーサネットプロトコル（TCP/IP）に変換して、更にMQTTcを搭載すればよいのです！

https://www.cente.jp/product/cente-middle/tcpip/app/mqttc/ 

え、それじゃWiFi HaLowで子機にTCP/IPを搭載した機器を開発するのと何も違わないのでは？

![画像2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032022/3c5f9d38-2c29-9ea0-6187-ba17aafb89eb.png)
**図2　FEP-01環境ではGatewayにTCP/IP、MQTTが必要**

そうね。先のWiFi HaLowの時と、アクセスポイントとGWが変わっただけで、GWを作らなきゃならないだけ面倒になったのでは？　っと思いますよね。

でもね。こういった無線構成で子機を作る場合、子機は1個じゃなく、n個を接続するってことを当然考えますよね？そうするとね、子機をいかに安価につくるか？がシステム全体のコストに影響してくると考えるわけです。
 
![画像3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032022/49020603-1f62-382e-a5d7-96c12a7add2c.png)
**図3　HaLow環境では全ての子機にTCP/IP、MQTTが必要**

![画像4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032022/255e6465-4509-f395-0e6f-d4c86dec1448.png)
**図4　FEP-01環境ではGateway1台にTCP/IP、MQTTがあればよい**

端末を安価なシリアルだけコントロールできるPICで構成することにより、
　　・価格低減
　　・回路の簡略化による安定性増大
　　・消費電力の低減
が実現するかも。

じゃ、この図でいうGWはどうするの？作るの？っという点。実は既に双葉電子工業さんの製品としては存在しているんですね。
![画像7.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032022/adc72b39-3003-e2ae-d9a3-50c54148c7da.jpeg)

https://www.futaba.co.jp/product/industry/gateway

ただし、この製品にはMQTTは入っていません。有線LANからTCP/IPにて出力するか、SORACOMに接続する機能です。

さて、このFEP-06を改造してMQTT入れてみたくなりますよね。。。　ぐぬぬ。　
この続きは次の記事で。


Cente：
https://www.cente.jp/

Centeに関するお問合せはこちら：
https://www.cente.jp/otoiawase/