技適認定済モジュールLRA1でLoRa通信を行ってみる

LoRaはIoT向けのLPWA(Low Power Wide Area:低消費電力広域)の無線通信の1つとして知られています。免許が不要で個人でも自由に使えて、通信事業者を使わずに数kmまでの通信を可能とする特徴はWi-Fiには無い新しい使い道が見えてくるのではないかと思います。

今回はLoRa通信のモジュールとして株式会社アイ・ツー [^1] より販売[^2]されている[LRA1](http://www.i2-ele.co.jp/LoRa.html) を使ってみました。このモジュールは技適認定を取得しておりますので、日本国内で問題なく使用できます

この記事ではLRA1の簡単な使い方を紹介した後、最初のLoRa通信として2つのモジュール間で文字列の送受信を行うまでをやってみようと思います

モジュールのドキュメントなどは、http://www.i2-ele.co.jp/LoRa.html からダウンロードできます。参考までに主要なドキュメントのリンクを張っておきます

| 名前 | 説明 |
|-----|-----|
| [ハードウェアマニュアル](https://www.i2-ele.co.jp/LRA1_hardware.html) | モジュールの各種データが記載されています、電子部品の所謂スペックシート的な内容です |
| [ソフトウェアリファレンスマニュアル](https://www.i2-ele.co.jp/LRA1_software.html) | ターミナルで実行するコマンドの詳しい説明です |
| [UART/BASICプログラムチュートリアル](https://www.i2-ele.co.jp/LRA1_UART_BASIC.html) | ターミナルのつなぎ方とプログラムモードで動作するサンプルコードが含まれています |
| [LCD付き評価ボードマニュアル](https://www.i2-ele.co.jp/LRA1_EB.html) | 評価ボードのドキュメントです |

その他、最新のファームウェアやアップデートツール、3Dデータなどは上記のWebから取得してください

# LRA1の使い方

ここでは、LRA1の評価ボードを2台使ってPCのターミナルからモジュールのインタプリタを操作します。PCには[Tera Term](https://ja.osdn.net/projects/ttssh2/)などのターミナルソフトを予め用意しておいて下さい

## 接続

評価ボードにはmicroUSBの端子が付いており、ここからPCとつなぐことができます。ターミナルソフトを立ち上げシリアルポートで接続します

### シリアルポートの設定

シリアルポートは次の通りに設定してください

| 項目 | 値 |
|:-----------:|:-----------:|
| ボーレート | 115200bps |
| データ | 8bit |
| パリティ | none |
| ストップビット | 1bit |
| フロー制御 | none |

### インタプリタの表示

PCにモジュールを繋いでターミナルを開くとプロンプトが表示されます

```:LRA1プロンプト
i2-ele LRA1
Ver 0.35.a
OK
>
```

文字が表示されなかったり、文字が化けた場合はシリアルポートの設定を見直してください

## インタプリタの使い方

まず初めに、通信を行うための準備としてLoRa変数を設定します。設定内容や設定の保存の仕方を紹介します

### LoRa変数

以下の表はLoRa通信に関係する設定値です。

| 変数名 | #? | R/W | 内容 | 初期値 |
|:--|:--|:--|:--|:--|
| Modem | ● | R/W | モデム設定 (0:FSK/1:LoRa) | 1:LoRa |
| Pwr | ● | R/W | 送信出力 (-4～13) | 13 |
| Sf | ● | R/W | 拡散率　Spreading Factor (7～12) | 10 |
| Bw | ● | R/W | 占有帯域幅 Bandwidth (6～9) [6:62.5kHz, 7:125kHz, 8:250kHz, 9:500kHz] | 7:125kHz |
| Cr | ● | R/W | 冗長率 Cording Rate (1～4) | 1[4/5] |
| Ch | ● | R/W | Channel (24～61) 下側バンド 24～38、上側バンド39～61 | 36 |
| Frq | | R | 周波数設定 (Hz 単位） | 923000000(Hz) |
| Gid | ● | R/W | グループ ID (0～65535) | 0 |
| Own | ● | R/W | 自局 ID (0～65535) | 1 |
| Dst | ● | R/W | 送信先 ID (0～65535) | 0 |
| Aes | | R/W | AES (128bit) 16 進数文字列(16byte) | 00000000000000000000000000000000 |
| Rssi | | R | 最後に受信したフレームの RSSI 値 | 0 |
| Stat | | R/W | 送受信状態、エラーコード [8:Timeout, 9:CRC-Error, 10:正常に受信した] | 0 |
| Ctrl | ● | R/W | コントロール（下記のビットの論理和を設定する） | $0000 |

* `#?` は `#? コマンド` (後述します)で表示される変数を示します (Ver 0.35.a で確認)
* `R/W` は読み書きの可能を示します。読込みのみできる変数は `R` です
* 詳しい説明はLRA1のソフトウェアリファレンスマニュアルをご覧ください

### 設定値の範囲について

* 範囲外の設定をしたり、書き込みできない変数に値を入れようとすると `Parameter error` が返ります

### 通信パラメータ(BW/CR/SF)について

* 帯域幅を広げると通信速度が上がります
* 冗長率を上げるとエラーに強くなります
* 拡散率を上げることでノイズに耐性が上がり、遠くにも電波が届くようになる半面スループットが低下します

### チャンネルバンドについて

* 下側バンド(24～38) は多くのデータを短時間で送る用途向けです
    * 送信時間4秒以下
    * 休止時間50ms以上
    * キャリアセンス受信時間5ms以上
* 上側バンド(39～61) は少ないデータを低消費電力で送る用途向けです
    * 送信時間0.4s以下
    * 休止時間 送信時間の10倍以上
    * キャリアセンス受信時間128μs以上
* 通信速度の違いはハードウェアマニュアルをご参照ください

### LoRa変数の設定・保存・確認

設定値の変更は　`変数名 = 値` で行います

```shell:例)Ownを5に変更する
>Own = 5
```

変更した後は `SSAVE` コマンドで保存します

```shell:設定値保存
>SSAVE
OK
```

保存をしないと、電源を切った時に変更が失われるのでご注意ください
保存した設定は電源を入れた時に自動的に読み込まれます

設定されたLoRa変数は `#?` コマンドで確認できます

```shell:設定値確認
>#?
Sn=999999
Modem=1[LoRa]
Pwr=13(dBm)
Ch=36
Sf=10
Bw=7[125kHz]
Cr=1[4/5]
Gid=0
Own=1
Dst=0
Ctrl=$0000
Echo=1[On]
Auto=
OK
```

# データ送受信

実際にデータを送ってみます。2台のモジュールをPCにつないでそれぞれターミナルを開いて、インタプリタの待ち受け状態にしておきます

## OwnとDstの設定

通信の準備として、LoRa変数のOwnとDstを変更します。それ以外の変数は初期値のままで構いません

Own はモジュール自身に割り当てるIDでそれぞれのモジュールが異なる番号になるように設定します。ここでは、Ownを 5 と 6 に設定しています

```:Ownの設定
' モジュールA
>Own = 5

' モジュールB
>Own = 6
```

Dst は通信の送り先を示します。ここではお互いのモジュールに割り当てたIDを指定してください

```:Dstの設定
' モジュールA
>Dst = 6

' モジュールB
>Dst = 5
```

## 受信待ち受け

`RECV` コマンドで受信データを待ち受けます

```shell:受信待ち受け
>RECV -1
```

## データ送信側

`SEND` コマンドでデータを送信します

```shell:データ送信
>SEND "Hello"
```

受信待ち受けしたターミナルに送った文字が表示されます

```shell:データ受信側
>RECV -1
@-18,6,Hello
```

表示される文字は `@RSSI(信号強度),送信側ID,受け取った文字列` です

[^1]: http://www.i2-ele.co.jp/
[^2]: 購入は[マルツ](https://www.marutsu.co.jp/pc/i/1633699/)または[東京デバイセズ](https://tokyodevices.com/items/281) の通販サイトからできます