Ⅰ. LoRa通信の基礎知識

 まず、LoRa通信とはどのようなものか、どんな特徴がありどのようなネットワークを構成できるかなど、基本的なことを見ておきましょう。続いて、このシリーズで使用するLoRaモジュールについて説明し、通信ソフトを開発するためのライブラリをインストールします。
 そして、次回からの実験で必要となる機材を準備して、ブレッドボード上に2組の送受信装置を組み立てます。


1.LoRa通信とは

 LoRaは「Long Range」の略で、少ない消費電力で広いエリアをカバーする、いわゆる LPWA(Low Power Wide Area)通信のひとつの方式です。
 基本的な技術は、米国のセムテック(Semtech)社が開発した無線の周波数変調方式を使用しています。この技術はLoRa変調方式と呼ばれ、スペクトラム拡散とチャープ変調を組み合わせた方式です。スペクトラム拡散変調技術は、通信信号をより広い帯域に拡散して通信する技術とされていますが、内容の詳細を筆者は十分に理解できてないので説明は割愛します。後述の「LoRaの特徴」でみるように、この変調技術により、消費電力を最小限に抑えながら、少量データの長距離通信を行うことが可能になっています。
 LoRa通信の主な特徴は次のとおりです。

●使用する周波数

 LoRaで使用できる周波数は国によって規定されています。
  ・ヨーロッパ用  868 MHz
  ・北米向け        915 MHz
  ・アジア向け     433 MHz
  ・日 本             920 MHz帯

●LoRa通信の特徴
 ①消費電力が少ない

 LoRa変調方式であることに加え、比較的電力を多く使用する送信は、LoRaモジュールが必要とする時だけ起動されるので消費電力が抑制されます。

 ②長距離通信が可能

 使用する周波数が Bluetooth 2.40 GHz、Wi-Fi 2.4/5 GHzに比べて 920 MHzと低い(波長が長い)ことから、障害物に対する電波の回り込みがよい。環境にもよりますが、数km(最大では10km超まで)の長距離通信が可能です。

 ③低コストで運用できる

 通信費が不要です。

 ④誰でも使用できる

 特定小電力無線局であり免許や届け出は不要です。

 ⑤低データレート

 伝送速度は 250bps~50kbps程度と遅いです。しかし、ノイズ耐性が強いことからセンサーデータのような小容量伝送に適しています。

2.LoRaとLoRaWAN

 先に見たように、LoRa通信は低消費電力で長距離通信が可能な無線通信規格です。一方、LoRaWANは LoRa変調方式を採用した無線ネットワークの規格です。LoRaWANのネットワーク・アーキテクチャは図のようになっています。


○エンドデバイス(End Device)

 LoRa通信システムのデータ発生源に設置する端末装置です。センサーを利用して温度・湿度・位置情報などを収集し、LoRaを介してゲートウェイに送信します。

○ゲートウェイ(Gateway)

 LoRa通信システムの中継機としての機能をもちます。多くの場合、複数のエンドデバイスからの信号を受信し、インターネット経由でネットワークサーバーへ転送します。エンドデバイスからの信号を同時処理し、インターネットプロトコルへの変換機能をもっています。

○ネットワークサーバー(LoRaWAN Network Server)

 LoRa通信システムの拠点に位置し、受信データを管理して必要な処理を行ったり、アプリケーションサーバーなどへの転送を担います。


 この LoRaおよびLoRaWANは、非営利団体「LoRa Alliance」が普及活動を行っており、世界中から幅広いジャンルのIoT関連企業が加盟しています。なお、LoRaの通信プロトコルとシステムアーキテクチャの定義は、国際電気通信連合 (ITU) によって、モノのインターネット (IoT) の国際標準として承認されています。


●LoRaWANネットワークの構成

 LoRaWANのネットワークはスター型のトポロジーで構成されます。各エンドデバイスはゲートウェイを経由してネットワークサーバーと通信します。エンドデバイス同士が直接交信することはできません。
 このようにして、LoRaWANは世界的な規模でのデータ通信を行うことが可能になっています。



●ネットワーク運用形態

 LoRaWANのネットワークの運用形態はさらに次の2種類に大別されます。
  ・プライベートネットワーク
  ・パブリックネットワーク
 パブリックネットワークは、通信ベンダーやコミュニティなどで運用されるもので、多数のユーザーが対象になります。各自がゲートウェイを設置してネットワークを共有することにより、広い範囲と長距離でのメッセージ送信をするものです。パブリックLoRaWANを利用する場合は、次のものが必要になります。
  ・LoRaデバイスや共有ゲートウェイの購入
  ・インターネット接続
  ・エンドデバイス登録のためのサービスプロバイダーへの加入
 パブリックネットワークでは、事前共有キー(PSK:Pre Shared Key)による暗号化と正当性の確認を行うなどのセキュリティ対策がとられています。
 一方、プライベートネットワークは、自身でゲートウェイとネットワークサーバーを設置して、私的なネットワークを構築するものです。閉じたネットワークであることから、必要な機能のみに絞り込んだセキュアーで低コストのシステム構築が可能です。
 今回の実験では、実験の自由度が高くエンドデバイスなどを簡単に製作できることから、プライベートネットワークを想定して進めることにします。


●LoRaWANの利用分野

 現在では、次のような幅広い分野での活用が進んでいます。
  ・環境監視センサを使った防災システム
  ・環境モニタリングと農業のスマート化(スマート農業)
  ・生活インフラのスマート化(スマートメーター)
  ・住居や施設のスマート化(スマートホーム・スマートロックなど)
  ・医療機器の遠隔モニタリング
  ・太陽光発電施設のスマート化  など

3.LoRaモジュールの選定

 LoRaモジュールは、マルツオンラインから案内をいただいた「LoRa通信モジュール評価ボード(E220-900T22S搭載)税込 1,980円/個」と「LoRa用アンテナ(TX915-JKS-20)税込715円/本」を使用します。どちらも秋月電子やスイッチサイエンスでも入手できます。

 この評価ボードは、Semtech社製の LoRaチップ「LLCC68」を採用したモジュールをボードに溶接し、アンテナ用同軸コネクタ(SMAコネクタ)や端子を備えています。
 ここで注意しなくてはならないのは、このモジュールはPrivate LoRa通信用であることです。LoRa変調を使用してデジタル無線通信をする点では、LoRaWANや他の Private LoRa通信モジュールと同じですが、変調データを作成する手順やデータエンコード、暗号方式などが異なっているので、それらと相互通信することはできません。

●スペック
  ・RFモジュール: LoRa通信モジュール(E220-900T22S(JP))
  ・周波数: 920.6MHz ~ 928.0MHz
  ・変調方式: LoRaスペクトラム拡散方式
  ・帯域幅: 125kHz ~ 500kHz
  ・伝送プロトコル: Private LoRa 独自方式(宛先指定、ブロードキャスト, WoR対応 *1)
  ・ペイロードサイズ: 最大200byte
  ・伝送速度: 1.7kbps ~ 62.5kbps *2
  ・送信出力: 13dBm 20mW以下
  ・受信感度: -129dbm
  ・消費電流(3.3V給電時): 送信時: 43mA 受信時: 8.2mA スリープ時: 2.5μA WoR受信時:60~330μA
  ・インターフェイス: UART
  ・動作電圧(上限は定格): 3.1~5.5V(Vcc給電時)、2.9~3.6V(Vdd給電時)
  ・動作温度: -45℃ ~ +85℃
  ・外形寸法(重さ): 16mm x 26mm x 3mm (約2g)
  *1 WoR(Wake on Radio)は、送信時プリアンブルを付与することで受信待機消費電流を大幅に削減できる技術。
  *2 伝送ビットレートは瞬間値。連続送信時の平均ビットレートは、電波法の制約からこの半分以下になります。

●モジュールの内部構造

 E220-900T22S(JP)は送信と受信の兼用モジュールで、用途は設計者の意図によって振る舞いや特性を決めることができます。


4.LoRa通信ライブラリ

 LoRa通信ライブラリはいくつか公開されていますが、ここでは、LoRa通信モジュール開発元のクリアリンクテクノロジー社のものを使用します。

●LoRa通信ライブラリのインストール

1) まずここをクリックして「ダウンロード・サポート」ページから「ESP32・Arduinoライブラリ」をダウンロード
 します。
2) ZIPファイル(ここでは esp32_e220900t22s_jp_lib_v1.6_20240906.zip)がダウンロードされます。
3) 次に、ライブラリを手動でインストールします。
 ・Arduino IDEを起動して [スケッチ]-[ライブラリをインクルード]-[ZIP形式のライブラリをインストール]
  を開きます。

 ・追加するライブラリフォルダー(ここでは esp32_e220900t22s_jp_lib_v1.6_20240906.zip)を選択して
  [開く]ボタンをクリックします。

 ・しばらくするとインストールの完了が通知されます。

 ・インストール結果の一部を修正したいので、結果を確認しておきましょう。
  筆者は [ファイル]-[基本設定]で「スケッチブックの場所」を「~\Documents\Arduino\LoRa」としているので
  このようになっています。特に変更してなければ次の位置にインストールされます。
      C:\Users\%USER_NAME%\Documents\Arduino\libraries

4) ESP32_E220-900T22S_JP__LoRa_libraryを開いて、さらに配下の srcフォルダーを開きます。
 このライブラリ内の関数 receiveFrameが、他の関数名の命名規則と異なっているので修正します。
 次の2つのファイルをテキストエディタで開いて、それぞれ下記のように関数名の先頭を大文字に変更してください。
  ・esp32_e220900t22s_jp_lib.cpp
    141行目 int CLoRa::receiveFrame( ・・・・
            ↓
          int CLoRa::ReceiveFrame( ・・・・
  ・esp32_e220900t22s_jp_lib.h
     75行目 int receiveFrame( ・・・・
            ↓
          int ReceiveFrame( ・・・・

※以上でインストールは完了ですが、esp32_e220900t22s_jp_lib.hの位置をメモしておいてください。
 このファイルは、LoRaモジュールを ESP32と配線した際に、GPIOとの関係を指定するために修正することに
 なります。


 LoRaモジュールの通信機能は、ライブラリの関数を利用することで簡潔に制御することができます。これらについては、次回で詳しく説明します。

5.実験準備(機材と配線)

 LoRaモジュールとマイコン(MCU)の接続について、クリアリンクテクノロジー社のテクニカルデータシートには次のような結線図が示されています。


 図右の LoRaモジュールの7つの端子はそれぞれ次のような機能をもっています。
  M0:  M1ピンとセットで4つの動作モードを決定する
  M1:  M0ピンとセットで4つの動作モードを決定する
  RXD:UART入力。 外部 TXDに接続する
  TXD:UART出力。 外部 RXDに接続する
  AUX:モジュールの動作状態を示す
  VCC:電源供給端子。 3.3~5.5V DCを供給する
  GND:グランド
 通信に関連する機能の詳細は次章にゆずり、さっそく LoRa通信機2セットを組み立てることにしましょう。

●必要なパーツ類

 ・ESP32開発ボード(ここではDOIT ESP32 DEVKIT V1)30ピン2台
 ・LoRa通信モジュール評価ボード(E220-900T22S(JP))2台
 ・LoRa用アンテナ(TX915-JKS-20)2本
 ・電解コンデンサー10μF 50V2本必要に応じて
 ・ブレッドボード6穴版 EIC-39012枚
 ・配線類(ジャンパーワイヤなど)少々

●ESP32のピンレイアウト

 念のために、ESP32(DOIT ESP32 DEVKIT)のピンレイアウトを掲げておきます。使用するピンは下記のとおりです。ESP32開発ボードはいくつも種類があるので、該当するピンを割り当ててください。
No.Name Function
1EN
8GPIO-25
9GPIO-26
10GPIO-27
14GND
15VIN 5V
21GPIO-16 UART2 RX
22GPIO-17 UART2 TX


●LoRa送受信機の配線

 送受信機を2セット作成します。以下がその配線図です。LoRaモジュールの RXDと TXDは、それぞれ ESP32の UART2 TXと UART2 RXにクロス接続します。
 なお、電解コンデンサーはコンパイル時にボタン操作なしで自動書き込みさせるためのものです。

 配線はとても簡単ですが、参考までに写真を掲げておきます。


 次回は E220-900T22S(JP)の通信機能を少し深掘りし、ライブラリの使い方を解説します。そして、2台の LoRa送受信機に送信機能と受信機能を組み込んで LoRa通信を確かめます。お楽しみに!