広域・低電力無線

LoRaWAN

LoRaを使う広域IoTネットワーク規格。

概要

LoRaWAN(Long Range Wide Area Network)は、LoRa変調方式を物理層として使用するMACプロトコル・ネットワークアーキテクチャの規格です。LoRa Allianceによって仕様が策定・管理されており、世界中でIoT向けLPWAネットワークとして広く採用されています。

LoRaWANは単なる通信規格にとどまらず、ネットワークサーバーの機能・セキュリティ(AES-128暗号化)・OTA(Over The Air)アクティベーション・アダプティブデータレートなど、IoTネットワーク運用に必要な機能を包括的に定義しています。スター型のネットワークトポロジーを採用し、デバイス→ゲートウェイ→ネットワークサーバー→アプリケーションサーバーという4層構造でデータを伝送します。

歴史・背景

2015年1月、Semtech・Actility・Cisco・IBM等を中心にLoRa Allianceが設立され、同年6月にLoRaWAN 1.0仕様が公開されました。当時のIoT向け無線規格は独自規格が乱立していたため、業界標準としてLoRaWANが急速に普及しました。

2017年にはLoRaWAN 1.1が公開され、ローミング機能・セキュリティ強化が加えられました。2020年にはLoRaWAN 1.0.4が、2022年にはLoRaWAN 1.0.4とLoRaWAN 1.1の機能を統合した形でのメンテナンスが続いています。

日本では2016年頃からLoRaWANの商用サービスが始まり、現在はソフトバンク(LPWA)・KDDI等が商用サービスを提供。プライベートLoRaWANネットワーク構築事例も急増しています。

技術仕様

ネットワークアーキテクチャ

LoRaWANはスター型トポロジーを採用します:

エンドデバイス群
   │  │  │  (LoRa無線)
   ▼  ▼  ▼
ゲートウェイ(複数配置)
        │  (IPネットワーク)

ネットワークサーバー(NS)


アプリケーションサーバー(AS)

複数のゲートウェイが同一デバイスのパケットを受信し、ネットワークサーバーが重複排除・経路選択を行います(マクロダイバーシティ)。

デバイスクラス

LoRaWANエンドデバイスは3つのクラスに分類されます:

クラス受信タイミング下り遅延消費電力用途例
Class A上り送信後のみ2回受信窓遅い(次回送信まで待つ)最低センサー全般
Class B定期スロット受信(ビーコン同期)中程度スマートメーター
Class C常時受信(送信中以外)最小アクチュエーター・電源供給機器

Class Aが最もよく使われます。上りパケット送信後に1秒後(RX1)と2秒後(RX2)の2つの受信窓が開き、ネットワークサーバーはこのタイミングでのみ下りパケットを送れます。

セキュリティ

LoRaWANはAES-128ベースの二層暗号化を採用:

NwkSKey(ネットワークセッションキー):
  → MACコマンドの暗号化
  → フレーム整合性確認(MIC: Message Integrity Code)

AppSKey(アプリケーションセッションキー):
  → ペイロードデータの暗号化
  → エンドデバイス〜アプリサーバー間のE2E暗号化

これらのキーはデバイスのJOIN時に生成されます。

デバイスアクティベーション

2種類のアクティベーション方法:

OTAA(Over The Air Activation)(推奨):

1. デバイスがJoin Request送信(DevEUI, JoinEUI, AppKey使用)
2. ネットワークサーバーがJoin Acceptを返信
3. セッションキー(NwkSKey, AppSKey)を動的生成
4. 通信開始

ABP(Activation By Personalization):

DevAddr, NwkSKey, AppSKeyを事前に固定書き込み
→ JOIN手順なしで即座に通信開始可能
→ セキュリティ上の理由からOTAA推奨

周波数プラン(日本)

日本(AS923チャンネルプラン)の標準設定:

  • 上り: 923.2MHz, 923.4MHz, 922.2MHz, 922.4MHz, 922.6MHz, 922.8MHz, 923.0MHz, 922.0MHz(8チャンネル)
  • 下り(RX2): 923.2MHz, SF10
  • SF: 7〜12(ADRで自動調整)

動作原理

パケット構造

LoRaWAN PHYPayload(物理フレーム)の構造:

┌──────────────────────────────────────┐
│ MHDR (1byte) │ MACPayload │ MIC (4bytes) │
└──────────────────────────────────────┘

MACPayload:
┌─────────────────────────────────┐
│ FHDR │ FPort (1byte) │ FRMPayload │
└─────────────────────────────────┘

FHDR:
┌──────────────────────────────────────────────────┐
│ DevAddr(4) │ FCtrl(1) │ FCnt(2) │ FOpts(0〜15) │
└──────────────────────────────────────────────────┘

ADR(Adaptive Data Rate)

ネットワークサーバーはデバイスの受信履歴(SNR)を分析し、最適なSFとTx出力を自動調整します:

SNRが高い(近距離・良好な電波環境):
  → SFを下げる(SF12→SF7等)
  → Tx出力を下げる
  → 高速通信・チャンネル容量増大

SNRが低い(遠距離・障害物多い):
  → SFを上げる(SF7→SF12等)
  → Tx出力を上げる
  → 到達性を優先

フレームカウンタ(FCnt)

リプレイ攻撃防止のため、送受信ともにフレームカウンタを管理します。カウンタが期待値より小さいパケットはネットワークサーバーが破棄します。

用途・ユースケース

公共サービス・インフラ

  • 上下水道の遠隔検針・漏水検知
  • ガス・電力スマートメーター
  • 路上の空き駐車スペース管理

スマートビルディング

  • ビル内の温湿度・CO2・照度管理
  • 火災・煙感知センサーネットワーク
  • 入退室・人流カウンティング

農業・環境

  • 畑の土壌水分・気象データ収集
  • 河川・ため池の水位監視
  • 山林の温度・煙センサーによる火災早期検知

物流・資産管理

  • パレット・フォークリフトの位置追跡
  • 冷凍コンテナの温度監視

実装・開発のポイント

LoRaWANモジュール選定

開発を容易にするATコマンド対応モジュールが多数あります:

モジュールメーカー備考
RN2903 / RN2483MicrochipATコマンド対応
CMWX1ZZABZMurataSTM32+SX1276統合
RAK3172RAKwirelessSX1262ベース
E5シリーズSeeedStudioWio-E5, STM32WLベース

STM32WLを使ったLoRaWAN実装例

/* STM32Cube-WL + LoRaWAN MWによる基本実装 */
#include "sys_app.h"
#include "lora_app.h"
#include "stm32_seq.h"

/* アプリペイロード(センサーデータ)*/
static uint8_t AppDataBuffer[LORAWAN_APP_DATA_BUFFER_MAX_SIZE];

static void SendTxData(void) {
    LmHandlerAppData_t AppData = {
        .Buffer     = AppDataBuffer,
        .BufferSize = 0,
        .Port       = LORAWAN_USER_APP_PORT
    };

    // 温度・湿度をペイロードにパック(各16bit固定小数)
    int16_t temp = (int16_t)(get_temperature() * 100);
    uint16_t hum = (uint16_t)(get_humidity() * 10);

    AppDataBuffer[0] = (temp >> 8) & 0xFF;
    AppDataBuffer[1] = temp & 0xFF;
    AppDataBuffer[2] = (hum >> 8) & 0xFF;
    AppDataBuffer[3] = hum & 0xFF;
    AppData.BufferSize = 4;

    // LoRaWAN送信(確認応答なし: LORAMAC_HANDLER_UNCONFIRMED_MSG)
    LmHandlerSend(&AppData, LORAMAC_HANDLER_UNCONFIRMED_MSG, false);
}

ペイロード最適化

LoRaWANは帯域が非常に限られるため、ペイロードを最小化することが重要です:

悪い例(JSON送信):
{"temp":25.3,"hum":60.5,"bat":3.7}
→ 34バイト

良い例(バイナリ符号化):
temp: 2530 → 0x09E2 (2bytes, 100倍)
hum : 605  → 0x025D (2bytes, 10倍)
bat : 370  → 0x0172 (2bytes, 100倍)
→ 合計6バイト(約5.7倍圧縮)

The Things Network(TTN)を使った試作

オープンなLoRaWANコミュニティネットワーク「The Things Network」を使うと、無料でLoRaWAN環境を試すことができます:

  1. TTNアカウント作成(https://www.thethingsnetwork.org/)
  2. アプリケーション作成・デバイス登録(DevEUI, AppKey取得)
  3. LoRaWANモジュールにDevEUI/AppKeyを書き込み
  4. OTAA JOIN
  5. TTNコンソールでデータ確認

他技術との比較

LoRaWANとセルラーIoT(LTE-M/NB-IoT)の比較

比較項目LoRaWANLTE-MNB-IoT
通信速度〜50kbps最大1Mbps最大250kbps
月額費用低(SIM不要)中(SIM必要)中(SIM必要)
プライベートNW不可不可
移動体対応限定的良好不可
OTA更新困難(低速)容易条件次第
カバレッジゲートウェイ設置必要既存インフラ活用既存インフラ活用

LTE-Mは移動体対応・高速通信が必要な用途、NB-IoTは固定設置・超低消費電力用途、LoRaWANはコスト重視・プライベートネットワーク構築というすみ分けが一般的です。

ネットワークサーバーの選択肢

サーバー種別特徴
The Things StackOSS/クラウド最も普及。無料プランあり
ChirpStackOSSオンプレ構築に最適
AWS IoT Core for LoRaWANクラウドAWSエコシステムと統合
Azure IoT Hub(LoRaWAN)クラウドAzureエコシステムと統合

関連用語

参考リンク