TWELITE GOLD シリーズにプリインストールされる最新版を対象としています。
BLUE/RED シリーズの安定版はこちら
資料に関する注意事項をご覧ください。
お気付きの点がございましたら、当社サポート窓口へお問い合わせください。
ダウンロード
シリアル通信アプリ(App_Uart)を導入するには TWELITE STAGE SDK をインストールして、TWELITE STAGE アプリを使って書き換えてください。
セクションの複数ページをまとめています。 印刷またはPDF形式で保存...
TWELITE GOLD シリーズにプリインストールされる最新版を対象としています。
BLUE/RED シリーズの安定版はこちら
資料に関する注意事項をご覧ください。
お気付きの点がございましたら、当社サポート窓口へお問い合わせください。
シリアル通信アプリ(App_Uart)を導入するには TWELITE STAGE SDK をインストールして、TWELITE STAGE アプリを使って書き換えてください。
シリアル通信アプリが使用するピンの機能を、下図の超簡単!標準アプリのピン名を使って表します。

超簡単!標準アプリのピン配置表
| シリアル通信 | 超簡単!標準 | 機能 |
|---|---|---|
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 | リセット入力 |
SET | DI1 | インタラクティブモードで起動 |
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:0M2を子機設定のときにGNDへ接続することで、中継機能を付与できます。
この接続を省略し、インタラクティブモードから設定することもできます。
r set Role:1 または 0x12M3をGNDへ接続すると、本体をスリープさせることができます。
EX1 を起動時に GND へ接続しておくことで、動作モードを書式モード(バイナリ)へ上書きできます。
BPSをGNDへ接続することで、インタラクティブモードで指定した代替ボーレート設定を有効化できます。
RSTとGNDとの間にプッシュボタンを接続することで、リセットボタンを実装できます。RSTは内部プルアップされています。
SETをGNDへ接続して起動すると、インタラクティブモードに遷移します。
シリアル通信アプリが使用するピンの機能を、基板に記載された7Pインタフェース(下図の②)のピン名を使って表します。

基板アンテナタイプ

同軸コネクタタイプ
| シルク | 機能 |
|---|---|
VCC GND | 電源入力 |
TXD RXD | シリアル入出力 |
SET | 動作モードの上書き |
RST | リセット入力 |
VCC/GND には、3.3V(2.0-3.6V)の電源を接続します。
TX/RX は、シリアル通信(UART)の送信と受信に使用します。
SET を起動時に GND へ接続することで、動作モードを書式モード(アスキー)へ上書きできます。
RSTとGNDとの間にプッシュボタンを接続することで、リセットボタンを実装できます。RSTは内部プルアップされています。
各モードは、インタラクティブモードによって切り替えます(一部のモードはピン入力にて設定可能)。
| ID | モード |
|---|---|
A | 書式モード(アスキー) |
B | 書式モード(バイナリ) |
C | チャットモード |
D | 透過モード |
E | ヘッダ付き透過モード |
初期状態はヘッダ付き透過モードです。
パケットサイズの制約から、一度に送るデータはバイナリ換算で80バイト以内に収めてください。
TWELITE が採用する IEEE 802.15.4 のパケットの最大長は128バイトであり、オーバーヘッドを考慮するとシリアル通信アプリのペイロードに使用できる領域は80バイトに限られます。
大量のデータを送信する場合は、Wi-Fi などを利用した他社製品をご検討ください。TWELITE は少ないデータを効率よく送る用途に適しています。
A:書式モード(アスキー)送信側の端末へ特定の書式に従ったデータを入力すると、受信側の端末も特定の書式に従ったデータを出力します。
16進数で表すデータはアスキー文字列で表現します。
| 送信側の入力 | 受信側の出力 | |
|---|---|---|
| 簡易形式/拡張形式のデータ | → | 簡易形式/拡張形式のデータ |
TWELITE UART では、SET ピンを GND へ接続して起動すると本モードが有効となります。
データを表現する形式は2種類あります。
例えば、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; <- 出力
受信側が出力する補助情報は、送信元のアドレスや受信時の電波強度、チェックサム等を含みます。補助情報の書式はカスタマイズできます。

送信側の端末へ特定の書式に従ったデータを入力すると、受信側の端末も特定の書式に従ったデータを出力します。
データは16進数のアスキー文字列で表現します。
| 送信側の入力 | 受信側の出力 | |
|---|---|---|
| 簡易形式/拡張形式のデータ | → | 簡易形式/拡張形式のデータ |
SET ピンを GND へ接続して起動すると書式モード(アスキー)が有効となります。EX1 ピンを GND へ接続して起動すると書式モード(バイナリ)が有効となります。扱うことのできる書式の形式は2種類あります。
例えば、5バイトのバイナリデータ 0x48 0x45 0x4C 0x4C 0x4F は、簡易形式を使って次のように送信できます。
【送信側】
:000148454C4C4F8B <- 入力
:DBA1800103 <- 出力
【受信側】
:780148454C4C4F13 <- 出力
基本形式や拡張形式で表現したデータ列を送信するときは、アスキー文字列(0-9,A-F)へ変換します。
書式は超簡単!標準アプリ(App_Twelite)や親機・中継機アプリ(App_Wings)の親機の出力と同様に、:で始まりCRLFで終わります。
| ヘッダ | ペイロード | チェックサム | フッタ |
|---|---|---|---|
: | 00-FFの繰り返し | ペイロードのLRC8 | CRLF |
: (0x3A)\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ビット。
書式モードの拡張形式を利用する場合は、次の書式に従います。
| # | データ | 内容 | 備考 |
|---|---|---|---|
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 を送信する例を示します。
親機から論理デバイスID0x42の子機へ送信する例を示します。
0x010x81000000(シリアルID0x1000000)【送信側:親機】
:42A001FF112233AABBCC87<CR><LF> <- 入力
:DBA1010182<CR><LF> <- 出力
末尾の
0x87はチェックサム:0x42から0xCCまでの合計の2の補数のLSBから8ビット。
【受信側:子機】
:00A00181000000FFFFFFFFC80006112233AABBCC7D<CR><LF> <- 出力
末尾の
0x7Dはチェックサム:最初の0x00から0xCCまでの合計の2の補数のLSBから8ビット。
親機から拡張アドレス0x81000001(シリアルID0x1000001)の子機へ送信する例を示します。
0x010x81000000(シリアルID0x1000000)【送信側:親機】
:80A00181000001FF112233AABBCCC7<CR><LF> <- 入力
:DBA1010182<CR><LF> <- 出力
末尾の
0xC7はチェックサム:0x80から0xCCまでの合計の2の補数のLSBから8ビット。
【受信側:子機】
:00A0018100000081000001C80006112233AABBCCF7<CR><LF> <- 出力
末尾の
0xF7はチェックサム:最初の0x00から0xCCまでの合計の2の補数のLSBから8ビット。
親機から論理デバイスID0x42の子機へ MAC ACK を使用して送信する例を示します。
0x010x01: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 の遅延を設けて送信する例を示します。
0x010x03:初回送信の遅延の最小値を指定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 コマンドを入力することでモジュールの操作や設定を行うことができます。
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 | 端末設定の取得 |
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 | 67720103 |
| 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') |
0xFD:端末設定の消去設定を初期化し、本体をリセットします。
パラメータおよび応答はありません。
Eヘッダ付き透過モードに切り替わるため、以降は0xDBコマンドを使うことができません。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] | 暗号化キー |
0x0B | [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:子機0x05:中継レイヤ中継レイヤの番号です。中継機は中継レイヤ数の上位(より小さい値)の中継機・親機への接続を試みます。役割を12としているときにだけ有効です。
0x06:通信モード0:透過モード1:書式モード(アスキー)2:書式モード(バイナリ)3:チャットモード4:ヘッダ付き透過モード0x07:ボーレートUART ボーレートを指定します。
0x08:パリティ以下の設定の組み合わせにおいて、設定値の総和を指定します。
0:8Bit8:7Bit0:None1:Odd2:Even0:STOP 14:STOP 2例えば、7-E-1 なら 8+2+0=10(0xA) を指定します。
0x09:暗号化機能暗号化機能の有無を指定します。
0:無効1:AES128bit の暗号化を有効0x0A:暗号化キー16バイトの暗号化キーを指定します。
インタラクティブモードでは設定できないバイナリ列を格納できます。この場合、インタラクティブモードの表示が崩れる場合があります。
0x0B:ヘッダ書式/ハンドル名ヘッダ付き透過モードのヘッダの書式や、チャットモードのハンドル名を設定します。
0x0C:区切り文字区切り文字列の指定を行います(0x00-0xFF)。

送信側の端末へ特定の書式に従ったデータを入力すると、受信側の端末も特定の書式に従ったデータを出力します。
16進数で表すデータは、バイナリデータのまま表現します。
| 送信側の入力 | 受信側の出力 | |
|---|---|---|
| 簡易形式/拡張形式のデータ | → | 簡易形式/拡張形式のデータ |
SET ピンを GND へ接続して起動すると書式モード(アスキー)が有効となります。EX1 ピンを GND へ接続して起動すると書式モード(バイナリ)が有効となります。扱うことのできる書式の形式は2種類あります。
例えば、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バイト0x8000とORをとる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。
書式モードの拡張形式を利用する場合は、次の書式に従います。
| # | データ | 内容 | 備考 |
|---|---|---|---|
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 を送信する例を示します。
親機から論理デバイスID0x01の子機へ送信する例を示します。
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)の子機へ送信する例を示します。
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。
親機から論理デバイスID0x01の子機へ MAC ACK を使用して送信する例を示します。
0x010x01: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 の遅延を設けて送信する例を示します。
0x010x03:初回送信の遅延の最小値を指定【送信側:親機】
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 コマンドを入力することでモジュールの操作や設定を行うことができます。
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 | 67720103 |
| 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) |
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] | 暗号化キー |
0x0B | [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:パリティ以下の設定の組み合わせにおいて、設定値の総和を指定します。
0:8Bit8:7Bit0:None1:Odd2:Even0:STOP 14:STOP 2例えば、7-E-1 なら 8+2+0=10(0xA) を指定します。
0x09:暗号化機能暗号化機能の有無を指定します。
0:無効1:AES128bit の暗号化を有効0x0A:暗号化キー16バイトの暗号化キーを指定します。
インタラクティブモードでは設定できないバイナリ列を格納できます。この場合、インタラクティブモードの表示が崩れる場合があります。
0x0B:ヘッダ書式/ハンドル名ヘッダ付き透過モードのヘッダの書式や、チャットモードのハンドル名を設定します。
0x0C:区切り文字区切り文字列の指定を行います(0x00-0xFF)。
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:カーソルを戻す
外部マイコン同士を簡単に接続できますが、書式を用いて通信を最適化するには書式モード(アスキー/バイナリ)が適しています。
純粋にUARTを無線化します。
| 送信側の入力 | 受信側の出力 | |
|---|---|---|
| 任意のデータ | → | 任意のデータ |
書式を必要としないため、既存の UART 通信を簡単に無線化できます。
一方で、データの区切りがあいまいになってしまうほか、受信側の出力から送信元を判別できないといった欠点があります。
初期状態では、送信トリガ文字にCRLFを指定しています。したがって、送信側へ入力されたデータをCRLFで区切り、CRLF よりも前のデータを送信します。
例えば、送信側の端末へ Hello<Enter> と入力すると、受信側の端末はそのまま Hello を出力します。
【送信側】
Hello <- 入力
【受信側】
Hello <- 出力
連続して入力された文字列を80バイトごとに分割して送信します。トリガ文字までのデータは通常80バイト以下としてください。
全ての端末は子機としたうえで、送信内容はブロードキャストします。すべての端末と通信できますが宛て先は指定できません。アスキー文字だけでなく、バイナリデータも送信できます。
中継は3段(3ホップ)まで対応しています。初期設定では中継しません。
透過モードは、親機と子機を区別しません。
アプリケーションIDと周波数チャネルが同一であれば、どの端末へ入力したデータもほかの端末へと送信されます。

ネットワークの構成イメージ
透過モードでは、送信元を判別できません。
送信元を判別するには、送信側へ入力するデータそのものに送信元の情報を含める必要があります。
送信側の入力に書式はありませんが、データはある時点で分割されたのち、パケットごとに無線で送信されます。
したがって、次に挙げる送信トリガを意識しなくてはなりません。
送信トリガの設定は、インタラクティブモードの項目から指定します。
送信トリガ文字を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)
初期状態で有効となっています。
送信側の端末へ任意のデータを入力すると、受信側の端末は受信した内容に特定の書式で補助情報を付加したデータを出力します。
| 送信側の入力 | 受信側の出力 | |
|---|---|---|
| 任意のデータ | → | 任意のデータ+補助情報 |
初期状態では、送信側へ入力されたデータを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
送信側の入力に書式はありませんが、データはある時点で分割されたのち、パケットごとに無線で送信されます。
したがって、次に挙げる送信トリガを意識しなくてはなりません。
送信トリガの設定は、インタラクティブモードの項目から指定します。
送信トリガ文字を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)
ここではシリアル通信アプリ(App_Uart)に固有の機能を説明します。共通機能については、TWELITE APPS マニュアル のトップページを参照してください。
TWELITE がスリープしている間はインタラクティブモードを使用できません。
M3ピンをGNDへ接続していないことを確認してください。
次のような画面を表示します。
[CONFIG MENU/App_Uart:0/v1-05-1/SID=8300051A]
a: (0x67720103) アプリケーションID [HEX:32bit]
i: ( 120) 論理デバイスID [1-100,etc]
c: (18 ) 周波数チャネル(複数可) [11-26]
x: ( 0x03) 送信出力と再送回数 [HEX:8bit]
b: (115200,8N1) UART代替ボーレート [XXXXX]
o: (0x00000100) オプションビット [HEX:32bit]
r: ( 0x00) 役割 [0-3,11-13]
l: ( 1) LayerTree中継レイヤ [1-63]
m: (E ) 通信モード [ABCDE]
t: ( 0x0D0A) 送信トリガ文字 [XX,XXYY]
u: ( 0) 最小データサイズ [0,1-80]
T: ( 0) タイムアウト [0,10-200 msec]
h: (;U;%t;%i;0x%A;%q;%s;<*;%X;\n) ヘッダ書式/ハンドル名
C: ( 0) 暗号化 [0,1]
K: (*CRYPT_KEY_HERE*) 暗号鍵 [16文字]
[ESC]:Exit [!]:Reset System [*]:Extr Menu [:]:AppSel
| 設定項目 | 初期値 | 備考 | |
|---|---|---|---|
a | アプリケーションID | 0x67720103 | 32bit |
i | 論理デバイスID | 120 | 親機121,子機1-100,IDなし子機120 |
c | 周波数チャネル | 18 | 11-26 |
x | 送信出力と再送回数 | 0x03 | |
| 再送回数 | 0 | 1-9回、0は無効 | |
| 送信出力 | 3 | 0-3 | |
b | UART代替設定 | 115200,`8N1 | BPSピンで有効化 |
o | オプションビット | 0x00000000 | その他の詳細設定 |
r | 役割 | 0 | 通常0,中継子機1-3,その他 |
l | LayerTree中継レイヤ | 0x01 | |
m | 通信モード | E | A/B/C/D/E |
t | 送信トリガ文字 | 0x0D0A | トリガ文字のアスキーコード |
u | 最小データサイズ | 0 | 無効0, 1-80 |
T | タイムアウト | 0 | 無効0, 10-200ms |
h | ヘッダ書式/ハンドル名 | 参照 | |
| ヘッダ書式 | ヘッダ付き透過モードの場合 | ||
| ハンドル名 | チャットモードの場合 | ||
C | 暗号化 | 0 | 無効0,AES128bit1 |
K | 暗号鍵 | *CRYPT_KEY_HERE* | 16文字 |
各コマンドの詳細を次に示します。
a:アプリケーションID通信を行う端末はすべて同一の値とします。論理的にネットワークを分離します。
i:論理デバイスID複数の子機を識別する必要がある場合に設定します。
識別の必要がない、できない場合は120としてください。識別の必要がある場合は、子機は1-100の任意の値に、親機は121としてください。
c:周波数チャネル通信を行う端末はすべて同一の値とします。物理的にネットワークを分離します。
x:送信出力と再送回数電波の送信出力と、透過モードおよびヘッダ付き透過モードにおいてパケットを追加で送信する回数を指定します。
b:UART代替設定BPSピンをGNDへ接続して起動した場合に選択される代替ボーレートを38400bpsから上書きします。
値は9600/19200/38400/57600/115200/230400から選択できます。
BPSピンを開放して起動した場合、この設定は適用されません。115200bpsに固定されます。
BPSピンの状態を無視して強制的に代替ボーレート設定を適用するには、オプションビットの強制的に代替設定を適用を有効とします。
Bit-Parity-Stop 3文字を指定できます。o:オプションビット32bit の数値を指定します。各ビットに紐付いた設定を有効化できます。
| 対象ビット | 設定項目 | 初期 | A | B | C | D | E |
|---|---|---|---|---|---|---|---|
0x00000001 | M3の内部プルアップを停止 | 0️⃣ | ✅ | ✅ | ✅ | ✅ | ✅ |
0x00000100 | 送信トリガの有効化 | 1️⃣ | ✅ | ✅ | |||
0x00000200 | 新たな入力系列を優先 | 0️⃣ | ✅ | ✅ | ✅ | ✅ | |
0x00001000 | 応答メッセージを停止 | 0️⃣ | ✅ | ✅ | ✅ | ||
0x00004000 | 重複チェッカの緩和 | 0️⃣ | ✅ | ✅ | ✅ | ✅ | ✅ |
0x00010000 | 強制的に代替ボーレートを適用 | 0️⃣ | ✅ | ✅ | ✅ | ✅ | ✅ |
0x00020000 | 副ポートへ同時出力 | 0️⃣ | ✅ | ✅ | ✅ | ✅ | ✅ |
0x00040000 | 主ポートの切り替え | 0️⃣ | ✅ | ✅ | ✅ | ✅ | ✅ |
0x01000000 | LEDを無効化 | 0️⃣ | ✅ | ✅ | ✅ | ✅ | ✅ |
0x02000000 | 待機時にLEDを無効化 | 0️⃣ | ✅ | ✅ | ✅ | ✅ | ✅ |
r:役割子機のみ有効です。以下の値を指定します。通常はネットワーク層(LayerTree)を利用しない配送方式を選択してください。
0:通常の指定(親機または子機)1-3:中継子機(論理デバイスIDを1-100 または 120とします)1-3の数値は最大中継段数を指します。最大中継段数まで再送を繰り返す方式のため、中継機の配置や数によっては重複したパケットを中継します。書式モードのみ対応しています。
11:親機12:中継機13:子機l:LayerTree中継レイヤ中継レイヤの番号です。中継機は中継レイヤ数の上位(より小さい値)の中継機・親機への接続を試みます。役割を12としているときにだけ有効です。
m:通信モードA:書式モード(アスキー)B:書式モード(バイナリ)C:チャットモードD:透過モードE:ヘッダ付き透過モードt:送信トリガ文字透過モードとヘッダ付き透過モードにおいて、指定された文字が入力された際にパケットの送信を行います。 最小データサイズを指定した場合、最小データサイズに達するまでは無視されます。
オプションビット 0x00000100(既定で有効)を指定した際に適用されます。
初期状態では、CRLF によるトリガを有効としています。
u:最小データサイズ連続して扱うデータの最小サイズを指定します。受信したデータがこのサイズに達するまでは、送信トリガ文字を無視します。
インタラクティブモードでは、バイト数として1-80の数値を指定します。0で無効となります。初期状態では無効です。
T:タイムアウト最後の入力からパケットを送信するまでの待ち時間を示します。
インタラクティブモードでは、ミリ秒単位で10-200の数値を指定します。0で無効となります。初期状態では無効です。
h:ヘッダ書式/ハンドル名ヘッダ付き透過モードに対してはヘッダのフォーマットを、チャットモードに対してはハンドル名を示します。
ヘッダ付き透過モードに対しては、ヘッダのフォーマット書式を指定します。
相手端末に表示するハンドル名を指定します。
最大23文字です。送信するデータ(80バイト)の領域を消費します。
C:暗号化暗号化機能の有無を指定します。
AES128bitの暗号化を有効とするには、1を指定してください。
K:暗号鍵暗号化機能を有効とした場合の暗号鍵を16文字で指定します。
オプションビットの値の各ビットに紐付いた設定を解説します。
00000001:M3の内部プルアップを停止TWELITE DIP におけるスリープ設定用のピン M3 の内部プルアップを停止します。
00000100:送信トリガの有効化透過モードまたはヘッダ付き透過モードにおいて、送信トリガの設定を有効とします。
00000200:新たな入力系列を優先書式モード(アスキー・バイナリ)、透過モード、ヘッダ付き透過モードにおいて、送信完了前に複数の系列が入力された際、新しいものを優先します。
00001000:応答メッセージを停止書式モード(アスキー・バイナリ)、ヘッダ付き透過モードにおいて、送信完了時の応答メッセージを停止します。
00004000:重複チェッカの緩和受信側において、重複チェッカの条件を緩和します。
重複チェッカは、中継などにより重複して届いてしまったパケットを排除するための仕組みです。
100ms以下など短い間隔で送信を行うと、異なるパケットであっても同一のものであると見なされてしまう場合があります(続き番号が異なる場合も含む)。
送信間隔を短く設定する場合や、たくさんの送信機を同時に使用する際は、この設定を有効としてください。
00010000:強制的に代替設定を適用起動時にBPSピンの入力が Low でなくとも、UARTの代替設定を適用します。
00020000:副ポートへ同時出力シリアル出力TXの内容をシリアル副出力TX_SUBにも適用します。
00040000:主ポートの切り替えシリアル入出力TX/RXとシリアル副入出力TX_SUB/RX_SUBを入れ替えます。
通信距離が足りない場合や、障害物があって通信できない場合には、中継機を使用することが有用です。
中継機能を持った端末は、自身が受信したパケットを他の端末へ送信します。
01000000:LEDを無効化TWELITE STICK や MONOSTICK のLEDを点灯しません。
02000000:待機時にLEDを無効化待機時にTWELITE STICK や MONOSTICK のLEDを点灯しません。
通常は、インタラクティブモードへ入った状態で役割の値を1-3へ変更します。初期値は0で、中継機能を持ちません。
r: set Role (0x0)
1-3の数値は最大中継段数を指します。例えば3を指定すると最大3段まで中継されます。
親機子機の区別をする場合、子機のみ有効です。
次のネットワーク構成は、赤色の端末の役割を0、青色の端末の役割を3とした場合を示します。

役割の設定による中継の例
赤色の端末を追加すると、赤色の端末同士で最大3段の中継を伴う通信を実現できます。

送信機や受信機を追加する例
UART の入力には、入力側に 4KB、出力側に 4KB のバッファを確保しています。2系統のUARTを出力する場合は、各系統の入力に 2KB、出力に 2KB を利用します。
書式モードやチャットモードでバッファのサイズを意識する場面は多くありませんが、ヘッダ付き透過モードや透過モードで連続的に系列を入力する場合や、書式モードであっても多数の系列を一度に入力する場合は、バッファサイズの上限を意識する必要があります。出力においても、遅いボーレートを設定した場合には、無線で受信したデータの出力が間に合わない可能性があります。
バッファの上限を超えた場合は、その境界でのデータは保護されません。データ抜けが発生します。特に入力側では後述のフロー制御ピンを参照することを検討してください。
入力側のフロー制御については、 RTS ピン同様の振る舞いをするように実装しています。使用するピンは PWM1(DIO5) であり、その対象は主UARTポートです。入力を受け付けないときに High、入力を受け付けるときに Low 状態となります。なお出力側のフロー制御には対応していません。受信側のデバイスでは、十分なボーレートと処理速度を確保してください。
受信側にデータ抜けが発生する場合は、無線の再送回数を増やしてください。
追加送信するパケットの数を増やすことで、受信の成功率を向上できる場合があります。
再送回数はインタラクティブモードで設定できます(x: set RF Conf)。
例えば、ボーレートを 115200bps から 9600bps へ変更したファームウェアを作成しておけば、最初から 9600bps で使用できます。
インタラクティブモードの設定を変更し、Sを押下して保存します。
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 の実装によっては、小さいサイズになることもあります)。
ダウンロードしたファイルをファームウェアのバイナリファイルの末尾へ連結し、カスタムバイナリを作成します。
連結には、コマンドラインツールや汎用のファイル連結ツールを使用してください。
ダウンロードした 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
連結したカスタムバイナリを 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 ---