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

センスウェイ株式会社

2018.04.17 Ver.01
2018.04.27 Ver.02
2018.09.27 Ver.03
2019.02.28 Ver.04

本書について

LoRaWAN検証キット機器の利用方法についての資料です。
機器の接続方法、モジュール・サーバ間のデータ送受信設定について説明いたします。

モジュールの使用法

アンテナの繋ぎ方
GPSアンテナとワイヤーを用意します。
LoRaWANアンテナの画像1

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

ワイヤーの端子はチップの端子に差し込みます。
LoRaWANの画像1

Arduino とLoRaシールドの接続

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

Arduinoとの内部接続

本LoRaシールドと Arduino との接続には、D11/D12ピンをUARTシリアルで使用しています。
Arduinoスケッチでは、SoftwareSerial 等を使って LoRaモジュールとの通信を行い、データの送受信等を行います。

D11 UART_TX
D12 UART_RX

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

LoRaWAN でのデータ送受信を行うにあたって、サーバに対して join という処理(デバイス認証/暗号化キー交換)を行う必要があります。

これは、以下の書式で行います。

lorawan join <Mode>

<Mode>

join方式として、otaa (over-the-air activation) と abp (activation by personalization) のどちらかを指定しますが、弊社システムでは、現在 otaa のみ使用可能です。

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

lorawan join otaa
> busy
> unsuccess

lorawan join otaa
> Ok
> accepted

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

Uplink データ送信 (モジュール→サーバ)

モジュール(デバイス) のデータ送信は、Arduino D11/12ピンへのUARTシリアル接続のコマンドラインへ、スケッチから以下のコマンドと引数を指定することで行います。

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進数表記。
エンコード方法の規定はなく、モジュール(デバイス)側でのエンコード方法とサーバ側アプリケーションでのデコード方法が一致していれば問題ありません。

エンコード例

弊社 GPS用途では、GoogleMap表記の座標を 1000000倍したものと、高度を16進表記して連結し、

緯度(latitude) 35.693968 x 1000000 → 35693968 → 0x0220a590
経度(longitude) 139.766912 x 1000000 → 139766912 → 0x0854ac80
高度(altitude(m)) 31 → 0x001f

→ 0220a5900854ac80001f

として10バイト(20桁の16進数表記)を組み立てて使用しています。

モジュールデータ送信応答例

lorawan tx ucnf 11 0220a5900854ac80001f
> Ok
> tx_ok

lorawan tx cnf 14 0011223344556677
> Ok
> err

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

LoRaモジュールは、DR値 (SpreadingFactor と BandWidth の組み合わせ) により、送信可能なデータサイズと到達距離が変化します。(DR値が低いほど、到達距離は長いが、送信可能データサイズは小さくなります。)

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

Arduinoスケッチ等でのモジュール(デバイス) のDR値の設定は、Arduino の D11/12ピンへのUARTシリアル接続コマンドラインへコマンドと引数で指定することで行います。

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

lorawan set_dr 5
> Ok

Uplink データ受信 (サーバ→PC/アプリケーションサーバ等)

モジュール(デバイス) から送信したデータを、サーバ経由で、MQTTプロトコルの Subscribe により受信します。
MQTTのアクセス情報やtopicの指定方法については、別途「MQTT接続マニュアル」を参照してください。

Downlink データ送信 (PC/アプリケーションサーバ等→サーバ→モジュール)

MQTTの Publish により、モジュール(デバイス)へデータを送信します。
MQTTのアクセス情報やtopicの指定方法については、別途「MQTT接続マニュアル」を参照してください。

モジュールでのデータ受信

モジュール(デバイス)では、上記サーバ側へのMQTT Publish以降、次のデータ送信時、サーバに受信データがある場合に、それを受信して表示します。

モジュールデータ送受信応答例

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

Arduinoのスケッチ等でこれをバンドルする場合は、上記シークエンスを処理する必要があります。

お問い合わせ

ご質問、不明点がありましたら、下記までお問い合わせください。

お問い合わせはこちら
フォームでのお問い合わせ