LPWAを使ったデータ転送

1.概要

ここでLPWAというのは、LPWA(Low Power Wide Area)通信を指します。具体的には、Interplan社の「長距離通信&マルチホップ920MHz無線モジュール IM920sL」を使った無線通信です。
IM920sLは、技適認証済で、無線免許も必要なくセンサデータの送信ができます。複数のIM920sL間でデータの送受信ができるとともに、マルチホップ対応ですので、一番遠いIM920sL間で直接データが届かなくても、途中の素子が中継局の役割を果たしてくれて、絶対通信距離を延ばすことが可能です。また、IM920sL間のデータ送受信でデータの暗号化をすることもできます。
IM920sLは送受信が可能ですので、R-MSMからPDHへのデータの送信だけではなく、CloudからPDHを経由してR-MSMにコマンドを送ることも可能です。

IM920sLのHP:「長距離・マルチホップ・暗号化通信対応920MHz無線モジュール IM920sLシリーズ」

ここでは、IM920sLを使った通信の準備、R-MSMとの接続、R-MSM+IM902sLとPDH+IM920sL間の通信(送受信)の説明を行います。
一番簡単に、使える方法を説明していきます。さらなる設定の変更等は、上記HPにあるマニュアル等を参照ください。

2.IM920sLの通信準備

IM920sLで通信を行う準備をします。

2-1. Serial NumberとID番号

IM920sLには、Serial Numberが振られています。パッケージのラベルに、S/N:WWXXYYZZと8桁の番号が印刷されています。このS/Nは、10進数ですが、これを16進数にしたものが、ID番号になります。写真は、USBインターフェースボードに取り付けたIM920sLの外形です。左側のS/N:00102737は、ID:00019151です。右側のS/N:00103159は、ID: 000192f7です。

2-2. 親機と子機の設定

次のように、4台のIM920sLで通信を行う場合を考えます。
まず、親機を決めます。親機のID番号が、グループ番号になります。そして、親機のノード番号が1番になります。そして、4台で通信を行う場合には、残り3台を子機として親機のグループに入れます。子機はノード番号で識別されます。親機のノード番号1以外のノード番号を子機に割り振ります。下の例では、子機No1のノード番号を2に、子機No2のノード番号を3に、子機No3のノード番号を4にそれぞれ割り振っています。

2-3.キャラクタ入出力モード

もう一つ、データの送受信を簡便にするために、キャラクタ入出力モードをONに設定します。ONにすることで、1文字を1バイトとして扱うモードになります。すなわち、’A’を送る際ににそのまま‘A’と送れば大丈夫です。デフォルトではOFFです。OFFの時には、’A’を送るために、41hを送らないと駄目です。設定コマンドは、ECIOです。コマンドの設定方法に関しては後ほど説明します。

3.IM920sLの設定

IM920sLの設定には、IM920sLをUSBインターフェースボードに取り付けて、PC or PDHから行います。設定には、ターミナルソフトを使ってコマンドを入力することで行います。ターミナルソフトは、Windows PCの場合は、Tera Term、PDHの場合は、GTKTermを使用して説明します。
1) IM920sLをUSBインターフェースボードに取り付けて、PC or PDHのUSBポートに挿します。
2) Windows PCの場合はTera Term、PDHの場合には、GTKTermを起動します。まずWindows PCのTera Termで立ち上げるところまで説明します。その後、PDHのGTKTermで立ち上げるところまで説明します。

3-1. 使用するコマンド

ここでの説明で使用するコマンドを以下にまとめます。

RPRMコマンド以外は、まずENWRを入力しパラメータ書込み許可状態にしてから、入力します。そして入力後、DSWRを入力してパラメータ書込み禁止状態に戻します。基本フロー図を次に示します。

PDH(GTKterm)の場合は、「3-3. PDHの場合(GKTterm使用)」へ進んでください。
Windows PC(Tera Term使用)の場合は、このまま次に進んでください。

3-2. Windows PCの場合(Tera Term使用)

1) IM920sLをUSBインターフェースボードに取り付けて、Tera Termを立ち上げます。「新しい接続」の画面が出てきますので、シリアルからポート番号を選びます。そして「OK]を押します。

2) 設定メニューから「端末」を選びます。

3) 改行コードの「送信」をCR+LFにし、「ローカルエコー」にチェックを入れ、「OK」を押します。これでTera Termの設定が完了しました。

4) 現状の設定を確認するため、コマンド‘RPRM’を入力します。設定が出てくればOKです。

3-4. 親機の設定」へ進んでください。

3-3. PDHの場合(GKTterm使用)

1) IM920sLをUSBインターフェースボードに取り付けて、PDHのUSBポートに差し込み、端末画面を開いて、USBのポート番号を調べます。

ls –l /dev/ttyUSB*

/dev/ttyUSB0で認識されたようです。

2) GTKTermを起動し、Configurationメニューから「Port」を選びます。

3) Serial Portの設定画面が出てきますので、Portに、USBのポート番号(ここでは、/dev/ttyUSB0)を入力し、Baud Rateを’19200’に変更します。最後に「OK」を押します。

 

4) 再度、Configurationメニューを開き、‘Local echo’と‘CR LF auto’を選択して、チェックを付けます。以上で、GTKTermの設定が終わりました。

5) 現状の設定を確認するため、コマンド‘RPRM’を入力します。設定が出てくればOKです。

3-4. 親機の設定

ここからは、画面は、Tera Termの画面ですが、 Windows PC(Tera term)とPDH(GKTterm)で同じ内容になります。
1) 「RPRM」コマンドを入力して、現状の設定を確認します。

※:コマンドは、受け付けられると「OK」、もしくはパラメータが表示されます。「NG」がでた場合は、受け付けられていませんので、再入力します。入力ミスでBack Spaceで消して、再入力すると「NG」になりますので、初めから再入力して下さい。

2) 「ENWR」コマンドでパラメータ書込み許可に設定します。
3) 「STNN 0001」コマンドで親機(STNN:0001)に設定します。
4) 「RPRM」コマンドで、ノード番号とグループ番号が、自分のID番号に変わっていることを確認します。

5) 「ECIO」コマンドを入力し、キャラクタ入出力モードをonにします。
6) 「DSWR」コマンドを入力し、パラメータ書込み禁止に設定します。


7) 「RPRM」コマンドで、再度パラメータが変更になったことを確認します。
DSWRは、DSWRのままでOKです。

以上で、親機の設定は終了です。次に、子機の設定に移ります。

3-5. 子機の設定

子機の設定には、親機も使用します。親機から信号を発信させ、子機に受信させることで自分が受信した信号のグループにいることを認識させます。そのため、親機をUSBインターフェースボードで、PC or PDHに繋いだままにしておいてください。そして、設定する子機をUSBインターフェースボードに付けて、同じPC or PDHの別のUSBのポートに挿してください(やり方は、PCとPDHで同じです)。フローを以下に示します。

まず、親機を信号発生モードにします。親機のUSBインターフェースボードの裏面にあるLEDの点滅が0.5秒周期に変わります(早くなります)。その後、親機はそのままで、設定する子機の数だけ、子機の設定を繰返します。親機の送信信号は弱いので、子機にSTGNコマンドを入力する時点で、できるだけ子機と本体同士を近づけてください。

1) 親機「STGN」コマンド入力し、発信をさせる。

2) 設定する子機をUSBインターフェースボードに取り付け、USBポートに挿します。
3) Tera Term(GTKterm)を立上げ、子機の画面を設けます。
4) 子機の画面で「RPRM」コマンドを入力し、設定を確認します。
STNN:FFEF、STGN:FFFFFFFFです。

5) 子機の画面で「ENWR」コマンドを入力し、パラメータ書込み許可にします。
6) 子機の画面で「STNN 0002」と入力し子機のノード番号を設定します。番号はそれぞれの子機のノード番号に変えてください。ここでは、ノード番号は0002です。
7) なるべく親機と子機を近づけます。
8) 子機の画面で「STGN」コマンドを入力し、親機からの信号を受信します。
受信したら「GRNOREGD」と表示されます。たぶん「GRoup Number REGistereD」の略だと思われます。また、USBインターフェースボードの裏面のLEDが点灯したままになります。
9) 子機のUSBインターフェースボードをPC or PDHのUSBポートから抜いてください。受信モードから抜けます。

10) 一呼吸してから、子機のUSBインターフェースボードを再度PC or PDHのUSBポートに挿します。
11) 子機の画面が残っていますので、そのまま、「RPRM」コマンドを入力して、設定が変わっていることを確認してください。

12) 他に、同じグループに入れる子機がある場合は、新しい子機をUSBインターフェースボードに取り付け、PC or PDHのUSBポートに挿して、上記を繰返してください。

以上で、IM920sLの設定は終了です。通信ができる状態になりましたので、次に、簡単な通信実験をマニュアルで行います。

4. IM920sL間の通信実験

4-1. IM920sLの送信モード

IM920sLは、3つの送信モードを持っています。IoTで主に使用するのは、センサに取り付けたLPWA(子機)からPDHに取り付けたLPWA(親機)にデータを送るため、ユニキャスト送信です。センサ側にコマンドを送信する際も、どのセンサに対してということで、相手を指定しますので、ユニキャスト送信で行います。
また、注意事項としては、一度に送信できるデータ長は、最大32バイトであることです。そのため、R-MSMのセンサデータをLPWAで送信する場合には、JSONフォーマットでは送っていません。R-MSMとの接続の説明のところを参照ください。
送信モードの詳細は、IM920sLのHP:「長距離・マルチホップ・暗号化通信対応920MHz無線モジュール IM920sLシリーズ」 にあるマニュアルを参照ください。

4-2. 受信データのフォーマット

受信データのフォーマットは以下の様になります。

  aa,bbbb,dd:受信データ<CR><LF>
    aa :ダミー(1バイト、00h固定)
    bbbb :ノード番号(2バイト)
    dd :受信データのRSSI値
    受信データ :
      HEX入出力モード時(DCIO設定) xx,yy…形式で、ASCII文字列を16進数として出力
      キャラクタ入出力モード時(ECIO設定) abcde…形式で各バイトをASCII 1文字で出力
    RSSI値は、符号付き整数として読んだ値が受信電力[dBm]となります。00hならば0dBm、9Chでは-100dBmとなります。

4-3. ブロードキャスト送信の実験

ブロードキャスト送信は、一番簡単です。親機からでも子機からでもグループ内全部のLPWAにデータを送ります。
1) 親機と子機をそれぞれUSBインターフェースボードに取り付け、PC or PDHのUSBポートに挿します。
2) それぞれのTera Termの端末を立上げ、設定します。
3) 親機の端末から、’ TXDA Hello children!!’ と入力し、リターンをします。
4) 親機の端末には、‘OK’が表示されます。同時に子機の端末に‘00,0001,F5: Hello Children!!’ と表示されます(RSSI値は実験環境で変わります)。
5) 子機の端末で、‘TXDA Hello Daddy!!’ と入力し、リターンを押します。
6) 子機の端末には、 ‘OK’が表示されます。同時に親機の端末に‘00,0002,F7: Hello Daddy!!’と表示されます(RSSI値は実験環境で変わります) 。

7) 次に、送信データ32バイトの制限を確認してみたいと思います。親機の端末から、‘TXDA 01234567890123456789012345678901234567890’と40文字を送ります。すると、子機には、31文字が表示されました.「CR/LF」を含めて32文字分が送られたと考えられます。
8) 同様に、今度は子機から、‘TXDA 01234567890123456789012345678901234567890’と40文字を送ります。同様に、親機には31文字が表示されました。
マニュアルには、0~32バイトまで送信で、それ以上は廃棄されるとのことですので、送信時に長いデータを送る場合は、要注意です。

4-4. ユニキャスト送信の実験

ユニキャスト送信は、受信相手を指定(ノード番号指定)して送信するモードです。今、ノード番号0001と0002がPCに接続されていますので、① 0001から0002に送信する。② 0001から0003に送信する。③ 0002から0001に送信する。④ 0002から0004に送信するの4つのモードを実験してみます。
1) 親機と子機をそれぞれUSBインターフェースボードに取り付け、PC or PDHのUSBポートに挿します。
2) それぞれのTera Termの端末を立上げ、設定します。
3) 親機の端末から、’TXDU 0002 Hello! How are you, 0002?’と送信します。‘OK’の表示が返ってくるとともに、子機の端末画面に、‘00,0001,F5:Hello! How are you, 0002? ’と表示されます。
4) 次に、親機の端末から、’TXDU 0003 Hello! How are you, 0003?’と送信します。しばらくして、‘NG’の表示が返ってきます。子機の端末画面には変化はありません。
5) 子機の端末から、’TXDU 0001 Fine. Thank you.’と送信します。’OK’が返ってくるとともに、親機の端末画面に’ 00,0002,F6:Fine. Thank you.‘と表示されます。
6) 次に、子機の端末から、’TXDU 0004 Fine. Thank you.’と送信します。しばらくして、‘NG’の表示が返ってきます。親機の端末画面には変化はありません。