IoT向けの中距離無線として注目されているLPWA
その中でも今すぐ使えるLPWAとして LoRaWAN があります
ソラコムからLoRaWANで通信ができるArduino UNO R3のシールド(拡張ボード)を販売していますが、実はこのシールド、Arduinoだけでなく Raspberry PiやPCからでも使える方法があるので、その紹介です
概要
AL-050の販売ページからダウンロードできるドキュメントの5ページ目にこんなことが書いてあります
※PDFより抜粋
要するに シールドのD12をD0と、D11をD1とそれぞれ接続し、USBポートで接続するとPL2303HXDなUARTデバイスとして見えるよ ということです
別にArduinoじゃなくても良かったんだ!
論より実証
- マニュアル通りに接続
-
PL2303HXDのWindows 10のドライバをProlific Technologyからダウンロード & インストール
-
おもむろにターミナル(TeraTerm)で接続、動かしてみる
> mod get_ver
>> V1.3.1-ar-Mar 18 2017-16:32:02
> mod get_hw_model
>> TLM922S-P01A-ffffffffffffffffffffffff
mod get_ver
や mod get_hw_model
が AL-050 のコマンドです。ほかのコマンドはマニュアルに書いてありますので、それを参照ください
Raspberry Pi等のLinuxから使う場合はscreenコマンドとか使ってください
LoRaWANを使ってみる
ソラコムからAL-050を購入すると、SORACOM Air for LoRaWANのネットワークサーバに登録された状態で、手元に届きます
そのため、誰でも使える共有ゲートウェイ※があれば、すぐにでもLoRaWANを試すことができます。具体的なコマンドシーケンスを掲示しておきます
※共有ゲートウェイがどこに設置されているかは SORACOM LoRa Space で確認できます。お近くにあるといいですね
※ >
が入力 >>
がレスポンスです
モジュールのリセットを行った後、over-the-air activation(OTAA)モードでLoRaWANネットワークにjoinし、 Hi!LoRaWAN!
というデータを送信している例
> mod factory_reset
>> OK
> lorawan join otaa
>> accepted
> lorawan tx ucnf 1 4869214c6f526157414e21
>> Ok
>> tx_ok
送受信に使うASCII HEX表現について
AL-050 は送受信のデータ表現にASCII HEX(hexadecimal)を使います。これにより、non-printable なデータを送ることが可能です
これを操作する簡単な方法として pack/unpack があります
Ruby で操作する
# 作る(送信時の操作)
> "Hi!LoRaWAN!".unpack("H*").first
=> "4869214c6f526157414e21"
# 戻す(受信時の操作)
> ["4869214c6f526157414e21"].pack("H*")
=> "Hi!LoRaWAN!"
あとがき
UARTプログラミング、ばんざい