はじめに
LPWA通信として名前が知られているLoRaについて仕様を調べてみました。
SPRESENSE用にCLEALINKのLoRa通信addonボード(CLEALINK DTH-SSLR)が販売されており、以前サンプルの動作確認を行ったことがあったので、それをネタに、PrivateLoRaの概要説明を添えて記事にしています。
PrivateLoRa概要
LoRa(Long Range) は、米国のSEMTECH社によって、スペクトラム拡散の1種であるCSS(ChirpSpread Spectrum)をベースに開発された無線の変調方式の物理層の名称であり、LPWA(Low Power Wide Area)の1種です。低ビットレート(250~50Kbps)ですが、長距離伝送(10km) 、低消費電力 が特徴であり、加えてライセンス(免許)不要 というのもお手軽に利用可能な通信規格になります。
周波数の割当ては国ごとに異なります。LoRa Alliance の規格AS923によって、日本では920~928MHzが割り当てられていますが、LoRa以外の通信規格も含む920MHz帯の実際の運用は、社団法人電波産業会(ARIB)のSTD-T108 により日本国内での電波利用が規制されています。
先に書いた通り、LoRaは、物理層の名称であり、OSI参照モデルでのデータリンク層(MAC)の規定によって、異なる2種類のLoRaWANとPrivateLoRaに分けられます。
LoRaWANは、LoRaAllianceが策定した標準規格で決められたプロトコルですが、PrivateLoRaは、各社が独自に仕様を決められるプロトコルのため、通信の最適化などカスタマイズが可能なものになっています。
SPRESENSE LoRa Add-onボード(CLEALINK DTH-SSLR)
PrivateLoRa を手っ取り早く試す上で、以下のCLEALINKから出されているSPRESENSE用Add-onボードがあります。
■ボード環境
動作環境として、senderとreceiverのLoRa通信環境を用意するためには、
Spresenseメインボード、アンテナ、コネクタケーブルを1セットにした、2セット分の環境を用意する必要があります。
購入先例(SWITCH SCIENCE):
ボード購入
アンテナ
ケーブル
■接続方法
メインボードの上側のUART2のピン側に接続します。LoRaボードは横にはみ出る形での接続になります。さらに、PrivateLoRaボードとアンテナをつなぐために、アンテナのSMAメスとコネクタ(ufl‐SMAオス)を接続します。
Softwareの準備
■ソフトウェア環境
先ほどのCLEALINKのサイトにて、ダウンロードでArduinoのsketchが落とせますので、手軽にPrivateLoRa通信のお試し環境を構築することができます。
ライブラリ名
- spresense_e220900t22s_jp_lib.zip
ダウンロードのファイルを解凍すると、READMEがありますので、一応目を通しておきます。以下の2種類のサンプルが含まれています。
サンプル
- E220-900T22S(JP)へのパラメータ初期設定
- LoRa送受信
READMEに、"spresense_e220900t22s_jp_lib.hの以下の「E220-900T22S(JP)へのピンアサイン」を回路に合わせて変更してください。"との説明がありますが、Spresenseメインボードとの接続ではそのままで良いです。
// E220-900T22S(JP)へのピンアサイン
#define LoRa_ModeSettingPin_M0 PIN_D20
#define LoRa_ModeSettingPin_M1 PIN_D21
手順
以下にArduinoIDEを利用した、ソフトウェアの実動作までの手順を示します。
1. ArduinoIDEにライブラリをインストールする
"Sketch"->"Include library"から、ダウンロードしたzipファイルをincludeします。
成功すると、外部ライブラリの中にSpresense E220-900T22S(JP) LoRa lbraryの表示が見られます。
2. example/lora_sendのスケッチ(lora_send.ino)をArduinoIDEで開き、ビルド&ロードを行います。
ロード後、チップへの初期設定が終了すると、"init ok"のメッセージが見られて、コンソールからの入力待ち状態になります。
program start
switch to configuration mode
# Command Request
0xc0 0x00 0x08 0x00 0x00 0x70 0x21 0x00 0xc3 0x00 0x00
# Command Response
0xc1 0x00 0x08 0x00 0x00 0x70 0x21 0x00 0xc3 0x00 0x00
init ok
switch to normal mode
3. example/lora_recvのスケッチ(lora_recv.ino)をArduinoIDEで開きます。
こちらも、チップへの初期設定が終了すると、"init ok"のメッセージが見られて、
コンソールからの入力待ち状態になります。
program start
switch to configuration mode
# Command Request
0xc0 0x00 0x08 0x00 0x00 0x70 0x21 0x00 0xc3 0x00 0x00
# Command Response
0xc1 0x00 0x08 0x00 0x00 0x70 0x21 0x00 0xc3 0x00 0x00
init ok
switch to normal mode
4. 送信側のボードのSerialConsoleにメッセージ Merry Christmas 2024! と入力します。
メッセージ入力時は、Ardino のSerial MonitorでConsoleタイプを”Both NL&CR”にして入力します。
- 送信ボード側のConsole上の表示
000000Merry Christmas 2024!
send succeeded.
5. 受信側のボードSerialConsole
送信ボードからメッセージ送信後、受信ボード側のConsole上にメッセージが表示されます。
- 受信ボード側のConsole上の表示
recv data:
Merry Christmas 2024!
hex dump:
4d 65 72 72 79 20 43 68 72 69 73 74 6d 61 73 20 32 30 32 34 21
RSSI: -13 dBm
このように、簡単にPrivateLora通信を利用したメッセージ送受信の確認が取れました。
ご参考までに。
参考