はじめに
話題は先行しているもののLPWAは使いにくいと感じていた。 wifiのように自由にテストできる環境がないことがその理由だ。 誰でも無料で使える周波数だから試してみようと思ってもSigfoxやLoRaWANの事業者のサービスを使う必要がある。 sigfoxは各国で一社だけがサービス提供できる独占体系だし、全国でサービス提供されていても自分にとって使いたいのは数キロメートルだけで十分なのだ。この課題を解決するためにMQTT-SNにLPWAを追加して。 上手く通信できることが確認できたので記事を書いてみた。
LoRaを使ったMQTT-SNゲートウェイ
ゲートウェイには全二重通信が必要だがLoRaは半二重通信なので上りCHと下りCHを分けてそれぞれにLoRaデバイスを用意することにした。
LoRa物理層上にのせるネットワーク層用としてLoRaLinkと名付けたプロトコルを作った。 このプロトコルはZigBeeと同様にPanIDとデバイスアドレスでデバイスを識別する。PanID毎に暗号化キーを共有することでデータを保護している。 データ改ざん防止用としてLoRaWAN同様のMICを採用している。 また、PanID毎にLoRaのsyncwordを変えることで他のPanの通信を受信しないようにした。
使用したデバイス
デバイスは村田製作所のCMWX1ZZABZをゲートウェイの送受信とクライアント用に使用している。 このデバイスはSTM32L082 mcuとSEMTECHのSX1276を使用したもので技適が取得されている。
このデバイスの開発ボードがSTマイクロから販売されている。(型式 B-L072Z-LRWAN1)
今回はこのボートの他に、同じデバイスを使って省スペースで省電力になるように設計したモジュールLoRaEzでも試した。
開発したソフトウェア
1. ゲートウェイ
MQTT-SNゲートウェイはpahoのゲートウェイを使用。 pahoのMQTT-SN用のgithubにexperimentブランチを作ってLoRaLink用のセンサーネットワーククラスを追加したゲートウェイを用意した。 https://github.com/eclipse/paho.mqtt-sn.embedded-c/tree/experiment
2. クライアントデバイス
一般的なLPWAのデバイスは通信と制御用にMCUを2つ使用するが、クライアントデバイス用のファームウェアにはクライアント用のアプリケーションフレームワークも組み込まれている。CMWX1ZZABZだけでコスト的にも省電力的にも優れたセンサーデバイスを作ることが出来る。
ゲートウェイとクライアントデバイスのファームウェア用のSDKもgithubで公開している。
https://github.com/ty4tw/LoRaMQTT-SN
今後ファームウェアの使い方などについて記事を追加していく予定です。