LoRa®とLoRaWAN®の基本と、Arduinoハードウェア・ソフトウェアでの使い方を学びます。
AUTHOR: José Bagur、Taddy Chung、LAST REVISION: 2022/12/08 18:58
モノのインターネット(IoT)は、無線ネットワークを使ってインターネットに接続したモノの集合と言われ、接続したこれらのモノは、環境から情報を収集・交換することを目的としています。IoTは、物理の世界とデジタルの世界を接続します。接続するこどで、大量のデータを産み出し、リソースの最適化や既存システムの効率の改善などに使われます。
多くの既存のIoTデバイスは、Wi-Fi®やBluetooth®、ZigBee、Z-Wave®などの、短距離の無線ネットワークを使ってインターネットに接続されています。2Gや3G、4Gといったネットワークを使ったセルラー接続でも、IoTデバイスをインターネットに接続しています。それでも、これらの短距離から中距離の無線ネットワークがいつもIoTデバイスに適しているとは限りません。というのも、これらのネットワークは消費電力やバッテリー寿命が重要な問題でないアプリケーション向けに開発されているからです。IoTデバイスは、通常、低消費電力で、少ないデータ量を送受信します。
Low-Power Wide Area Networks
Low-Power Wide Area Networks(LPWAN)は、無線ネットワーク技術の集合で、低帯域幅と低消費電力(通常はバッテリー駆動)デバイスという、IoTデバイスの特定の要件に適しています。この種のネットワークは、低消費電力で、長距離・低ビットレートです。LPWANは、10バイトから1kBのデータパケットサイズで、上りの速度は最大200kbpsです。長距離接続は、ネットワーク技術により、2から1000kmまでと様々です。ほとんどのLPWAN技術は、スター型トポロジーを採用します。つまり、各デバイスは中央のアクセスポイントに直接接続します。
LPWANの重要なユースケースには、以下のようなアプリケーションが含まれます。
- スマートシティ: スマートパーキング、インテリジェントストリートライト
- サプライチェーンマネジメント: 資産追跡、状態監視
- スマートグリッド: 電力・水道・ガスメータリング
- スマート農業: 土壌状態監視、動物追跡、ジオフェンシング
LPWAN技術は、免許された周波数帯または免許不要の周波数帯や、プロプライエタリ技術やオープン仕様を利用します。LoRa®とそのメディアアクセス制御(MAC)層プロトコル実装であるLoRaWAN®は、現在、IoTデバイスやサービスのサポートを最も牽引するLPWANの一つです。
LoRa®とLoRaWAN®
LoRa®とLoRaWAN®とは何か?
LoRa®は、チャープ・スペクトラム拡散(Chirp Spread Spectrum: CSS)技術に基づく、無線変調方式です。CSSでは、広帯域の線形周波数変調されたチャープパルスを使い、情報をエンコードします。LoRa®は、免許不要のサブギガヘルツの産業科学医療(ISM: Industrial, Scientific and Medical: ISM)バンドである、433 MHz帯と868 MHz帯、915 MHz帯を使います。ISMバンドは、産業科学医療用に、国際的に予約されています。
LoRa®に基づき、LoRaWAN®(LoRa for Wide Area Networks)仕様は、LoRa®物理層にMAC層を塚することで、インターネットで利用できるように拡張しています。LoRaWAN®仕様は、送受信タイミングなど、デバイスによるLoRaの使用法を定義したソフトウェア層です。LoRaWAN仕様はオープンソースで、2015年からLoRa Alliance®により維持管理されています。
LoRaWAN®ネットワークアーキテクチャ
典型的なLoRaWAN®ネットワークアーキテクチャは以下の必須要素を含みます: エンドデバイス(通常はセンサー)、基地局もしくはゲートウェイ(Long Range Relay: LRR)、ネットワークサーバー(Long Rnage Controller: LRC)、ネットワークのプロビジョニングと管理のためのオペレーションサポートシステム(Operation Support System: OSS)。
上記の図で、ネットワークサーバとゲートウェイには、基本的な違いがあることに注意してください。ネットワークサーバは、LoRaWAN®ネットワークの仮想MAC層を制御します。一方、ゲートウェイは、LPWANの導入とプロビジョニングを容易にするために、ネットワークサーバに事前に統合されたデバイスです。LoRaWAN®ネットワークサーバとゲートウェイのアクセスは、公開することも非公開にすることもできます。
LoRaWAN®ネットワークは、通常、スター型トポロジで配備されます。つまり、ゲートウェイはエンドデバイスとネットワークサーバ間のデータを管理します。ゲートウェイは、インターネット経由で中央のネットワークサーバに接続します。一方、エンドデバイスは、ゲートウェイとのデータの送受信にLoRa®を使います。エンドデバイスは、一つのゲートウェイにだけ接続する必要があるというわけではなく、範囲内の全てのゲートウェイに情報をブロードキャストします。LoRaWAN®ネットワーク内での通信は、もともと双方向ですが、エンドデバイスから中央ネットワークサーバへの上り通信のほうがより多くなると予想されます。
スター型ネットワークには、他のネットワークトポロジと比較して、以下のような利点があります。
- 事前計画なしに、どこへでもいつでも、ゲートウェイをネットワークに追加できます。
- アップリンク時、複数のゲートウェイが同一のデータを受信するので、メッセージ配信の信頼性が高くなります。
データレート
LoRaWAN®ネットワークでのエンドデバイスとゲートウェイ間の通信は、異なる周波数チャネルとデータレートにわたります(異なるデータレートを使った通信は互いに干渉しません)。
各エンドデバイスのバッテリー寿命とネットワークを通じた全体の利用可能な容量を最大化するために、LoRaWAN®は、データレートと通信時間、消費電力の最適化のために、ADR(Adaptive Data Rate)機構を使います。ADRは、エンドデバイスの以下の通信パラメータを制御します。
- 拡散率(Spreading Factor): データ転送速度。拡散率が低いと、データ転送レートは上がる。
- 帯域幅: ネットワークで2地点間で送信できるデータ量。
- 送信電力: エンドデバイスの送信機が出力に生成するエネルギー。
以下の表は、125kHzの帯域幅での、拡散率とデータレート、通信時間を比較したものです(範囲は参考値であり、伝送状態により異なります)。
拡散率 | データレート | 通信距離 | 通信時間 |
---|---|---|---|
SF7 | 5470 bps | 2 km | 56 ms |
SF8 | 3125 bps | 4 km | 100 ms |
SF9 | 1760 bps | 6 km | 200 ms |
SF10 | 980 bps | 8 km | 370 ms |
SF11 | 440 bps | 11 km | 40 ms |
SF12 | 290 bps | 14 km | 1400 ms |
エンドデバイスは、以下の規制を満たしている限り、いつでも利用可能な任意のチャネルで、任意の利用可能なデータレートを使い、送信することができます。
- エンドデバイスは、各送信時に、疑似乱数を用いてチャネルを変更すること。変更の結果生じる周波数の多様性が、干渉に対してより強固なシステムとなります。
また、固有の規制も満たす必要があります。例えば、
- EU868バンドでは、使用するサブバンドと地域規制に関して、最大送信デューティサイクル(エンドデバイスでは1%)を遵守する必要があります。
- US915バンドでは、使用するサブバンドと地域規制に関して、最大送信期間もしくは滞留時間(400ms)を遵守する必要があります。
地域別パラーメータ
LoRaWAN®地域別パラメータ仕様は、LoRaWAN®ネットワーク層仕様に付随するものです。LoRaWAN®ネットワーク層仕様は、準拠したエンドデバイス(センサーやアクチュエーター、トラッカーなど)と、準拠したネットワークコア間の無線仕様を定義するものです。LoRaWAN®地域別パラメータは、免許不要で利用できる無線周波数帯でのスペクトル利用に対して世界中で強制されている様々な規制に、LoRaWAN®ネットワーク層仕様が適合するための仕様を定義します。
LoRaWAN®地域別パラメータ仕様は、様々な無線周波数変調技術を用いた、LoRaWAN®リンク層無線の適合運用のために必要な、物理層の設定も文書化しています。
LoRaWAN®地域別パラメータ仕様は全てを規定するわけではありません。共通の支配項を規定して地域をカバーしているだけです。例えば、アジア向けのLoRaWAN®地域別パラメータは、チャネルの共通項を規定しているだけで、アジア各国で様々な規定のばらつきがあります。さらに、例えばTTNといった各ネットワークサーバは、送信チャネルなどの追加パラメータを自由に選択することができます。
詳細情報が必要であれば、ここのRP002-1.0.2 LoRaWAN®地域別パラメータのドキュメントを参照してください。LoRaWAN®地域別パラメータとArduinoに関する詳細なチュートリアルは、ここにあります。
クラス
LoRaWAN®仕様には、デバイスとアプリケーション間の通信プロファイルには、クラスA、クラスB、クラスCの3種類あります。各クラスは異なるアプリケーション要件に対応し、それぞれの目的に最適化された要件があります。3つのクラスの主要な違いは、遅延と消費電力です。エンドデバイスは必要な時にいつでもデータを送信できますが、クラスには、いつ受信できるかが規定されています。
クラスA: “Aloha”
クラスAデバイスは、双方向通信プロファイルを実装します。このクラスでは、エンドデバイスが送信した後、RX1、RX2と通常呼ばれる、2回の受信ウインドウが続きます。サーバが、RX1かRX2ウインドウの間に応答しなければ、次の受信機会は、次の送信後です。クラスAのデバイスは、バッテリー駆動で多くの時間スリープ状態のことが多いので、消費電力は最小限で、データ送信間は長く、受信の遅延は大きくなります。
クラスB: “Beaconing"クラス
クラスBデバイスは、クラスAデバイスの拡張で、計画的な受信ウインドウを追加したものです。このため、固定した時間間隔で受信ウインドウを開き定期的に受信するデバイスを模擬します。このクラスは消費電力を最小限に抑えつつ、低遅延の受信が必要な時に実装されるべきです。
クラスC: Contiunous Reception
クラスC通信プロファイルは、充分な電力が利用可能なアプリケーションで利用されます。このため、受信ウインドウを最小化する必要はありません。これは、多くのアクチュエータ(スマートプラグ、街灯、電力メーターなど)に当てはまります。クラスCデバイスは、メッセージを送信しない限り、常にメッセージを待ちます。この振舞いにより、サーバとデバイス間の遅延は最低となります。
認証とセキュリティ
認証とセキュリティは、LoRaWAN®ネットワークでも重要です。全てのLoRaWAN®ネットワークには、AES128暗号化方式に基づく、基本となる認証とセキュリティのフレームワークがあります。認証と暗号化を単一のキーに依存する他のLPWANと比較して、LoRaWAN®フレームワークは、それらが分離されています。認証と完全性制御にはネットワークセッションキー(NwkSKey)を使い、データ暗号化にはアプリケーションセッションキー(AppSKey)を使います。
LoRaWAN®は2つの認証とアクティベーション手段をサポートします。OTAAA(Over-The-Air-Activation)とABP(Activation by Personalization)です。
- OTAA(Over-The-Air-Activation): この手法では、エンドデバイスは特定のネットワーク向けに初期化されません。特定のLoRaWAN®ネットワークにJOINリクエストを送信すると、デバイスアドレスと認証トークンを受信し、セッションキーが導出されます。NwkSKeyとAppSKeyはこの過程で、製造元がエンドデバイスに事前設定したルートAppKeyから導出されます。
- ABP(Activation by Personalization): この手法では、エンドデバイスは特定のLoRaWAN®ネットワークで動作するよう個別化されています。エンドデバイスは、NwkSKeyとAppSKey、32ビットのデバイスネットワークアドレスで、事前設定されています。
Arduino®とLoRa®
Arduino®は、いくつかのボードやアドオン、ライブラリでLoRa®接続を提供しています。
LoRa®接続可能なArduino®ボード
MKR WAN 1300と1310ボードは、実用的で廉価なソリューションを、LoRa®接続と低消費電力が必要なアプリケーションに提供します。MKR WAN 1300と1310ボードは、Microchip®社のSAMD21マイクロコントローラーを基にしています。これらのボードは、LoRa®接続のために、Murata®社のCMCMWX1ZZABZモジュールと、セキュリティ用のATECC508暗号化・認証デバイス、オンボードストレージとして2MBのSPIフラッシュメモリを搭載しています。
PROハードウェアもLoRa®接続できます。Arduino® Portenta H7ボードは、Portenta Vision Shield LoRa®を使えば、LoRa®接続ができます。このアドオンボードは、LoRa®接続用に、Murata®社のCMCMWX1ZZABZモジュールを搭載しています。同じモジュールが、MKR 1310と1310ボードにも搭載されています。
屋外環境でのリモート監視・制御ソリューションに最適化されたArduino® Edge Controlは、MKR WAN 1300か1310ボードを追加することで、無線接続機能を拡張することができます。Edge Controlはどこにでも設置でき、遠隔地でインテリジェントな制御が必要となるスマート農業や他のアプリケーションに最適です。
LoRa®接続用Arduino®ライブラリ
Murata®社のCMCMWX1ZZABZ LoRa®モジュールでは、いくつかのArduinoライブラリが利用できます。それらの中で、Arduinoによって開発されたMKRWANライブラリと、Sandeep Mistry氏によって開発されたArduino LoRaライブラリを推奨します。MKRWANとArduino LoRaライブラリは、LoRa®とLoRaWAN networks®で通信するためのAPIを提供します。
どちらのライブラリも、オンライン・オフラインのArduino IDEで利用できます。オンラインIDEを使う場合は、何もする必要がありません。双方のライブラリは既にインストールされ、すぐに利用することができます。オフラインIDEを使う場合は、ライブラリを手動でインストールする必要があります。ライブラリのインストールは簡単です。「ツール」→「ライブラリを管理」と進み、ArduinoによるMKRWANライブラリやSandeep Mistry氏によるLoRaを検索します。最新版のライブラリをインストールしてください。
例: ネットワークサーバにデータを送受信する
Arduino®ハードウェアとソフトウェアを使い、LoRa®とLoRaWAN®ネットワークと通信するのは簡単です。例を見てみましょう。この例は、MKR WAN 1310ボードとMKRWANライブラリを使い、LoRaWAN®ネットワーク(今回はTTN)にデータを送信します。この例の回路を以下に示します。
TTNにメッセージを送受信する前に、ボードをネットワークに登録する必要があります。このためには、ボードのDevice EUI
を知る必要があります。MKRWANライブラリの、FirstConfiguration
というスケッチ例を実行すれば、ボードのDevice EUI
を取得することができます。Device EUIがわかると、TTNにアカウントを作成して、アプリケーションの追加、アプリケーションの追加、ボードの登録を行うことができます。TTNのこのチュートリアルで過程を説明しています。
TTNにデバイスを登録すると、以下のコードでデータの送受信ができます。
|
|
MKR WANボードとTTN間や、2つのMKR WANボード間でのデータ送信に関するに関する詳細なチュートリアルを参照してください。チュートリアルはここにあります。
参考文献
LoRa®とLoRaWAN®は、とても広範囲ですが、学習するには楽しいトピックです。この技術をさらに学びたければ、以下のリンクを参照してください。
- The LoRa Alliance® Resource Hub. LoRa Alliance®による、LoRaWAN®の技術文書とホワイトペーパーです。
- LoRa Developer Portal from Semtech. Semtech社による仕様に加えて、技術文書とユーザガイドがあります。
- The Things Network documentation. LoRaWAN®とThe Things Networkの全てを学ぶことができます。
- The Things Academy online course in Udemy. LoRa®とLoRaWAN®の全てについて学習でき、自分のLPWANアプリケーションの開発を開始するための、無料のオンラインコースです。
オリジナルのページ
https://docs.arduino.cc/learn/communication/lorawan-101
最終更新日
March 2, 2023