LoRaWAN Shield for Arduino 使用方法 | センスウェイ株式会社

LoRaWAN Shield for Arduino は、現在販売を休止しております。

はじめに

「LoRaWAN Shield for Arduino」は、LoRaWAN検証用に用意されたモジュールです。
このマニュアルでは、モジュールの接続方法や、センスウェイLoRaWANサーバーとのデータ送受信設定について説明します。

LoRaシールドの使用法

<アンテナの取り付け>
アンテナとワイヤーを用意し、アンテナのソケットにワイヤーのねじ部分を奥まで回して取り付けます。
LoRaWANアンテナの画像1

アンテナのソケットにワイヤーのねじ部分を奥までまわして取り付けます。
LoRaWANアンテナの画像2

ワイヤーの端子をLoRaシールドのチップの端子に差し込みます。
LoRaWANの画像1

Arduino とLoRaシールドの接続

Arduino UnoとLoRa シールドを用意します。
Arduino のピンソケット(1)にシールド裏面のピン(2)を差し込みます。シールド裏面のピンは折れやすいので注意して差し込んでください。

ArduinoとLoRaWANの接続の様子

D11 UART_TX
D12 UART_RX

※通信速度デフォルト値:9600bps
LoRaシールドと Arduino との接続では、D11/D12ピンをUARTシリアルで使用しています。
Arduinoスケッチでは、SoftwareSerial 等を使って LoRaモジュールとの通信を行い、データの送受信等を行います。

センスウェイLoRaWANサーバーとのデータ送受信設定

Join(デバイス認証/暗号化キー交換)

モジュールがLoRaWANのデータ送受信を行うには、まず、センスウェイLoRaWANサーバーに対して「join」と呼ばれる「デバイス認証/暗号化キー交換処理」を行う必要があります。Arduino D11/12ピンへのUARTシリアル接続のコマンドラインへ、スケッチから「join」コマンドと引数を指定することで行います。
join の書式は下記の通りです。

lorawan join <Mode>

<Mode>

otaa (over-the-air activation)」 と 「abp (activation by personalization)」 のどちらかを指定しますが、センスウェイLoRaWANサーバーでは、現在 otaa のみ使用可能です。

join の応答例は下記の通りです。
join は、周囲の電波状況やその他の理由により失敗する可能性もあります。状況にもよりますが、スケッチではループ等で成功するまで繰り返すようプログラムするほうがよいでしょう。また、一度 join に成功したステータスは、電源を切っても保持されています。

モジュールjoin時コマンド応答例

lorawan join otaa
> busy
> unsuccess

lorawan join otaa
> Ok
> accepted

Uplink データ送信 (モジュール→センスウェイLoRaWANサーバー)

モジュール(デバイス) からセンスウェイLoRaWANサーバーへのデータ送信は、Arduino D11/12ピンへのUARTシリアル接続のコマンドラインへ、スケッチから「tx」コマンドと引数を指定することで行います。
tx の書式は下記の通りです。

lorawan tx <Type> <PortNum> <Data>

<Type>

ACKを確認する(confirmed)かどうかを、cnf / ucnf の文字列で指定します。

<PortNum>

アプリケーションを区別する等、ユーザが自由に使用可能な数値を1~223の間で指定します。例えば、弊社ではport = 11をGPS用途に割り当ててあり、地図へのマッピングアプリケーション等での判断に使用しています。

弊社使用例

0~10 = 予約
11 = GPS座標/高度
12 = 温度/湿度/(気圧)
13 = CPU温度(他機器温度)
14 = 数値カウント
15 = 距離

<Data>

送信するデータの16進数表記。エンコード方法の規定はなく、モジュール(デバイス)側でのエンコード方法とサーバー側アプリケーションでのデコード方法が一致していれば問題ありません。例えば、弊社では「GoogleMap表記の座標を100万倍したもの」と「高度」をそれぞれ16進表記して連結し、GPSのデータ領域として使用しています。
tx の応答例は下記の通りです。

lorawan tx ucnf 11 0220a5900854ac80001f
> Ok
> tx_ok

lorawan tx cnf 14 0011223344556677
> Ok
> err

DR値による送信可能データサイズ

DR値 SF/BW Payload(データ)
サイズ(bytes)
ビットレート
(bit/s)
2 SF10BW125 11 980
3 SF9BW125 53 1760
4 SF8BW125 125 3125
5 SF7BW125 242 5470

LoRaモジュールは、SpreadingFactor(SF) と BandWidth(BW) の組み合わせで決まるDR値によって、送信可能なデータサイズと到達距離が変化します。DR値が低いほど到達距離は長く、送信可能データサイズは小さくなります。
モジュールのDR値の設定は、Arduino D11/12ピンへのUARTシリアル接続のコマンドラインへ、スケッチから「set_dr」コマンドと引数を指定することで行います。
set_dr の書式は下記の通りです。

lorawan set_dr

モジュールDR値設定応答例

DR値を指定します。
set_dr の応答例は下記の通りです。

lorawan set_dr 5
> Ok

Uplink データ送信 (センスウェイLoRaWANサーバー→PC/アプリケーションサーバーなど)

モジュールから送信したデータをPCやアプリケーションサーバーが受信するには、センスウェイLoRaWANサーバーを経由して、MQTTプロトコルの Subscribeを使用します。
MQTTのアクセス情報やtopicの指定方法については、「MQTT接続マニュアル」を参照してください。

Downlink データ受信 (PC/アプリケーションサーバーなど→センスウェイLoRaWANサーバー)

PCやアプリケーションサーバーからのデータをモジュールが受信する場合にも、MQTTプロトコルの Piblishを使用して、データはいったんセンスウェイLoRaWANサーバーが受信します。
モジュールはMQTTのアクセス情報やtopicの指定方法については、「MQTT接続マニュアル」を参照してください。

Downlink データ受信 (センスウェイLoRaWANサーバー→モジュール)

モジュールでは、センスウェイLoRaWANサーバーへのデータ送信時に、サーバーにPCやアプリケーションからのデータがある場合には、それを受信します。
Arduinoのスケッチ等でこれをバンドルする場合の「tx」コマンドの応答例は下記の通りです。

lorawan tx cnf 14 01020304
> Ok
> rx 14 00112233
> tx_ok

2018.04.17 Ver.01
2018.04.27 Ver.02
2018.09.27 Ver.03
2019.02.28 Ver.04
2019.08.23 Ver.05
2022.03.09 Ver.06

前ページ:ユーザー情報の編集
次ページ:LoRaWANサーバーとのMQTT接続