セクションの複数ページをまとめています。 印刷またはPDF形式で保存...
シリアル通信アプリ マニュアル
- 1: シリアル通信アプリ マニュアル
- 1.1: シリアル通信アプリのピン配置
- 1.2: シリアル通信アプリの通信モード
- 1.2.1: シリアル通信アプリの書式モード(アスキー形式)
- 1.2.1.1: シリアル通信アプリ 書式モード(アスキー)の 0xDB コマンド
- 1.2.2: シリアル通信アプリの書式モード(バイナリ形式)
- 1.2.2.1: シリアル通信アプリ 書式モード(バイナリ)の 0xDB コマンド
- 1.2.3: シリアル通信アプリのチャットモード
- 1.2.4: シリアル通信アプリの透過モード
- 1.2.5: シリアル通信アプリのヘッダ付き透過モード
- 1.3: シリアル通信アプリのカスタムデフォルト機能
- 1.4: シリアル通信アプリの通信における注意点
- 1.5: インタラクティブモード(シリアル通信アプリ)
1 - シリアル通信アプリ マニュアル
資料の取り扱いについてをご覧ください。
お気付きの点がございましたら、当社サポート窓口へお問い合わせください。
ダウンロード
シリアル通信アプリ(App_Uart
)を導入するには TWELITE STAGE SDK をインストールして、TWELITE STAGE アプリを使って書き換えてください。
1.1 - シリアル通信アプリのピン配置
TWELITE / TWELITE DIP
シリアル通信アプリが使用するピンの機能を、下図の超簡単!標準アプリのピン名を使って表します。
シリアル通信 | 超簡単!標準 | 機能 |
---|---|---|
VCC GND | VCC GND | 電源入力 |
TX RX | TX RX | シリアル入出力 |
TX_SUB RX_SUB | SCL SDA | シリアル副入出力 |
RTS | PWM1 | シリアル入力許可 |
M1 | M1 | 親機/子機の選択 |
M2 | M2 | 子機へ中継機能を付与 |
M3 | M3 | スリープ |
EX1 | AI2 | 動作モードの上書き |
BPS | BPS | 代替ボーレート設定の有効化 |
RST | RST | リセット入力 |
電源入力
VCC
/GND
には、3.3V(2.0-3.6V)の電源を接続します。
シリアル入出力
TX
/RX
は、シリアル通信(UART)の送信と受信に使用します。
シリアル副入出力
TX_SUB
(SCL
)/RX_SUB
(SDA
)は、シリアル入出力の副ポートとして利用できます。
シリアル入力許可
RTS
(PWM1
)が Low レベルのときは、RX
へのシリアル入力を受け付けていることを示します。
RX
への入力を抑制することで、取りこぼしを防ぐことが期待されます。親機/子機の選択
M1
をGND
へ接続すると親機、開放またはVCC
へ接続すると子機として使用できます。
インタラクティブモードによる設定
この接続を省略し、インタラクティブモードから設定することもできます。
i set Device ID
:0
子機へ中継機能を付与
M2
を子機設定のときにGND
へ接続することで、中継機能を付与できます。
インタラクティブモードによる設定
この接続を省略し、インタラクティブモードから設定することもできます。
r set Role
:1
または0x12
スリープ
M3
をGND
へ接続すると、本体をスリープさせることができます。
動作モードの上書き
EX1
を起動時に GND
へ接続しておくことで、動作モードを書式モード(バイナリ)へ上書きできます。
代替ボーレート設定の有効化
BPS
をGND
へ接続することで、インタラクティブモードで指定した代替ボーレート設定を有効化できます。
リセット入力
RST
とGND
との間にプッシュボタンを接続することで、リセットボタンを実装できます。RST
は内部プルアップされています。
TWELITE UART
シリアル通信アプリが使用するピンの機能を、基板に記載された7Pインタフェース(下図の②)のピン名を使って表します。
シルク | 機能 |
---|---|
VCC GND | 電源入力 |
TXD RXD | シリアル入出力 |
SET | 動作モードの上書き |
RST | リセット入力 |
電源入力
VCC
/GND
には、3.3V(2.0-3.6V)の電源を接続します。
シリアル入出力
TX
/RX
は、シリアル通信(UART)の送信と受信に使用します。
動作モードの上書き
SET
を起動時に GND
へ接続することで、動作モードを書式モード(アスキー)へ上書きできます。
リセット入力
RST
とGND
との間にプッシュボタンを接続することで、リセットボタンを実装できます。RST
は内部プルアップされています。
1.2 - シリアル通信アプリの通信モード
通信モードの一覧
各モードは、インタラクティブモードによって切り替えます(一部のモードはピン入力にて設定可能)。
ID | モード |
---|---|
A | 書式モード(アスキー) |
B | 書式モード(バイナリ) |
C | チャットモード |
D | 透過モード |
E | ヘッダ付き透過モード |
初期状態はヘッダ付き透過モードです。
モードに関わらず、送信データは80バイト以内としてください
パケットサイズの制約から、一度に送るデータはバイナリ換算で80バイト以内に収めてください。
TWELITE が採用する IEEE 802.15.4 のパケットの最大長は128バイトであり、オーバーヘッドを考慮するとシリアル通信アプリのペイロードに使用できる領域は80バイトに限られます。
大量のデータを送信する場合は、Wi-Fi などを利用した他社製品をご検討ください。TWELITE は少ないデータを効率よく送る用途に適しています。
A
:書式モード(アスキー)
送信側の端末へ特定の書式に従ったデータを入力すると、受信側の端末も特定の書式に従ったデータを出力します。
16進数で表すデータはアスキー文字列で表現します。
送信側の入力 | 受信側の出力 | |
---|---|---|
簡易形式/拡張形式のデータ | → | 簡易形式/拡張形式のデータ |
TWELITE UART では、SET
ピンを GND
へ接続して起動すると本モードが有効となります。
データを表現する形式は2種類あります。
- 簡易形式:論理デバイスIDだけを使用。超簡単!標準アプリのUART伝送機能と互換性あり
- 拡張形式:論理デバイスIDに加えて、シリアルIDや再送回数などの送信オプションを使用できる
例えば、5バイトのバイナリデータ 0x48 0x45 0x4C 0x4C 0x4F
は、簡易形式を使って次のように送信できます。
【送信側】
:000148454C4C4F8B <- 入力
:DBA1800103 <- 出力
【受信側】
:780148454C4C4F13 <- 出力
書式モードでは、アプリケーションIDなどの設定をインタラクティブモードだけでなく UART によるコマンド(アスキー形式)によって動的に適用できます。
B
:書式モード(バイナリ)
送信側の端末へ特定の書式に従ったデータを入力すると、受信側の端末も特定の書式に従ったデータを出力します。
16進数で表すデータはそのままバイナリ形式で表現します。
送信側の入力 | 受信側の出力 | |
---|---|---|
簡易形式/拡張形式のデータ | → | 簡易形式/拡張形式のデータ |
TWELITE / TWELITE DIP では、EX1
ピンを GND
へ接続して起動すると本モードが有効となります。
書式モード(アスキー)と同様に、データを表現する形式は2種類あります。
例えば、5バイトのバイナリデータ 0x48 0x45 0x4C 0x4C 0x4F
は、簡易形式を使って次のように送信できます。
【送信側】
0xA5 0x5A 0x00 0x07 0x00 0x01 0x48 0x45 0x4C 0x4C 0x4F 0x43 0x04 <- 入力
0xA5 0x5A 0x00 0x04 0xDB 0xA1 0x80 0x01 0xFB 0x04 <- 出力
【受信側】
0xA5 0x5A 0x00 0x07 0x78 0x01 0x48 0x45 0x4C 0x4C 0x4F 0x3B 0x04 <- 出力
書式モードでは、アプリケーションIDなどの設定をインタラクティブモードだけでなく UART によるコマンド(バイナリ形式)によって動的に適用できます。
C
:チャットモード
テキストチャットを実現します。
送信側の入力 | 受信側の出力 | |
---|---|---|
任意の文字列 | → | 補助情報+任意の文字列 |
プロンプトの表示とエコーバック(入力した文字の出力)を行います。すべての端末は子機として、同報通信を行います。
例えば、ある端末から他の端末へ Hello
という文字列を送信する場合は、次のように振る舞います。
【送信側】
810A4778:0> Hello <- 入力
810A4778:1> <- 出力
【受信側】
[810A4778:0] Hello <- 出力
82018CA0:0> <- 出力
上記の例ではプロンプトにシリアルIDを表示していますが、任意のハンドル名を使用することもできます。
D
:透過モード
送信側の端末へ任意のデータを入力すると、受信側の端末は受信したデータをそのまま出力します。
送信側の入力 | 受信側の出力 | |
---|---|---|
任意のデータ | → | 任意のデータ |
書式を必要としないため、既存の UART 通信を簡単に無線化できます。
一方で、データの区切りがあいまいになってしまうほか、受信側の出力から送信元を判別できないといった欠点があります。
初期状態では、送信側へ入力されたデータをCRLFで区切り、CRLF よりも前のデータを送信します。
例えば、送信側の端末へ Hello<Enter>
と入力すると、受信側の端末はそのまま Hello
を出力します。
【送信側】
Hello <- 入力
【受信側】
Hello <- 出力
E
:ヘッダ付き透過モード
送信側の端末へ任意のデータを入力すると、受信側の端末は受信した内容に特定の書式で補助情報を付加したデータを出力します。
送信側の入力 | 受信側の出力 | |
---|---|---|
任意のデータ | → | 任意のデータ+補助情報 |
初期状態では、送信側へ入力されたデータをCRLFで区切り、CRLF よりも前のデータを送信します。
例えば、送信側の端末へ Hello<Enter>
と入力すると、受信側の端末は補助情報を含んだ書式で Hello
を出力します。送信側の端末も送信完了といったメッセージを伝える書式を出力します。
【送信側】
Hello <- 入力
;U;00004;219;0x820163B2;000;000;0,1,Hel...;6E; <- 出力
【受信側】
;U;00003;000;0x820163B2;255;000;Hello;42; <- 出力
受信側が出力する補助情報は、送信元のアドレスや受信時の電波強度、チェックサム等を含みます。補助情報の書式はカスタマイズできます。
1.2.1 - シリアル通信アプリの書式モード(アスキー形式)
概要
送信側の端末へ特定の書式に従ったデータを入力すると、受信側の端末も特定の書式に従ったデータを出力します。
データは16進数のアスキー文字列で表現します。
送信側の入力 | 受信側の出力 | |
---|---|---|
簡易形式/拡張形式のデータ | → | 簡易形式/拡張形式のデータ |
- TWELITE UART では、
SET
ピンをGND
へ接続して起動すると書式モード(アスキー)が有効となります。 - TWELITE / TWELITE DIP では、
EX1
ピンをGND
へ接続して起動すると書式モード(バイナリ)が有効となります。
扱うことのできる書式の形式は2種類あります。
- 簡易形式:論理デバイスIDだけを使用する。超簡単!標準アプリのUART伝送機能と互換性あり
- 拡張形式:論理デバイスIDに加えて、シリアルIDや再送回数などの送信オプションを使用できる
例えば、5バイトのバイナリデータ 0x48 0x45 0x4C 0x4C 0x4F
は、簡易形式を使って次のように送信できます。
【送信側】
:000148454C4C4F8B <- 入力
:DBA1800103 <- 出力
【受信側】
:780148454C4C4F13 <- 出力
基本の書式
基本形式や拡張形式で表現したデータ列を送信するときは、アスキー文字列(0-9,A-F)へ変換します。
書式は超簡単!標準アプリ(App_Twelite)や親機・中継機アプリ(App_Wings)の親機の出力と同様に、:
で始まりCRLFで終わります。
ヘッダ | ペイロード | チェックサム | フッタ |
---|---|---|---|
: | 00 -FF の繰り返し | ペイロードのLRC8 | CRLF |
- すべて ASCII 文字
- 先頭は
:
(0x3A
) - チェックサムはペイロードの合計の2の補数
- 末端は CRLF (
\r\n
/0x0D 0x0A
) - ビッグエンディアン
例えば、バイナリデータ 0x00 0x11 0x22 0x33 0xAA 0xBB 0xCC
は次のように表現します。
:00112233AABBCC69<CR><LF>
親機と子機の区別
書式モードは、親機と子機を区別します。
親子間では、アプリケーションIDと周波数チャネルを合わせる必要があります。
送信元の判別
書式モードでは、受信したデータから送信元を判別できます。
簡易形式の書式では論理デバイスIDを、拡張形式の書式では論理デバイスIDに加えて拡張アドレスを利用します。
0x8
を付加したものです。簡易形式の書式
書式モードの簡易形式を利用する場合は、次の書式に従います。
送信側の入力
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信先の論理デバイスID | 親機0x00 ,子機0x01 -0x64 ,全子機0x78 |
1 | uint8 | コマンド番号 | 0x80 未満の任意の値 |
2 | [uint8] | 任意のデータ | 長さ\(N\)のバイト列(\(N\leqq80\)を推奨) |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
0x01
コマンドの上位互換です。受信側の出力
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信元の論理デバイスID | 親機0x00 ,子機0x01 -0x64 ,未設定子機0x78 |
1 | uint8 | コマンド番号 | 送信側で指定した0x80 未満の値 |
2 | [uint8] | 任意のデータ | 長さ\(N\)のバイト列 |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
0x01
コマンドの上位互換です。送信側の出力(応答メッセージ)
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信元の論理デバイスID | 0xDB のみ:自身を示す |
1 | uint8 | コマンド番号 | 0xA1 のみ |
2 | uint8 | 応答ID | 128 -255 (0x80 -0xFF )の範囲で続き番号を示す |
3 | uint8 | 処理結果 | 成功1 ,失敗0 |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
使用例
親機から全子機に対してバイト列 0x11 0x22 0x33 0xAA 0xBB 0xCC
を送信する例を示します。
【送信側:親機】
:7801112233AABBCCF0<CR><LF> <- 入力
:DBA1800103<CR><LF> <- 出力
末尾の
0xF0
はチェックサム:0x78
から0xCC
までの合計の2の補数のLSBから8ビット。
【受信側:全子機】
:0001112233AABBCC68<CR><LF> <- 出力
末尾の
0x68
はチェックサム:0x00
から0xCC
までの合計の2の補数のLSBから8ビット。
拡張形式の書式
書式モードの拡張形式を利用する場合は、次の書式に従います。
送信側の入力
送信先の指定に論理デバイスIDを使用する場合
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信先の論理デバイスID | 親機0x00 ,子機0x01 -0x64 ,全子機0x78 |
1 | uint8 | コマンド番号 | 0xA0 のみ |
2 | uint8 | 応答ID | 任意の値 |
3 | [uint8] | オプション | 長さ\(N\)のオプション列 |
3+\(N\) | [uint8] | 任意のデータ | 長さ\(M\)のバイト列(\(M\leqq80\)を推奨) |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
送信先の指定に拡張アドレスを使用する場合
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 拡張アドレスの指定 | 0x80 のみ |
1 | uint8 | コマンド番号 | 0xA0 のみ |
2 | uint8 | 応答ID | 任意の値 |
3 | uint32 | 送信先の拡張アドレス | シリアルIDの先頭へ0x8 を加えた値 |
7 | [uint8] | オプション | 長さ\(N\)のオプション列 |
7+\(N\) | [uint8] | 任意のデータ | 長さ\(M\)のバイト列(\(M\leqq80\)を推奨) |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
オプション列の詳細
拡張形式では、オプション列を指定することで細かな設定を行うことができます。
オプション列は、オプションのIDと引数の繰り返しで表現します。終端は 0xFF
とします。
0xFF
の1バイトだけを指定します。ID | 引数 | 初期値 | 内容 |
---|---|---|---|
0x01 | なし | 無効 | MAC ACKの有効化 |
0x02 | uint8 | 0x00 | アプリケーション再送の有効化 |
0x03 | uint16 | 0x0000 | 初回送信の遅延の最小値 |
0x04 | uint16 | 0x0000 | 初回送信の遅延の最大値 |
0x05 | uint16 | 10 | アプリケーション再送の間隔 |
0x06 | なし | 無効 | 平行要求の許可 |
0x07 | なし | 無効 | 応答メッセージの無効化 |
0x08 | なし | 無効 | 送信後スリープ |
0x01
:MAC ACKの有効化
MAC層のACK(確認応答)を有効化します。
頻繁にデータを送信する場合には適しませんが、信頼性を向上できる場合があります。
0x78
)とするときは利用できません。0x02
:アプリケーション再送の有効化
MAC ACK を使用するときは、0x00
-0x0F
を指定します。送信に成功するまで、それぞれ0-16回の再送を行います。
MAC ACK を使用しないときは、0x81
-0x8F
を指定します。必ず1-16回の再送を行います。
応答メッセージは、すべての再送が終了してから出力します。
0x03
:初回送信の遅延の最小値
初回送信までの遅延の最小値をミリ秒で指定できます。
0x04
:初回送信の遅延の最大値
初回送信までの遅延の最大値をミリ秒で指定できます。
0x05
:アプリケーション再送の間隔
アプリケーション再送を有効化した際の再送間隔をミリ秒で指定します。
0x06
:平行要求の許可
平行要求を許可します。
平行要求を許可すると、要求を完了するまでブロックせず、次の要求処理を受け付けることができるようになります。
例えば 0.5 秒の遅延を設定した要求を3回連続して入力した場合、初期状態では 0.5 秒後、1.0秒後、1.5秒後と順番に処理します。ところが、平行要求を許可した場合は、0.5秒後に順不同で送信要求を処理します。なおパケット分割を必要とする場合は使用できません。
0x07
:応答メッセージの無効化
送信側へデータを入力した際に出力される応答メッセージを無効とします。
0x08
:送信後スリープ
送信後、速やかに本体をスリープさせます。
RX
が立ち上がりエッジを検知すると、スリープから復帰します。何か1バイトのデータを入力してください。
スリープ復帰後、UART の初期化が終わると入力を受け付けます。
受信側の出力
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信元の論理デバイスID | 親機0x00 ,子機0x01 -0x64 ,未設定子機0x78 |
1 | uint8 | コマンド番号 | 0xA0 のみ |
2 | uint8 | 応答ID | 送信側で指定した値 |
3 | uint32 | 送信元の拡張アドレス | シリアルIDの先頭へ0x8 を加えた値 |
7 | uint32 | 送信先の拡張アドレス | 論理デバイスID使用時は0xFFFFFFFF |
11 | uint8 | LQI | 受信時の電波通信品質 |
12 | uint16 | 続くバイト列の長さ | バイト数\(M\)を表す |
14 | [uint8] | 任意のデータ | 長さ\(M\)のバイト列 |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
送信側の出力(応答メッセージ)
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信元の論理デバイスID | 0xDB のみ:自身を示す |
1 | uint8 | コマンド番号 | 0xA1 のみ |
2 | uint8 | 応答ID | 入力時に指定した値 |
3 | uint8 | 処理結果 | 成功1 ,失敗0 |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
使用例
親機から子機に対してバイト列 0x11 0x22 0x33 0xAA 0xBB 0xCC
を送信する例を示します。
論理デバイスIDを指定する例
親機から論理デバイスID0x42
の子機へ送信する例を示します。
- 応答IDは
0x01
- オプションなし
- 親機の拡張アドレスは
0x81000000
(シリアルID0x1000000
)
【送信側:親機】
:42A001FF112233AABBCC87<CR><LF> <- 入力
:DBA1010182<CR><LF> <- 出力
末尾の
0x87
はチェックサム:0x42
から0xCC
までの合計の2の補数のLSBから8ビット。
【受信側:子機】
:00A00181000000FFFFFFFFC80006112233AABBCC7D<CR><LF> <- 出力
末尾の
0x7D
はチェックサム:最初の0x00
から0xCC
までの合計の2の補数のLSBから8ビット。
拡張アドレスを指定する例
親機から拡張アドレス0x81000001
(シリアルID0x1000001
)の子機へ送信する例を示します。
- 応答IDは
0x01
- オプションなし
- 親機の拡張アドレスは
0x81000000
(シリアルID0x1000000
)
【送信側:親機】
:80A00181000001FF112233AABBCCC7<CR><LF> <- 入力
:DBA1010182<CR><LF> <- 出力
末尾の
0xC7
はチェックサム:0x80
から0xCC
までの合計の2の補数のLSBから8ビット。
【受信側:子機】
:00A0018100000081000001C80006112233AABBCCF7<CR><LF> <- 出力
末尾の
0xF7
はチェックサム:最初の0x00
から0xCC
までの合計の2の補数のLSBから8ビット。
MAC ACKを使用する例
親機から論理デバイスID0x42
の子機へ MAC ACK を使用して送信する例を示します。
- 応答IDは
0x01
- オプションは
0x01
:MAC ACKの有効化を指定 - 親機の拡張アドレスは
0x81000000
(シリアルID0x1000000
)
【送信側:親機】
:42A00101FF112233AABBCC86<CR><LF> <- 入力
:DBA1010182<CR><LF> <- 出力
末尾の
0x86
はチェックサム:0x42
から0xCC
までの合計の2の補数のLSBから8ビット。
【受信側:子機】
:00A00181000000FFFFFFFFC80006112233AABBCC7D<CR><LF> <- 出力
末尾の
0x7D
はチェックサム:0x00
から0xCC
までの合計の2の補数のLSBから8ビット。
遅延を設ける例
親機から論理デバイスID0x42
の子機へ 768ms の遅延を設けて送信する例を示します。
- 応答IDは
0x01
- オプションは
0x03
:初回送信の遅延の最小値を指定 - 親機の拡張アドレスは
0x81000000
(シリアルID0x1000000
)
【送信側:親機】
:42A001030300FF112233AABBCC81<CR><LF> <- 入力
:DBA1010182<CR><LF> <- 出力
末尾の
0x81
はチェックサム:0x42
から0xCC
までの合計の2の補数のLSBから8ビット。
【受信側:子機】
:00A00181000000FFFFFFFFC80006112233AABBCC7D<CR><LF> <- 出力
末尾の
0x7D
はチェックサム:0x00
から0xCC
までの合計の2の補数のLSBから8ビット。
0xDB
コマンド
インタラクティブモードの設定を行う代わりに、UART から 0xDB
コマンドを入力することでモジュールの操作や設定を行うことができます。
1.2.1.1 - シリアル通信アプリ 書式モード(アスキー)の 0xDB コマンド
0xDB
コマンドを使うことで、UART接続されたデバイスから動的に設定を行えます。入力の書式
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信先の論理デバイスID | 自身を示す0xDB のみ |
1 | uint8 | コマンド番号 | 後述の値から選択 |
2 | [uint8] | パラメータ | 設定値を示す長さ\(N\)のバイト列(オプション) |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
コマンド番号の一覧
機能 | |
---|---|
0xF0 | ACKの有効化 |
0xF1 | 端末情報の取得 |
0xF2 | 端末設定の適用 |
0xF3 | 端末設定の取得 |
0xF8 | 端末の制御 |
0xFD | 端末設定の消去 |
0xFE | 端末設定の保存 |
0xFF | 端末のリセット |
0xF0
:ACKの有効化
ACK 応答の要求を行います。
パラメータはありません。
応答の書式
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信先の論理デバイスID | 0xDB のみ |
1 | uint8 | コマンド番号 | 0xF0 のみ |
2 | uint8 | データ | 0x01 のみ |
uint8 | チェックサム | 0x34 :LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
0xF1
:端末情報の取得
アドレス等の情報を表示します。起動時にも出力されます。
パラメータはありません。
応答の書式
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信先の論理デバイスID | 0xDB のみ |
1 | uint8 | コマンド番号 | 0xF1 のみ |
2 | uint32 | アプリケーションID | |
6 | uint32 | バージョン番号 | 1.4.7 なら00010407 |
10 | uint8 | 論理デバイスID | |
11 | uint32 | シリアルID | |
15 | uint8 | サイレントモードの状態 | 有効1 , 無効0 |
16 | uint8 | ネットワークの状態 | UP1 , DOWN0 |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
0xF2
:端末設定の適用
設定を適用します。
応答の書式
成功した場合
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信先の論理デバイスID | 0xDB のみ |
1 | uint8 | コマンド番号 | 0xF3 のみ |
2 | [uint8] | 設定内容 | 長さ\(N\)の識別子とデータの繰り返し |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
失敗した場合
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信先の論理デバイスID | 0xDB のみ |
1 | uint8 | コマンド番号 | 0xF3 のみ |
2 | uint8 | エラー | 0xFF のみ |
uint8 | チェックサム | 0x33 :LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
0xF3
:端末設定の取得
設定を取得します。
応答の書式
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信先の論理デバイスID | 0xDB のみ |
1 | uint8 | コマンド番号 | 0xF3 のみ |
2 | [uint8] | 設定内容 | 識別子とデータの繰り返し |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
0xF8
:端末の制御
起動時にサイレントモードを有効としていた場合に、これを解除します。
0x10
を指定してください。応答の書式
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信先の論理デバイスID | 0xDB のみ |
1 | uint8 | コマンド番号 | 0xF8 のみ |
2 | uint8 | データ | 0x11 のみ |
3 | uint8 | 状態 | 解除済み1 , 未解除0 |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
0xFD
:端末設定の消去
設定を初期化し、本体をリセットします。
パラメータおよび応答はありません。
0xFE
:端末設定の保存
適用した設定を保存し、本体をリセットします。
パラメータおよび応答はありません。
0xFF
:端末のリセット
適用した設定を破棄し、本体をリセットします。
パラメータおよび応答はありません。
パラメータの一覧(0xF2
/0xF3
)
0xF2
:端末設定の適用 および 0xF3
:端末設定の取得 のパラメータは、識別子とデータ(ビッグエンディアン)の繰り返しで表現します。
識別子 | データ | 内容 |
---|---|---|
0x00 | uint32 | アプリケーションID |
0x01 | uint32 | 周波数チャネルマスク |
0x02 | uint16 | 再送回数と出力 |
0x03 | uint8 | 論理デバイスID |
0x04 | uint8 | 役割 |
0x05 | uint8 | 中継レイヤ |
0x06 | uint8 | 通信モード |
0x07 | uint32 | ボーレート |
0x08 | uint8 | パリティ |
0x09 | uint8 | 暗号化機能 |
0x0A | [uint8] | 暗号化キー |
0x0C | uint16 | 区切り文字 |
0xFF | uint8 | エラー |
0x00
:アプリケーションID
アプリケーションIDを指定します。
0x01
:周波数チャネルマスク
周波数チャネルのビットマスクを指定します。
使用するチャネルのビットを立てます。例えば、11チャネルを使う場合は1<<11
です。
0x02
:再送回数と出力
電波の送信出力と、透過モードおよびヘッダ付き透過モードにおいてパケットを追加で送信する回数を指定します。
下位の1バイトのみを使用します。そのうち上位の4ビットが再送回数(0
-9
)、下位の4ビットが送信出力(0
-3
)です。例えば、8回再送/出力3 であれば 0x0083
です。
0x03
:論理デバイスID
論理デバイスIDを指定します。
0x04
:役割
子機のみ有効です。以下の値を指定します。通常はネットワーク層を利用しない配送方式を選択してください。
ネットワーク層を利用しない配送方式
0
:通常の指定(親機または子機)1
-3
:中継子機(論理デバイスIDを1
-100
または120
とします)1
-3
の数値は最大中継段数を指します。最大中継段数まで再送を繰り返す方式のため、中継機の配置や数によっては重複したパケットを中継します。
ネットワーク層を利用する配送方式
11
:親機12
:中継機13
:子機
80
を足してください。例えば 93
は「ネットワーク層利用かつサイレントモード」です。0x05
:中継レイヤ
中継レイヤの番号です。中継機は中継レイヤ数の上位(より小さい値)の中継機・親機への接続を試みます。役割を12
としているときにだけ有効です。
0x06
:通信モード
0
:透過モード1
:書式モード(アスキー)2
:書式モード(バイナリ)3
:チャットモード4
:ヘッダ付き透過モード
0x07
:ボーレート
UART ボーレートを指定します。
0x08
:パリティ
以下の設定の組み合わせにおいて、設定値の総和を指定します。
- Bit
0
:8Bit8
:7Bit
- Parity
0
:None1
:Odd2
:Even
- Stop
0
:STOP 14
:STOP 2
例えば、7-E-1 なら 8+2+0=10(0xA)
を指定します。
0x09
:暗号化機能
暗号化機能の有無を指定します。
0
:無効1
:AES128bit の暗号化を有効
0x0A
:暗号化キー
16バイトの暗号化キーを指定します。
インタラクティブモードでは設定できないバイナリ列を格納できます。この場合、インタラクティブモードの表示が崩れる場合があります。
0x0C
:区切り文字
区切り文字列の指定を行います(0x00
-0xFF
)。
サイレントモード
0xDB
コマンドによる設定を完了してから受信を始める際に利用します。設定方法
インタラクティブモードで以下の設定を行います。
r: Role
に80
を足しておく。例えば、通常の親機や子機なら80
とする。m: UART mode
を書式モード(A
/B
)としておく。
動作確認
起動直後に出力される DB F1 応答の内容を確認します。
解除方法
DB F8 要求を行います(アスキー形式::DBF8101D<CR><LF>
)。
注意点
- サイレントモードの再設定はできません。
- サイレントモードが有効のときに送信コマンドを入力した場合の動作は未定義です。
1.2.2 - シリアル通信アプリの書式モード(バイナリ形式)
概要
送信側の端末へ特定の書式に従ったデータを入力すると、受信側の端末も特定の書式に従ったデータを出力します。
16進数で表すデータは、バイナリデータのまま表現します。
送信側の入力 | 受信側の出力 | |
---|---|---|
簡易形式/拡張形式のデータ | → | 簡易形式/拡張形式のデータ |
- TWELITE UART では、
SET
ピンをGND
へ接続して起動すると書式モード(アスキー)が有効となります。 - TWELITE / TWELITE DIP では、
EX1
ピンをGND
へ接続して起動すると書式モード(バイナリ)が有効となります。
扱うことのできる書式の形式は2種類あります。
- 簡易形式:論理デバイスIDだけを使用。超簡単!標準アプリのUART伝送機能と互換性あり
- 拡張形式:論理デバイスIDに加えて、シリアルIDや再送回数などの送信オプションを使用できる
例えば、5バイトのバイナリデータ 0x48 0x45 0x4C 0x4C 0x4F
は、簡易形式を使って次のように送信できます。
以降、バイナリデータ表現の 0x
を省略します。
例えば、0x48 0x45 0x4C 0x4C 0x4F
は 48 45 4C 4C 4F
と表します。
【送信側】
A5 5A 80 07 00 01 48 45 4C 4C 4F 43 04 <- 入力
A5 5A 80 04 DB A1 80 01 FB 04 <- 出力
【受信側】
A5 5A 80 07 78 01 48 45 4C 4C 4F 3B 04 <- 出力
基本の書式
基本形式や拡張形式で表現したデータ列を送信するときは、バイナリデータのまま扱います。
ヘッダ | 長さ | ペイロード | チェックサム | フッタ |
---|---|---|---|---|
A5 5A | ペイロード長 | 00 -FF の繰り返し | ペイロードのXOR | EOT |
- すべてバイナリ
- 先頭は
A5 5A
の2バイト - ペイロード長はバイト数を2バイトで表現、
0x8000
とORをとる - チェックサムはペイロードのXOR
- 末端は EOT を表す
0x04
(入力時は省略可) - ビッグエンディアン
例えば、バイナリデータ 00 11 22 33 AA BB CC
は次のように表現します。
A5 5A 80 07 00 11 22 33 AA BB CC DD 04
デバッグが面倒ですが、マイコン間の通信では高い効率を誇ります。
親機と子機の区別
書式モードは、親機と子機を区別します。
親子間では、アプリケーションIDと周波数チャネルを合わせる必要があります。
送信元の判別
書式モードでは、受信したデータから送信元を判別できます。
簡易形式の書式では論理デバイスIDを、拡張形式の書式では論理デバイスIDに加えて拡張アドレスを利用します。
0x8
を付加したものです。簡易形式の書式
書式モードの簡易形式を利用する場合は、次の書式に従います。
送信側の入力
# | データ | 内容 | 備考 |
---|---|---|---|
uint8 | ヘッダ | 0xA5 のみ | |
uint8 | ヘッダ | 0x5A のみ | |
uint16 | データ長 | \(N\)+2 | |
0 | uint8 | 送信先の論理デバイスID | 親機0x00 ,子機0x01 -0x64 ,全子機0x78 |
1 | uint8 | コマンド番号 | 0x80 未満の任意の値 |
2 | [uint8] | 任意のデータ | 長さ\(N\)のバイト列(\(N\leqq80\)を推奨) |
uint8 | チェックサム | XOR | |
uint8 | フッタ | EOT (0x04 ) |
受信側の出力
# | データ | 内容 | 備考 |
---|---|---|---|
uint8 | ヘッダ | 0xA5 のみ | |
uint8 | ヘッダ | 0x5A のみ | |
uint16 | データ長 | \(N\)+2 | |
0 | uint8 | 送信元の論理デバイスID | 親機0x00 ,子機0x01 -0x64 ,未設定子機0x78 |
1 | uint8 | コマンド番号 | 送信側で指定した0x80 未満の値 |
2 | [uint8] | 任意のデータ | 長さ\(N\)のバイト列 |
uint8 | チェックサム | XOR | |
uint8 | フッタ | EOT (0x04 ) |
送信側の出力(応答メッセージ)
# | データ | 内容 | 備考 |
---|---|---|---|
uint8 | ヘッダ | 0xA5 のみ | |
uint8 | ヘッダ | 0x5A のみ | |
uint16 | データ長 | 4 | |
0 | uint8 | 送信元の論理デバイスID | 0xDB のみ:自身を示す |
1 | uint8 | コマンド番号 | 0xA1 のみ |
2 | uint8 | 応答ID | 128 -255 (0x80 -0xFF )の範囲で続き番号を示す |
3 | uint8 | 処理結果 | 成功1 ,失敗0 |
uint8 | チェックサム | XOR | |
uint8 | フッタ | EOT (0x04 ) |
使用例
親機から全子機に対してバイト列 11 22 33 AA BB CC
を送信する例を示します。
【送信側:親機】
A5 5A 80 08 78 01 11 22 33 AA BB CC A4 04 <- 入力
A5 5A 80 04 DB A1 80 01 FB 04 <- 出力
末尾の
0xA4
はチェックサム:0x78
から0xCC
までのXOR。
【受信側:全子機】
A5 5A 80 08 00 01 11 22 33 AA BB CC DC 04 <- 出力
末尾の
0xDC
はチェックサム:0x00
から0xCC
までのXOR。
拡張形式の書式
書式モードの拡張形式を利用する場合は、次の書式に従います。
送信側の入力
送信先の指定に論理デバイスIDを使用する場合
# | データ | 内容 | 備考 |
---|---|---|---|
uint8 | ヘッダ | 0xA5 のみ | |
uint8 | ヘッダ | 0x5A のみ | |
uint16 | データ長 | \(N\)+\(M\)+3 | |
0 | uint8 | 送信先の論理デバイスID | 親機0x00 ,子機0x01 -0x64 ,全子機0x78 |
1 | uint8 | コマンド番号 | 0xA0 のみ |
2 | uint8 | 応答ID | 任意の値 |
3 | [uint8] | オプション | 長さ\(N\)のオプション列 |
3+\(N\) | [uint8] | 任意のデータ | 長さ\(M\)のバイト列(\(M\leqq80\)を推奨) |
uint8 | チェックサム | XOR | |
uint8 | フッタ | EOT (0x04 ) |
送信先の指定に拡張アドレスを使用する場合
# | データ | 内容 | 備考 |
---|---|---|---|
uint8 | ヘッダ | 0xA5 のみ | |
uint8 | ヘッダ | 0x5A のみ | |
uint16 | データ長 | \(N\)+\(M\)+7 | |
0 | uint8 | 拡張アドレスの指定 | 0x80 のみ |
1 | uint8 | コマンド番号 | 0xA0 のみ |
2 | uint8 | 応答ID | 任意の値 |
3 | uint32 | 送信先の拡張アドレス | シリアルIDの先頭へ0x8 を加えた値 |
7 | [uint8] | オプション | 長さ\(N\)のオプション列 |
7+\(N\) | [uint8] | 任意のデータ | 長さ\(M\)のバイト列(\(M\leqq80\)を推奨) |
uint8 | チェックサム | XOR | |
uint8 | フッタ | EOT (0x04 ) |
オプション列の詳細
拡張形式では、オプション列を指定することで細かな設定を行うことができます。
オプション列は、オプションのIDと引数の繰り返しで表現します。終端は 0xFF
とします。
0xFF
の1バイトだけを指定します。ID | 引数 | 初期値 | 内容 |
---|---|---|---|
0x01 | なし | 無効 | MAC ACKの有効化 |
0x02 | uint8 | 0x00 | アプリケーション再送の有効化 |
0x03 | uint16 | 0x0000 | 初回送信の遅延の最小値 |
0x04 | uint16 | 0x0000 | 初回送信の遅延の最大値 |
0x05 | uint16 | 10 | アプリケーション再送の間隔 |
0x06 | なし | 無効 | 平行要求の許可 |
0x07 | なし | 無効 | 応答メッセージの無効化 |
0x08 | なし | 無効 | 送信後スリープ |
0x01
:MAC ACKの有効化
MAC層のACK(確認応答)を有効化します。
頻繁にデータを送信する場合には適しませんが、信頼性を向上できる場合があります。
0x78
)とするときは利用できません。0x02
:アプリケーション再送の有効化
MAC ACK を使用するときは、0x00
-0x0F
を指定します。送信に成功するまで、それぞれ0-16回の再送を行います。
MAC ACK を使用しないときは、0x81
-0x8F
を指定します。必ず1-16回の再送を行います。
応答メッセージは、すべての再送が終了してから出力します。
0x03
:初回送信の遅延の最小値
初回送信までの遅延の最小値をミリ秒で指定できます。
0x04
:初回送信の遅延の最大値
初回送信までの遅延の最大値をミリ秒で指定できます。
0x05
:アプリケーション再送の間隔
アプリケーション再送を有効化した際の再送間隔をミリ秒で指定します。
0x06
:平行要求の許可
平行要求を許可します。
平行要求を許可すると、要求を完了するまでブロックせず、次の要求処理を受け付けることができるようになります。
例えば 0.5 秒の遅延を設定した要求を3回連続して入力した場合、初期状態では 0.5 秒後、1.0秒後、1.5秒後と順番に処理します。ところが、平行要求を許可した場合は、0.5秒後に順不同で送信要求を処理します。なおパケット分割を必要とする場合は使用できません。
0x07
:応答メッセージの無効化
送信側へデータを入力した際に出力される応答メッセージを無効とします。
0x08
:送信後スリープ
送信後、速やかに本体をスリープさせます。
RX
が立ち上がりエッジを検知すると、スリープから復帰します。何か1バイトのデータを入力してください。
スリープ復帰後、UART の初期化が終わると入力を受け付けます。
受信側の出力
# | データ | 内容 | 備考 |
---|---|---|---|
uint8 | ヘッダ | 0xA5 のみ | |
uint8 | ヘッダ | 0x5A のみ | |
uint16 | データ長 | \(M\)+14 | |
0 | uint8 | 送信元の論理デバイスID | 親機0x00 ,子機0x01 -0x64 ,未設定子機0x78 |
1 | uint8 | コマンド番号 | 0xA0 のみ |
2 | uint8 | 応答ID | 送信側で指定した値 |
3 | uint32 | 送信元の拡張アドレス | シリアルIDの先頭へ0x8 を加えた値 |
7 | uint32 | 送信先の拡張アドレス | 論理デバイスID使用時は0xFFFFFFFF |
11 | uint8 | LQI | 受信時の電波通信品質 |
12 | uint16 | 続くバイト列の長さ | バイト数\(M\)を表す |
14 | [uint8] | 任意のデータ | 長さ\(M\)のバイト列 |
uint8 | チェックサム | XOR | |
uint8 | フッタ | EOT (0x04 ) |
送信側の出力(応答メッセージ)
# | データ | 内容 | 備考 |
---|---|---|---|
uint8 | ヘッダ | 0xA5 のみ | |
uint8 | ヘッダ | 0x5A のみ | |
uint16 | データ長 | 4 | |
0 | uint8 | 送信元の論理デバイスID | 0xDB のみ:自身を示す |
1 | uint8 | コマンド番号 | 0xA1 のみ |
2 | uint8 | 応答ID | 入力時に指定した値 |
3 | uint8 | 処理結果 | 成功1 ,失敗0 |
uint8 | チェックサム | XOR | |
uint8 | フッタ | EOT (0x04 ) |
使用例
親機から子機に対してバイト列 11 22 33 AA BB CC
を送信する例を示します。
論理デバイスIDを指定する例
親機から論理デバイスID0x01
の子機へ送信する例を示します。
- 応答IDは
0x01
- オプションなし
【送信側:親機】
A5 5A 80 0A 01 A0 01 FF 11 22 33 AA BB CC 82 04 <- 入力
A5 5A 80 04 DB A1 01 01 7A 04 <- 出力
末尾の
0xC1
はチェックサム:0x42
から0xCC
までのXOR。
【受信側:子機】
A5 5A 80 14 00 A0 01 82 03 68 41 FF FF FF FF FF 00 06 11 22 33 AA BB CC 2D 04 <- 出力
末尾の
0x2D
はチェックサム:0x00
から0xCC
までのXOR。
拡張アドレスを指定する例
親機から拡張アドレス0x820163B2
(シリアルID0x20163B2
)の子機へ送信する例を示します。
- 応答IDは
0x01
- オプションなし
【送信側:親機】
A5 5A 80 0E 80 A0 01 82 01 63 B2 FF 11 22 33 AA BB CC 51 04 <- 入力
A5 5A 80 04 DB A1 01 01 7A 04 <- 出力
末尾の
0x51
はチェックサム:0x80
から0xCC
までのXOR。
【受信側:子機】
A5 5A 80 14 00 A0 01 82 03 68 41 82 01 63 B2 FF 00 06 11 22 33 AA BB CC 7F 04 <- 出力
末尾の
0x7F
はチェックサム:0x00
から0xCC
までのXOR。
MAC ACKを使用する例
親機から論理デバイスID0x01
の子機へ MAC ACK を使用して送信する例を示します。
- 応答IDは
0x01
- オプションは
0x01
:MAC ACKの有効化を指定
【送信側:親機】
A5 5A 80 0B 01 A0 01 01 FF 11 22 33 AA BB CC 83 04 <- 入力
A5 5A 80 04 DB A1 01 01 7A 04 <- 出力
末尾の
0x83
はチェックサム:0x01
から0xCC
までのXOR。
【受信側:子機】
A5 5A 80 14 00 A0 01 82 03 68 41 00 00 01 01 FF 00 06 11 22 33 AA BB CC 2D 04 <- 出力
末尾の
0x2D
はチェックサム:0x00
から0xCC
までのXOR。
遅延を設ける例
親機から論理デバイスID0x01
の子機へ 768ms の遅延を設けて送信する例を示します。
- 応答IDは
0x01
- オプションは
0x03
:初回送信の遅延の最小値を指定
【送信側:親機】
A5 5A 80 0D 01 A0 01 03 03 00 FF 11 22 33 AA BB CC 82 04 <- 入力
A5 5A 80 04 DB A1 01 01 7A 04 <- 出力
末尾の
0x82
はチェックサム:0x01
から0xCC
までのXOR。
【受信側:子機】
A5 5A 80 14 00 A0 01 82 03 68 41 FF FF FF FF FF 00 06 11 22 33 AA BB CC 2D 04 <- 出力
末尾の
0x2D
はチェックサム:0x00
から0xCC
までのXOR。
0xDB
コマンド
インタラクティブモードの設定を行う代わりに、UART から 0xDB
コマンドを入力することでモジュールの操作や設定を行うことができます。
1.2.2.1 - シリアル通信アプリ 書式モード(バイナリ)の 0xDB コマンド
0xDB
コマンドを使うことで、UART接続されたデバイスから動的に設定を行えます。入力の書式
# | データ | 内容 | 備考 |
---|---|---|---|
uint8 | ヘッダ | 0xA5 のみ | |
uint8 | ヘッダ | 0x5A のみ | |
uint16 | データ長 | \(N\)+2 | |
0 | uint8 | 送信先の論理デバイスID | 自身を示す0xDB のみ |
1 | uint8 | コマンド番号 | 後述の値から選択 |
2 | [uint8] | パラメータ | 設定値を示す長さ\(N\)のバイト列(オプション) |
uint8 | チェックサム | XOR | |
uint8 | フッタ | EOT (0x04 ) |
コマンド番号の一覧
機能 | |
---|---|
0xF0 | ACKの有効化 |
0xF1 | 端末情報の取得 |
0xF2 | 端末設定の適用 |
0xF3 | 端末設定の取得 |
0xF8 | 端末の制御 |
0xFD | 端末設定の消去 |
0xFE | 端末設定の保存 |
0xFF | 端末のリセット |
0xF0
:ACKの有効化
ACK 応答の要求を行います。
パラメータはありません。
応答の書式
# | データ | 内容 | 備考 |
---|---|---|---|
uint8 | ヘッダ | 0xA5 のみ | |
uint8 | ヘッダ | 0x5A のみ | |
uint16 | データ長 | 3 | |
0 | uint8 | 送信先の論理デバイスID | 0xDB のみ |
1 | uint8 | コマンド番号 | 0xF0 のみ |
2 | uint8 | データ | 0x01 のみ |
uint8 | チェックサム | XOR | |
uint8 | フッタ | EOT (0x04 ) |
0xF1
:端末情報の取得
アドレス等の情報を表示します。起動時にも出力されます。
パラメータはありません。
応答の書式
# | データ | 内容 | 備考 |
---|---|---|---|
uint8 | ヘッダ | 0xA5 のみ | |
uint8 | ヘッダ | 0x5A のみ | |
uint16 | データ長 | 17 | |
0 | uint8 | 送信先の論理デバイスID | 0xDB のみ |
1 | uint8 | コマンド番号 | 0xF1 のみ |
2 | uint32 | アプリケーションID | |
6 | uint32 | バージョン番号 | 1.4.7 なら00010407 |
10 | uint8 | 論理デバイスID | |
11 | uint32 | シリアルID | |
15 | uint8 | サイレントモードの状態 | 有効1 , 無効0 |
16 | uint8 | ネットワークの状態 | UP1 , DOWN0 |
uint8 | チェックサム | XOR | |
uint8 | フッタ | EOT (0x04 ) |
0xF2
:端末設定の適用
設定を適用します。
応答の書式
成功した場合
# | データ | 内容 | 備考 |
---|---|---|---|
uint8 | ヘッダ | 0xA5 のみ | |
uint8 | ヘッダ | 0x5A のみ | |
uint16 | データ長 | \(N\)+2 | |
0 | uint8 | 送信先の論理デバイスID | 0xDB のみ |
1 | uint8 | コマンド番号 | 0xF3 のみ |
2 | [uint8] | 設定内容 | 長さ\(N\)の識別子とデータの繰り返し |
uint8 | チェックサム | XOR | |
uint8 | フッタ | EOT (0x04 ) |
失敗した場合
# | データ | 内容 | 備考 |
---|---|---|---|
uint8 | ヘッダ | 0xA5 のみ | |
uint8 | ヘッダ | 0x5A のみ | |
uint16 | データ長 | 3 | |
0 | uint8 | 送信先の論理デバイスID | 0xDB のみ |
1 | uint8 | コマンド番号 | 0xF3 のみ |
2 | uint8 | エラー | 0xFF のみ |
uint8 | チェックサム | XOR | |
uint8 | フッタ | EOT (0x04 ) |
0xF3
:端末設定の取得
設定を取得します。
応答の書式
# | データ | 内容 | 備考 |
---|---|---|---|
uint8 | ヘッダ | 0xA5 のみ | |
uint8 | ヘッダ | 0x5A のみ | |
uint16 | データ長 | \(N\)+2 | |
0 | uint8 | 送信先の論理デバイスID | 0xDB のみ |
1 | uint8 | コマンド番号 | 0xF3 のみ |
2 | [uint8] | 設定内容 | 長さ\(N\)の識別子とデータの繰り返し |
uint8 | チェックサム | XOR | |
uint8 | フッタ | EOT (0x04 ) |
0xF8
:端末の制御
起動時にサイレントモードを有効としていた場合に、これを解除します。
0x10
を指定してください。応答の書式
# | データ | 内容 | 備考 |
---|---|---|---|
uint8 | ヘッダ | 0xA5 のみ | |
uint8 | ヘッダ | 0x5A のみ | |
uint16 | データ長 | 4 | |
0 | uint8 | 送信先の論理デバイスID | 0xDB のみ |
1 | uint8 | コマンド番号 | 0xF8 のみ |
2 | uint8 | データ | 0x11 のみ |
3 | uint8 | 状態 | 解除済み1 , 未解除0 |
uint8 | チェックサム | XOR | |
uint8 | フッタ | EOT (0x04 ) |
0xFD
:端末設定の消去
設定を初期化し、本体をリセットします。
パラメータおよび応答はありません。
0xFE
:端末設定の保存
適用した設定を保存し、本体をリセットします。
パラメータおよび応答はありません。
0xFF
:端末のリセット
適用した設定を破棄し、本体をリセットします。
パラメータおよび応答はありません。
パラメータの一覧(0xF2
/0xF3
)
0xF2
:端末設定の適用 および 0xF3
:端末設定の取得 のパラメータは、識別子とデータ(ビッグエンディアン)の繰り返しで表現します。
識別子 | データ | 内容 |
---|---|---|
0x00 | uint32 | アプリケーションID |
0x01 | uint32 | 周波数チャネルマスク |
0x02 | uint16 | 再送回数と出力 |
0x03 | uint8 | 論理デバイスID |
0x04 | uint8 | 役割 |
0x05 | uint8 | 中継レイヤ |
0x06 | uint8 | 通信モード |
0x07 | uint32 | ボーレート |
0x08 | uint8 | パリティ |
0x09 | uint8 | 暗号化機能 |
0x0A | [uint8] | 暗号化キー |
0x0C | uint16 | 区切り文字 |
0xFF | uint8 | エラー |
0x00
:アプリケーションID
アプリケーションIDを指定します。
0x01
:周波数チャネルマスク
周波数チャネルのビットマスクを指定します。
使用するチャネルのビットを立てます。例えば、11チャネルを使う場合は1<<11
です。
0x02
:再送回数と出力
電波の送信出力と、透過モードおよびヘッダ付き透過モードにおいてパケットを追加で送信する回数を指定します。
下位の1バイトのみを使用します。そのうち上位の4ビットが再送回数(0
-9
)、下位の4ビットが送信出力(0
-3
)です。例えば、8回再送/出力3 であれば 0x0083
です。
0x03
:論理デバイスID
論理デバイスIDを指定します。
0x04
:役割
子機のみ有効です。以下の値を指定します。通常はネットワーク層を利用しない配送方式を選択してください。
ネットワーク層を利用しない配送方式
0
:通常の指定(親機または子機)1
-3
:中継子機(論理デバイスIDを1
-100
または120
とします)1
-3
の数値は最大中継段数を指します。最大中継段数まで再送を繰り返す方式のため、中継機の配置や数によっては重複したパケットを中継します。
ネットワーク層を利用する配送方式
11
:親機12
:中継機13
:子機
80
を足してください。例えば 93
は「ネットワーク層利用かつサイレントモード」です。0x05
:中継レイヤ
中継レイヤの番号です。中継機は中継レイヤ数の上位(より小さい値)の中継機・親機への接続を試みます。役割を12
としているときにだけ有効です。
0x06
:通信モード
0
:透過モード1
:書式モード(バイナリ)2
:書式モード(バイナリ)3
:チャットモード4
:ヘッダ付き透過モード
0x07
:ボーレート
UART ボーレートを指定します。
0x08
:パリティ
以下の設定の組み合わせにおいて、設定値の総和を指定します。
- Bit
0
:8Bit8
:7Bit
- Parity
0
:None1
:Odd2
:Even
- Stop
0
:STOP 14
:STOP 2
例えば、7-E-1 なら 8+2+0=10(0xA)
を指定します。
0x09
:暗号化機能
暗号化機能の有無を指定します。
0
:無効1
:AES128bit の暗号化を有効
0x0A
:暗号化キー
16バイトの暗号化キーを指定します。
インタラクティブモードでは設定できないバイナリ列を格納できます。この場合、インタラクティブモードの表示が崩れる場合があります。
0x0C
:区切り文字
区切り文字列の指定を行います(0x00
-0xFF
)。
サイレントモード
0xDB
コマンドによる設定を完了してから受信を始める際に利用します。設定方法
インタラクティブモードで以下の設定を行います。
r: Role
に80
を足しておく。例えば、通常の親機や子機なら80
とする。m: UART mode
を書式モード(A
/B
)としておく。
動作確認
起動直後に出力される DB F1 応答の内容を確認します。
解除方法
DB F8 要求を行います(バイナリ形式:A5 5A 80 03 DB F8 10 33 04
)。
注意点
- サイレントモードの再設定はできません。
- サイレントモードが有効のときに送信コマンドを入力した場合の動作は未定義です。
1.2.3 - シリアル通信アプリのチャットモード
MONOSTICK を PC 等へ接続することで、複数の端末同士のチャットを行うことができます。
概要
テキストチャットを実現します。
送信側の入力 | 受信側の出力 | |
---|---|---|
任意の文字列 | → | 任意の文字列+補助情報 |
プロンプトの表示とエコーバック(入力した文字の出力)を行います。すべての端末は子機として、同報通信を行います。
例えば、ある端末から他の端末へ Hello
という文字列を送信する場合は、次のように振る舞います。
【送信側】
810A4778:0> Hello <- 入力
810A4778:1> <- 出力
【受信側】
[810A4778:0] Hello <- 出力
82018CA0:0> <- 出力
チャットモードは、プロンプトの表示とエコーバック(自身へ入力された文字の出力)を行います。
全ての端末は子機としたうえで、送信内容はブロードキャストします。すべての端末と通信できますが宛て先は指定できません。またバイナリデータは送れません。文字列のみ対応しています(0x00
-0x1F
, 0x7F
は送信不可)。
中継は3段(3ホップ)まで対応しています。初期設定では中継しません。
親機と子機の区別
チャットモードは、親機と子機を区別しません。
アプリケーションIDと周波数チャネルが同一であれば、どの端末へ入力したデータもほかの端末へと送信されます。
送信元の判別
受信側に出力される補助情報の識別情報から送信元を判別できます。
インタラクティブモードのh: Header format
を空欄としたときは、7桁のシリアルIDの先頭へ0x8
を付与した拡張アドレスを使用します。例えば、以下の出力では送信元のシリアルIDが0x10A4778
であったと分かります。
[810A4778:0] Hello
インタラクティブモードのh: Header format
へ任意の文字列を設定したときは、それをハンドル名として利用します。ただし、ハンドル名は無線パケットに格納するデータを消費します。
送信側の入力書式
プロンプトに続けて、メッセージと改行文字を入力します。
データ | 内容 | 備考 |
---|---|---|
[char] | メッセージ | 0x00 -0x1F , 0x7F は不可 |
char | CR (0x0D /'\r' ) | 単体でも可 |
char | LF (0x0A /'\n' ) | 単体でも可 |
810A4778:0> Hello
受信側の出力書式
補助情報に続けて、受信したメッセージを出力します。
補助情報は、モジュールの拡張アドレスまたはハンドル名と、続き番号を含みます。
データ | 内容 | 備考 |
---|---|---|
char | 補助情報のヘッダ | [ のみ |
[char] | 識別情報 | 8桁の拡張アドレスまたはハンドル名 |
char | 補助情報の区切り文字 | : のみ |
[char] | 続き番号 | 0 から開始 |
char | 補助情報のフッタ | ] のみ |
char | 区切り文字 | 半角スペースのみ |
[char] | メッセージ | |
char | フッタ | CR (0x0D /'\r' ) |
char | フッタ | LF (0x0A /'\n' ) |
(err)
(canceled)
といった ()
書きのメッセージを出力します。
[810A4778:0] Hello
その他の入力
エスケープシーケンスに対応したターミナルでは、以下の制御コマンドを使用できます。
Ctrl-L
:画面のクリアCtrl-C
:入力のキャンセルBS
/DEL
:カーソルを戻す
1.2.4 - シリアル通信アプリの透過モード
外部マイコン同士を簡単に接続できますが、書式を用いて通信を最適化するには書式モード(アスキー/バイナリ)が適しています。
概要
純粋にUARTを無線化します。
送信側の入力 | 受信側の出力 | |
---|---|---|
任意のデータ | → | 任意のデータ |
書式を必要としないため、既存の UART 通信を簡単に無線化できます。
一方で、データの区切りがあいまいになってしまうほか、受信側の出力から送信元を判別できないといった欠点があります。
初期状態では、送信トリガ文字にCRLFを指定しています。したがって、送信側へ入力されたデータをCRLFで区切り、CRLF よりも前のデータを送信します。
例えば、送信側の端末へ Hello<Enter>
と入力すると、受信側の端末はそのまま Hello
を出力します。
【送信側】
Hello <- 入力
【受信側】
Hello <- 出力
連続して入力された文字列を80バイトごとに分割して送信します。トリガ文字までのデータは通常80バイト以下としてください。
全ての端末は子機としたうえで、送信内容はブロードキャストします。すべての端末と通信できますが宛て先は指定できません。アスキー文字だけでなく、バイナリデータも送信できます。
中継は3段(3ホップ)まで対応しています。初期設定では中継しません。
親機と子機の区別
透過モードは、親機と子機を区別しません。
アプリケーションIDと周波数チャネルが同一であれば、どの端末へ入力したデータもほかの端末へと送信されます。
送信元の判別
透過モードでは、送信元を判別できません。
送信元を判別するには、送信側へ入力するデータそのものに送信元の情報を含める必要があります。
送信トリガ
送信側の入力に書式はありませんが、データはある時点で分割されたのち、パケットごとに無線で送信されます。
したがって、次に挙げる送信トリガを意識しなくてはなりません。
- データ入力後のタイムアウトを迎えたとき
- 入力データが最小データサイズを満たしたとき
- 送信トリガ文字を受け取ったとき
送信トリガの優先順位
送信トリガの設定は、インタラクティブモードのk
:送信トリガ項目から指定します。
設定例
送信トリガ文字をLF、最小データサイズを8バイト、タイムアウトを30msとする場合は次のように設定します。
m: set UART mode (D)
k: set Tx Trigger (sep=0x0a, min_bytes=8 dly=30[ms])
o: set option bits (0x00000100)
1.2.5 - シリアル通信アプリのヘッダ付き透過モード
概要
初期状態で有効となっています。
送信側の端末へ任意のデータを入力すると、受信側の端末は受信した内容に特定の書式で補助情報を付加したデータを出力します。
送信側の入力 | 受信側の出力 | |
---|---|---|
任意のデータ | → | 任意のデータ+補助情報 |
初期状態では、送信側へ入力されたデータをCRLFで区切り、CRLF よりも前のデータを送信します。
例えば、送信側の端末へ Hello<Enter>
と入力すると、受信側の端末は補助情報を含んだ書式で Hello
を出力します。送信側の端末も送信完了といったメッセージを伝える書式を出力します。
【送信側】
Hello <- 入力
;U;00004;219;0x820163B2;000;000;0,1,Hel...;6E; <- 出力
【受信側】
;U;00003;000;0x820163B2;255;000;Hello;42; <- 出力
受信側が出力する補助情報は、送信元のアドレスや受信時の電波強度、チェックサム等を含みます。補助情報の書式はカスタマイズできます。
親機と子機の区別
ヘッダ付き透過モードは、親機と子機を区別しません。
アプリケーションIDと周波数チャネルが同一であれば、どの端末へ入力したデータもほかの端末へと送信されます。
送信元の判別
ヘッダ付き透過モードで受信したデータからは、送信元を判別できます。
受信側が出力する補助情報を表すヘッダに含むことのできる論理デバイスIDやシリアルIDのデータを利用します。
受信側の出力書式
出力書式はセミコロン(;
)区切りとして表現されます。
【初期状態における出力例】
;U;00777;120;0x81025A17;120;013;HELLO;79;
この出力例は、次のように解釈できます。
データ | 内容 | 値 | |
---|---|---|---|
U | char | 固定値 | U |
00777 | uint16 | 出力時のタイムスタンプ | 777 秒 |
120 | uint8 | 送信元の論理デバイスID | 120 IDなし子機 |
0x81025A17 | uint32 | 送信元の拡張アドレス | 81025A17 |
120 | uint8 | LQI(電波通信品質) | 120/255 |
013 | uint8 | 送信元の続き番号 | 13 |
HELLO | [uint8] | 入力データ | HELLO |
79 | uint8 | XORチェックサム | 0x79 |
送信元の論理デバイスIDは、自身の応答メッセージのとき219
となります。
拡張アドレスは、TWELITE 本体に記載された7ビットのシリアルIDの先頭へ0x8
を付加したものです。
ヘッダフォーマットによるカスタマイズ
受信側の出力書式は、ヘッダフォーマットに従います。
ヘッダフォーマットを変更することで、受信側が出力する補助情報の内容やチェックサムの計算範囲をカスタマイズできます。
;U;%t;%i;0x%A;%q;%s;<*;%X;\n
としています。ヘッダフォーマットの変更は、インタラクティブモードの h: set header format
から行います。
最も簡単な書式
最も簡単な書式を表すヘッダフォーマットは *\n
です。受信したデータへ CRLF の改行文字を付与して出力します。
h: set header format [*\n]
この場合にHELLO
を送信すると、次のように振る舞います。
【受信側】
HELLO<CR><LF> または HELLO<LF>
【送信側】
HELLO<CR><LF>
フォーマットを構成する特殊文字
ヘッダフォーマットに次の特殊文字を含めることで、出力内容をカスタマイズできます。
全般
内容 | |
---|---|
* | 受信したデータ |
&hl | 任意の文字(アスキー)(例:&20 は空白) |
< | チェックサム計算の開始位置(未設定で先頭から) |
> | チェックサム計算の終了位置(v1.4.6以降のみ) |
\
(バックスラッシュ・¥)に続くもの
内容 | |
---|---|
\n | CRLF (0x0D 0x0A ) |
\t | TAB |
\* | * |
\% | % |
\< | < |
\> | > |
\& | & |
%
に続くもの
内容 | 長さ | データ | |
---|---|---|---|
%A | 送信元アドレス(32bit) | 8桁 | 16進数 |
%a | 送信元アドレス(32bit) | 10桁 | 16進数 |
%I | 送信元論理アドレス(8bit) | 2桁 | 16進数 |
%i | 送信元論理アドレス(8bit) | 3桁 | 10進数 |
%T | 現在のシステム時間(秒) | 4桁 | 16進数 |
%t | 現在のシステム時間(秒) | 5桁 | 10進数 |
%S | 送信元が設定した続き番号 | 2桁 | 16進数 |
%s | 送信元が設定した続き番号 | 3桁 | 16進数 |
%Q | 受信時の電波強度 | 2桁 | 16進数 |
%q | 受信時の電波強度 | 3桁 | 10進数 |
%X | チェックサム | 2桁 | 16進数 |
%x | チェックサム | 3桁 | 10進数 |
チェックサムの計算
チェックサムはデータの先頭あるいはヘッダフォーマットの<
を指定した箇所から%X
,%x
の直前までを XOR(排他的論理和)にて計算します。
初期状態の例
初期状態ではヘッダフォーマットを ;U;%t;%i;0x%A;%q;%s;<*;%X;\n
としており、チェックサムの計算範囲は*;
です。
すなわち、HELLO
を送信した場合は HELLO;
のバイナリデータを対象とするため、チェックサムは0x79
です。
【Python による検証コード】
from functools import reduce
def main():
data = "HELLO;"
checksum = reduce(lambda x, y: x ^ y, data.encode("ascii"))
print(f"{data} -> {hex(checksum)}")
if __name__ == "__main__":
main() # HELLO; -> 0x79
その他の例
例えば、ヘッダフォーマットを ;%I;*;%X
とした場合を考えます。
<
を指定していないため、チェックサムの計算範囲は;%I;*;
です。
すなわち、HELLO
を送信した場合は ;000;HELLO;
のバイナリデータを対象とするため、チェックサムは 0x49
です。
【Python による検証コード】
from functools import reduce
def main():
data = ";000;HELLO;"
checksum = reduce(lambda x, y: x ^ y, data.encode("ascii"))
print(f"{data} -> {hex(checksum)}")
if __name__ == "__main__":
main() # ;000;HELLO; -> 0x49
送信トリガ
送信側の入力に書式はありませんが、データはある時点で分割されたのち、パケットごとに無線で送信されます。
したがって、次に挙げる送信トリガを意識しなくてはなりません。
- データ入力後のタイムアウトを迎えたとき
- 入力データが最小データサイズを満たしたとき
- 送信トリガ文字を受け取ったとき
送信トリガの優先順位
送信トリガの設定は、インタラクティブモードのk
:送信トリガ項目から指定します。
設定例
送信トリガ文字をLF、最小データサイズを8バイト、タイムアウトを30msとする場合は次のように設定します。
m: set UART mode (E)
k: set Tx Trigger (sep=0x0a, min_bytes=8 dly=30[ms])
o: set option bits (0x00000100)
1.3 - シリアル通信アプリのカスタムデフォルト機能
例えば、ボーレートを 115200bps から 9600bps へ変更したファームウェアを作成しておけば、最初から 9600bps で使用できます。
設定手順
1. 設定を適用
インタラクティブモードの設定を変更し、S
を押下して保存します。
2. 設定内容をダウンロード
xmodem プロトコルのデータをダウンロードできるソフトウェアを用意します。
再度インタラクティブモードへ入った状態(項目を選ぶ前の状態)として、xmodem のダウンロードを要求します。
TeraTerm では、次の操作を行います。
ファイル > 転送 > XMODEM > 受信...
を選択Option > Checksum, Binary
を選択- ファイル名を指定(例:
conf.bin
) 開く
ボタンを押下
macOS や Linux 等では、lrzsz
を利用できます。
lrx --binary --xmodem /path/to/conf.bin
通常は
screen
でインタラクティブモードへ入り、Ctrl+A
の押下後:exec !! lrx -b -X /path/to/conf.bin
を実行します
ダウンロードに成功すると、128バイトのファイルを生成します(xmodem の実装によっては、小さいサイズになることもあります)。
3. カスタムバイナリの作成
ダウンロードしたファイルをファームウェアのバイナリファイルの末尾へ連結し、カスタムバイナリを作成します。
連結には、コマンドラインツールや汎用のファイル連結ツールを使用してください。
実行例
ダウンロードした xmodem のファイルを conf.bin
、元のバイナリファイルをApp_Uart_BLUE_L1305_V1-4-X.bin
、作成するカスタムバイナリをApp_Uart_custom_V1-4-X.bin
とした場合の例を示します。
【Windows】
copy App_Uart_BLUE_L1305_V1-4-X.bin App_Uart_custom_V1-4-X.bin
type conf.bin >> App_Uart_custom_V1-4-X.bin
【macOS / Linux】
cat App_Uart_BLUE_L1305_V1-4-X.bin conf.bin > App_Uart_custom_V1-4-X.bin
4. カスタムバイナリの書き込み
連結したカスタムバイナリを TWELITE へ書き込みます。
カスタムバイナリを書き込んでからインタラクティブモードへ入ると、最初の行の末尾に C-
を表示します。
--- CONFIG/TWE UART APP V1-04-2/SID=0x81001f1c/LID=0x78 C- ---
カスタムバイナリに対してインタラクティブモードから設定を上書きして保存すると、C-
の代わりにCE
と表示します。
--- CONFIG/TWE UART APP V1-04-2/SID=0x81001f1c/LID=0x78 CE ---
1.4 - シリアル通信アプリの通信における注意点
UART のデータ入出力
UART の入力には、入力側に 4KB、出力側に 4KB のバッファを確保しています。2系統のUARTを出力する場合は、各系統の入力に 2KB、出力に 2KB を利用します。
書式モードやチャットモードでバッファのサイズを意識する場面は多くありませんが、ヘッダ付き透過モードや透過モードで連続的に系列を入力する場合や、書式モードであっても多数の系列を一度に入力する場合は、バッファサイズの上限を意識する必要があります。出力においても、遅いボーレートを設定した場合には、無線で受信したデータの出力が間に合わない可能性があります。
バッファの上限を超えた場合は、その境界でのデータは保護されません。データ抜けが発生します。特に入力側では後述のフロー制御ピンを参照することを検討してください。
UART のフロー制御
入力側のフロー制御については、 RTS ピン同様の振る舞いをするように実装しています。使用するピンは PWM1
(DIO5
) であり、その対象は主UARTポートです。入力を受け付けないときに High、入力を受け付けるときに Low 状態となります。なお出力側のフロー制御には対応していません。受信側のデバイスでは、十分なボーレートと処理速度を確保してください。
- 電源投入・リセット直後は High です。UART が初期化されると Low。
- UART の入力バッファが 7/8 を超えたときに High となります。下回ると Low。
- 透過モードでは、パケット送信中は High となります。
無線通信エラーの対策
受信側にデータ抜けが発生する場合は、無線の再送回数を増やしてください。
追加送信するパケットの数を増やすことで、受信の成功率を向上できる場合があります。
再送回数はインタラクティブモードで設定できます(x: set RF Conf
)。
1.5 - インタラクティブモード(シリアル通信アプリ)
ここではシリアル通信アプリ(App_Uart)に固有の機能を説明します。共通機能については、TWELITE APPS マニュアル のトップページを参照してください。
TWELITE がスリープしている間はインタラクティブモードを使用できません。
M3
ピンをGND
へ接続していないことを確認してください。
表示例
次のような画面を表示します。
--- CONFIG/TWE UART APP V1-04-5/SID=0x82018ca0/LID=0x78 -- ---
a: set Application ID (0x67720103)
i: set Device ID (120=0x78)
c: set Channels (18)
x: set RF Conf (3)
r: set Role (0x0)
l: set Layer (0x1)
b: set UART baud (38400)
B: set UART option (8N1)
m: set UART mode (E)
k: set Tx Trigger (sep=0x0d0a, min_bytes=0 dly=0[ms])
h: set header format [;U;%t;%i;0x%A;%q;%s;<*>;%X;\n]
C: set crypt mode (0)
o: set option bits (0x00000100)
---
S: save Configuration
R: reset to Defaults
コマンド
設定項目 | 初期値 | 備考 | |
---|---|---|---|
a | アプリケーションID | 0x67720103 | 32bit |
i | 論理デバイスID | 120 | 親機0 /121 ,子機1 -100 ,IDなし子機120 |
c | 周波数チャネル | 18 | 11 -26 |
x | 再送回数と送信出力 | 3 | |
再送回数 | 0 | 1 -9 回、0 は無効 | |
送信出力 | 3 | 0 -3 | |
r | 役割 | 0 | 通常0 ,中継子機1 -3 ,その他 |
l | 中継レイヤ | 0x01 | |
b | UART代替ボーレート | 38400 | BPS ピンで有効化 |
B | UARTオプション | 8N1 | |
m | 通信モード | E | A /B /C /D /E |
k | 送信トリガ | 0x0d0a,0,0 | トリガ文字、最小サイズ、タイムアウト |
h | ヘッダ/ハンドル名 | 参照 | |
ヘッダ | ヘッダ付き透過モードの場合 | ||
ハンドル名 | チャットモードの場合 | ||
C | 暗号化 | 0 | 無効0 ,AES128bit1 |
o | オプションビット | 0x00000000 | その他の詳細設定 |
各コマンドの詳細を次に示します。
a
:アプリケーションID
通信を行う端末はすべて同一の値とします。論理的にネットワークを分離します。
i
:論理デバイスID
複数の子機を識別する必要がある場合に設定します。
識別の必要がない、できない場合は120
としてください。識別の必要がある場合は、子機は1
-100
の任意の値に、親機は0
あるいは121
としてください。
c
:周波数チャネル
通信を行う端末はすべて同一の値とします。物理的にネットワークを分離します。
x
:送信出力と再送回数
電波の送信出力と、透過モードおよびヘッダ付き透過モードにおいてパケットを追加で送信する回数を指定します。
r
:役割
子機のみ有効です。以下の値を指定します。通常はネットワーク層を利用しない配送方式を選択してください。
ネットワーク層を利用しない配送方式
0
:通常の指定(親機または子機)1
-3
:中継子機(論理デバイスIDを1
-100
または120
とします)1
-3
の数値は最大中継段数を指します。最大中継段数まで再送を繰り返す方式のため、中継機の配置や数によっては重複したパケットを中継します。
ネットワーク層を利用する配送方式
書式モードのみ対応しています。
11
:親機12
:中継機13
:子機
80
を足してください。例えば 93
は「ネットワーク層利用かつサイレントモード」です。l
:中継レイヤ
中継レイヤの番号です。中継機は中継レイヤ数の上位(より小さい値)の中継機・親機への接続を試みます。役割を12
としているときにだけ有効です。
m
:通信モード
A
:書式モード(アスキー)B
:書式モード(バイナリ)C
:チャットモードD
:透過モードE
:ヘッダ付き透過モード
b
:UART代替ボーレート
BPS
ピンをGND
へ接続して起動した場合に選択される代替ボーレートを38400
bpsから上書きします。
値は9600
/19200
/38400
/57600
/115200
/230400
から選択できます。他の値を指定すると、誤差が生じる可能性があります。
BPS
ピンを開放して起動した場合、この設定は適用されません。115200
bpsに固定されます。
BPS
ピンの状態を無視して強制的に代替ボーレート設定を適用するには、オプションビットの強制的に代替ボーレートを適用を有効とします。
B
:UARTオプション
Bit-Parity-Stop
の順で3文字を指定します。
- Bit
8
:8Bit7
:7Bit
- Parity
N
:NoneO
:OddE
:Even
- Stop
1
:STOP 12
:STOP 2
k
:送信トリガ
透過モードとヘッダ付き透過モードの入力へ適用する送信トリガを設定します。
カンマ,
で区切り、以下の順で入力してください。
送信トリガ文字
この文字が入力されたときにパケットを送信します(最小データサイズを満たしていない場合を除く)。
インタラクティブモードでは、16進数のASCIIコードを指定します。先頭の0x
は無視されます。初期状態ではCRLFとしています。
送信されるデータには送信トリガ文字も含まれます。送信トリガ文字を有効とするには、オプションビット 0x00000100
を指定する必要があります(デフォルト指定済み)。
最小データサイズ
連続して扱うデータの最小サイズを指定します。最小データサイズを満たすまでのデータに送信トリガ文字が含まれていても、これは無効となります。
インタラクティブモードでは、バイト数として1
-80
の数値を指定します。0
で無効となります。初期状態では無効です。
タイムアウト
最後の入力からパケットを送信するまでの待ち時間を示します。
インタラクティブモードでは、ミリ秒単位で10
-200
の数値を指定します。0
で無効となります。初期状態では無効
すべての設定を有効とした場合の優先順位は次の通りです。
- タイムアウト
- 最小データサイズ
- 送信トリガ文字
タイムアウトが設定されていれば、常に優先します。送信トリガ文字が設定されていても、最小データサイズに達するまでは送信されません。
h
:ヘッダ/ハンドル名
ヘッダ付き透過モードに対してはヘッダのフォーマットを、チャットモードに対してはハンドル名を示します。
ヘッダ(ヘッダ付き透過モード)
ヘッダ付き透過モードに対しては、ヘッダのフォーマット書式を指定します。
ハンドル名(チャットモード)
相手端末に表示するハンドル名を指定します。
最大23文字です。送信するデータ(80バイト)の領域を消費します。
C
:暗号化
暗号化機能の有無を指定します。
AES128bitの暗号化を有効とするには、1
を指定してください。
o
:オプションビット
32bit の数値を指定します。各ビットに紐付いた設定を有効化できます。
対象ビット | 設定項目 | 初期 | A | B | C | D | E |
---|---|---|---|---|---|---|---|
0x00000001 | M3 の内部プルアップを停止 | 0️⃣ | ✅ | ✅ | ✅ | ✅ | ✅ |
0x00000002 | 未使用 | 0️⃣ | |||||
0x00000100 | 送信トリガの有効化 | 1️⃣ | ✅ | ✅ | |||
0x00000200 | 新たな入力系列を優先 | 0️⃣ | ✅ | ✅ | ✅ | ✅ | |
0x00001000 | 応答メッセージを停止 | 0️⃣ | ✅ | ✅ | ✅ | ||
0x00004000 | 重複チェッカの緩和 | 0️⃣ | ✅ | ✅ | ✅ | ✅ | ✅ |
0x00010000 | 強制的に代替ボーレートを適用 | 0️⃣ | ✅ | ✅ | ✅ | ✅ | ✅ |
0x00020000 | 副ポートへ同時出力 | 0️⃣ | ✅ | ✅ | ✅ | ✅ | ✅ |
0x00040000 | 主ポートの切り替え | 0️⃣ | ✅ | ✅ | ✅ | ✅ | ✅ |
0x00100000 | 中継レイヤを制限 | 0️⃣ | ❗ | ❗ |
オプションビットの詳細
オプションビットの値の各ビットに紐付いた設定を解説します。
00000001
:M3
の内部プルアップを停止
TWELITE DIP におけるスリープ設定用のピン M3
の内部プルアップを停止します。
00000100
:送信トリガの有効化
透過モードまたはヘッダ付き透過モードにおいて、送信トリガの設定を有効とします。
00000200
:新たな入力系列を優先
書式モード(アスキー・バイナリ)、透過モード、ヘッダ付き透過モードにおいて、送信完了前に複数の系列が入力された際、新しいものを優先します。
00001000
:応答メッセージを停止
書式モード(アスキー・バイナリ)、ヘッダ付き透過モードにおいて、送信完了時の応答メッセージを停止します。
00004000
:重複チェッカの緩和
受信側において、重複チェッカの条件を緩和します。
重複チェッカは、中継などにより重複して届いてしまったパケットを排除するための仕組みです。
100ms以下など短い間隔で送信を行うと、異なるパケットであっても同一のものであると見なされてしまう場合があります(続き番号が異なる場合も含む)。
送信間隔を短く設定する場合や、たくさんの送信機を同時に使用する際は、この設定を有効としてください。
00010000
:強制的に代替ボーレートを適用
起動時にBPS
ピンの入力が Low でなくとも、代替ボーレートの設定を適用します。
00020000
:副ポートへ同時出力
シリアル出力TX
の内容をシリアル副出力TX_SUB
にも適用します。
00040000
:主ポートの切り替え
シリアル入出力TX
/RX
とシリアル副入出力TX_SUB
/RX_SUB
を入れ替えます。
00100000
:中継レイヤを制限
書式モード(アスキー・バイナリ)において、ネットワーク層を利用する配送方式を指定した場合に、必ず1階層上位に位置する中継機や親機へ送信させます。通常、ネットワーク層を利用する配送方式では、上位層で最も電波通信品質の高い中継機や親機へ送信します。
中継機能について
通信距離が足りない場合や、障害物があって通信できない場合には、中継機を使用することが有用です。
中継機能を持った端末は、自身が受信したパケットを他の端末へ送信します。
中継機能の設定
通常は、インタラクティブモードへ入った状態で役割の値を1
-3
へ変更します。初期値は0
で、中継機能を持ちません。
r: set Role (0x0)
1
-3
の数値は最大中継段数を指します。例えば3
を指定すると最大3段まで中継されます。
親機子機の区別をする場合、子機のみ有効です。
設定例
次のネットワーク構成は、赤色の端末の役割を0
、青色の端末の役割を3
とした場合を示します。
赤色の端末を追加すると、赤色の端末同士で最大3段の中継を伴う通信を実現できます。