Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Communication Mode
TWELITE UARTにはあらかじめシリアル通信アプリが書き込まれておりますが、アプリを書き換えて振る舞いを変えることができます。 例えば、TWELITE UARTに親機・中継機アプリを書き込むことで、TWELITE PALやTWELITE CUEなどの親機としても使用できます。
そのほかのアプリについてはこちらをご確認ください。
ここからはデフォルトで書き込まれているシリアル通信アプリを使用する場合の使用方法を説明します。
TWELIET UARTではいくつかのモードがありますが、無線の1パケットの範囲で送信するのが効率が良いため、パケットサイズに対応した80バイト以下のデータを単位送信します。
これ以上のサイズを送信したい場合は、ホスト側で80バイト以下に分割して送信することを推奨します。
TWELIET UARTではヘッダ付き透過モード(E)が標準になっています。以下のように送信側にHELLO<Enter>
と入力すると受信側に補助情報が含まれた形でHELLO
が表示されます。入力側にも出力が出ますが、これは送信完了を示すメッセージです。
補助情報には送信元のアドレス情報や受信時の電波強度、チェックサムなどが含められます。また、書式をカスタマイズすることも可能です。
書式モード(A、B)では、送信コマンドを使用してデータを送信するモードです。このコマンドを送る際にデータ形式をアスキー形式とバイナリ形式の2種類から選択できます。
SETピンをLoにした状態で電源を投入するとアスキー書式モード(A)で起動します。
送信コマンドには論理IDのみを使用した簡易形式と、32bitアドレス指定や様々な送信オプションを設定可能な拡張形式が有り、再送回数やMAC ACKの使用の有無などのオプションを指定可能です。
書式モードでは、インタラクティブモードではなくコマンドによる設定も可能です。
詳しくはこちらをご確認ください。
チャットモード(C)では、プロンプトの表示とエコーバック(自身が入力した文字が端末にも表示される)が行われます。全ての無線端末は子機の設定とします。電波到達範囲の全ての端末にメッセージが伝達され複数の端末でチャットできます。
プロンプトに表示されるTWELITEのシリアル番号の代わりにハンドル名を出力することも可能です。
詳しくはこちらをご確認ください。
透過モード(D)では、書式を必要としない通信が可能です。エコーバックやプロンプト表示がないためマイコンとの通信に適しています。
詳しくはこちらをご確認ください。
Try to use the binary format
App_Uart を書式モードのバイナリ形式で使ってみます。
バイナリ形式では、App_Uart で直接送信したいデータをバイナリ列で入出力できるため、マイコン間通信では取り扱いがしやすくなります。反面、ヘッダやチェックサムなどの計算が必要になります。
簡易的に送信する場合は「チャットモード、プロンプト無し」も利用できます。
最初に基本設定とアスキー形式による動作確認を行います。接続や設定等の問題がある場合、バイナリ形式では出力等を含め確認が難しいためです。
PC(TeraTerm) や macOS, Linux のターミナルソフト(CoolTerm など) を動作可能状態にして、インタラクティブモードによる設定が出来る事を確認しておいてください。
インタラクティブモードに入るには、+ + + と + を3回、一呼吸置きながら (0.2秒~1秒) 入力します。(参考:)
インタラクティブモードで以下の設定を済ませておきます。
親機側は Device ID を 121 (0x79) に設定します。(i を押して 121[Enter] と入力します)
UART Mode を A に設定します。(m を押して A[Enter] と入力します)
S キーを押してセーブ&リセットを実行します。
以下のようなメッセージが出力されます。:DB... は起動時のメッセージで、アプリケーションIDやアドレス情報が含まれます。
アスキー形式での動作を確認します。マイコンで利用される方も、まず Windows PC などでご確認ください。
マイコンなどプログラムからコマンド列が入力されることを想定しており、一定時間入力が無ければ(1000ms)タイムアウトが発生して入力を無効にするようになっています。
このため、コマンド列を入力する際には、ターミナルソフト等のコピー&ペースト機能(TeraTermならAlt+V)などを利用し、タイムアウトしないように入力してください。
なお、インタラクティブモードでは、タイムアウトが発生せず入力毎のエコーバック(入力した文字がターミナルに表示される)とチェックサムが間違えていた時にメッセージが表示できるようになっています。このためキーボードから直接入力しても試せます。
受信データは 0x78 からコマンド種別 0x00 でデータ 0x11 0x22 0x33 が届き、チェックサムが 0x22 です。この出力が確認できたら、今度は子機から親機に同様のメッセージを送ってみます。
親子間の簡易通信を確認しました。続いてこれと同じ送受信をバイナリ形式で行ってみます。
バイナリ形式の無線端末とアスキー形式の無線端末は互いに通信が可能です。入出力の書式が違うだけで、無線パケットは同じです。
ここでは親機だけバイナリ形式にしてみます。バイナリ形式での送受信を行うためには、バイナリ対応のターミナルソフトウェアが必要です。バイナリではターミナルソフトごとに操作や表示が異なりますので、よく習熟してください。
参考までに Linux, macOS 対応のターミナルを列挙します。
親機側のインタラクティブモードに入って UART Mode を B に設定します。
UART Mode を B に設定します。(m を押して A[Enter] と入力します)
親機のターミナルソフトウェアを閉じて、バイナリ対応のものを立ち上げてください。
以下では RealTerm の操作例です。
[Port] タブを選択し、Baud を 115200・Port を COM ポートの番号を指定して [Open] ボタンを押します。
[Display] タブを選択し、[Display As] 中から Hex[space] を選択しておきます。
子機からアスキー形式での送信例と同じものを送信してみます。
親機からは 0xA5 0x5A ... に続くデータが表示されます。送信したいデータに簡易書式のヘッダが付加され、さらにバイナリ書式のためのヘッダ・フッタが追加される点に注意してください。
親機、子機双方をバイナリ形式に設定して送受信を試みます。
子機側でもインタラクティブモードに入って UART Mode を B に設定します。
UART Mode を B に設定します。(m を押して A[Enter] と入力します)
子機のターミナルソフトウェアを閉じて、バイナリ対応のものを立ち上げてください。
以下では RealTerm の操作例を示します。
RealTerm を立ち上げます。
[Port] タブを選択し、Baud を 115200・Port を COM ポートの番号を指定して [Open] ボタンを押します。
[Display] タブを選択し、[Display As] 中から Hex[space] を選択しておきます。
子機から親機にデータ送信してみます。
子機側からデータ送信する方法はターミナルソフト毎に操作方法が違います。RealTerm の場合は、以下となります。
[Send]タブを開きます。
[Send Numbers] の2つある入力ボックスのいずれかに 0xA5 0x5A 0x80 0x05 0x78 0x00 0x11 0x22 0x33 0x78 を入力します。
[Send Numbers] ボタンを押します。
親機から子機へデータ送信してみます。
子機から親機にメッセージを送ります。を用いて親機 (0x00) 宛に、コマンド種別 0x00、データ 0x11, 0x22, 0x33 の3バイトを送信します。末尾の X はチェックサムを省略しています。
(Windowsのみ)
(Windows, macOS, Linux)
データ形式 | バイト数 | 解説 |
ヘッダ | 2 | 0xA5 0x5A |
データ長 | 2 | 0x8000 + 続くデータ長 この例では0x80 0x05 で5バイト |
データ部 | 5 | データ部で、あて先情報等のヘッダおよび送信したいデータが含まれる。 ・例は簡易形式で子機宛に 0x11 0x22 0x33 を送信します。 0x78 0x00 0x11 0x22 0x33 0x78 ⇒ 送信元アドレス(簡易) 0x00 ⇒ コマンド種別 (0x00 は特別な意味は無い) 0x11 0x22 0x33 ⇒ 送信したいデータ |
フッタ・チェックサム | 1 | データ部の前バイトのXORとなります。 ・0x78 xor 0x00 xor 0x11 xor 0x22 xor 0x33 = 0x78 |
フッタ・終端 | 1 | 0x04 出力時には 0x04 が付加されるが入力時には不要 |
元データのバイト数 | 表現形式におけるバイト数 | 解説 |
ヘッダ | 1 | ':' (0x3A) コロンを指定します。 |
データ部 | N | 2N | 元データの各バイトをアスキー文字列2文字(A-F は大文字)で表現します。 例えば 0x1F は '1' (0x31) 'F' (0x46) と表現します。 |
チェックサム | 2 | データ部の各バイトの和を8ビット幅で計算し2の補数をとります。つまりデータ部の各バイトの総和+チェックサムバイトを8ビット幅で計算すると0になります。
チェックサムバイトをアスキー文字列2文字で表現します。
例えば |
フッタ | 2 | [CR] (0x0D) [LF] (0x0A) を指定する。 |
Silent Mode
サイレントモードでは、受信回路を動作させないため稼働中にパケット受信を行いません。起動後にマイコン経由で毎回特定の設定を反映させてから、通信を始めるような場合に利用します。
インタラクティブモードで以下の設定を行います。
Role に 80 を足しておく。通常の親機子機なら 80 で良い。
UART mode を書式モード(アスキー・バイナリ形式)に設定しておく。
起動直後に DB F1 メッセージが出力され、メッセージ中にサイレントモード状態かどうかの値が格納されています。
インタラクティブモードでサイレントモードおよび書式モード(バイナリ・アスキー)に設定した場合、サイレントモードを利用できます。
サイレントモードを解除するには、サイレントモード解除の DB F8 コマンド(0xDB 0xF8 0x10, アスキー形式では :DBF810X) を送信します。
サイレントモードを解除後は、サイレントモード状態に再設定する事は出来ません。
送信コマンドを投入した時の動作は未定義です。
Mode E
TWELIET UARTではヘッダ付き透過モード(E)が標準になっています。以下のように送信側にHELLO<Enter>
と入力すると受信側に補助情報が含まれた形でHELLO
が表示されます。入力側にも出力が出ますが、これは送信完了を示すメッセージです。
補助情報には送信元のアドレス情報や受信時の電波強度、チェックサムなどが含められます。また、書式をカスタマイズすることも可能です。
無線の1パケットの範囲で送信するのが効率が良いため、パケットサイズに対応した80バイト以下のデータを単位送信します。
これ以上のサイズを送信したい場合は、ホスト側で80バイト以下に分割して送信することを推奨します。
Eモードでは送信側と受信側の区別はありません。無線設定(チャネルとアプリケーションID)が同じであれば、いずれかの送信側から送信したデータは他の受信側に伝達されます。
TWELITE URATは各々32bitの固定アドレスと8bit(0-100,120)の論理アドレスを設定することができます。
Eモードでは、宛先を指定することは出来ず、送信側からの無線パケットは全てのTWELITE UARTに伝達されます。
出力書式は以下のような;(セミコロン)
区切りになっています。
上記書式はカスタマイズできます。
Mode C
チャットモードでは、プロンプトの表示とエコーバック(自身が入力した文字が端末にも表示される)が行われます。全ての無線端末は子機の設定とします。電波到達範囲の全ての端末にメッセージが伝達され複数の端末でチャットできます。
親子関係は無く複数の端末間で通信できますが、宛先の指定はできずデータはブロードキャストで全ての端末に伝達されます。アスキーデータのみでバイナリデータは送れません。(0x00-0x1F, 0x7F は送信不可)
中継は最大3段(3ホップ)まで対応しています。初期設定では中継はしません。中継機能を使用する場合はインタラクティブモードにて設定が必要です。
チャットモードはインタラクティブモードにてUARTモード(m)をCに設定します。(初期設定はチャットモード)
MONOSTICK-モノスティックをパソコンやスマートフォン、タブレット端末のUSBポートに接続することで複数の端末同士でテキストチャットをすることができます。
1パケットの最大データ数は80バイトです。
送信データサイズは本文のバイト数+ハンドル名のバイト数です。
送信可能な最大送信バイト数は640バイトです。80バイト以上の場合は複数パケットに分割され送信されます。
チャットモードの書式は単純です。入力はプロンプト先頭から始まり改行文字で終端となります。
{本文(0x0-0x1F,0x7F以外)}[CRまたはLF]
プロンプトはモジュール(またはハンドル)名と、発言の続き番号が表示されます。
{モジュールのアドレス8桁}:{続き番号 0-255}> 例: 86300001:0>
{ハンドル名}:{続き番号 0-255}> 例: モノワイヤレス:2>
入力中のエラーメッセージなど
(err), (canceled) など () 書きのメッセージが出ます。
ハンドル名はインタラクティブモードで任意に設定できます。
出力メッセージはプロンプト同様、モジュールアドレス(またはハンドル名)と、発言番号の後、本文が出力されます。
{モジュールのアドレス8桁}:{続き番号 0-255}> 例: [86300038:5] Hello!
{ハンドル名}:{続き番号 0-255}> 例: [モノワイヤレス:2] こんにちわ
プロンプト上ではいくつかの制御コマンドを使用できます。
Ctrl+L ⇒ 画面のクリア(画面消去エスケープシーケンス対応のターミナル)
Ctrl+C ⇒ 入力のキャンセル
BS/DEL ⇒ 入力バッファを1バイト戻し、画面に Ctrl+H を出力します(対応ターミナルの場合、カーソルが1文字左に移動します)
通信距離が足りない場合や障害物があって通信できない場合に中継機を使用することで通信距離を延長したり通信範囲を拡張することが期待できます。
中継機能を持った端末は受信したパケットをそのまま送信します。
M2ピンをGNDに接続すると1ホップの中継機能が設定されます。インタラクティブモードで1ホップ以上の中継機能の設定もできます。
中継機能を使用する場合はインタラクティブモードで”r”を入力し、set Roleの値を1~3に設定してください。初期値は0です。
1~3は最大中継回数です。0を設定すると中継しません。中継機は受信したパケットをそのまま送信します。中継回数が指定数になるまで中継を繰り返します。
※ 設定は子機のみに有効です。 ※ 中継機の配置や数によっては多数の複製パケットが乱造され通信が不安定になる場合がありますのでご注意ください。
図のようなネットワーク構成にする場合は赤色の端末のRoleを0に青色の端末のRoleを3に設定してください。
青色の端末は最大3ホップの中継機能を持ちます。よって、赤色の端末の間に最大3台の中継端末を入れることができます。
中継機能を持つ端末の通信範囲内に他の端末がある場合は同様に中継します。
Mode A/B
書式モードはTWELITE-トワイライトのUART(シリアル通信ポート)に所定の書式により入力するモードです。以下の特徴があります。
チェックサムによるエラーチェックを行う事で UART通信のデータ化けを検出する。
マイコンからバイナリ形式で直接送受信する。
書式モードはインタラクティブモードにてUARTモード(m)をアスキー形式(A)またはバイナリ形式(B)に設定します。
送信したいバイナリデータ列をアスキー文字列(0-9,A-F)に変換して無線モジュールに入力します。
Modbus ASCII 形式の書式に倣っています。(例: バイナリ系列 0x00 0x11 0x22 0x33 0xAA 0xBB 0xCC は ":00112233AABBCC69" という文字列で表現されます。)
送信したいバイナリデータ列にヘッダとチェックサムを付加し直接無線モジュールに入力します。
人手による検証は困難になりますが、マイコン間通信では最も効率が良い形式です。
最大送信バイト数は640バイトですが、1パケットに収めて送受信する事を推奨します。 下記【書式】のAにあたる[送受信したいデータ]
1パケットに収めるためには80バイト以下にしてください。
書式モードは、送信コマンドを使用してデータを送信するモードです。このコマンドを送る際にデータ形式をアスキー形式とバイナリ形式の2種類から選択できます。送信コマンドとデータ形式の関係は以下の図の通りです。
本ページでは下図に示す送信コマンドについて解説します。
送信コマンドには論理IDのみを使用した簡易形式と、32bitアドレス指定や様々な送信オプションを設定可能な拡張形式が有ります。それぞれの形式を以下で説明します。
TWELITE-トワイライトから出力される形式は、入力時と同形式です。
以下のコマンドを親機に入力した場合、全子機に対し 0x11 0x22 0x33 0xAA 0xBB 0xCC というバイト列を送信します。
受信側は、以下のように親機の論理ID (0x00)から以下の バイト列を得ます。
上記バイト列はTWELITEに直接入力するわけではあり ません。アスキー形式またはバイナリ形式で表現した上、 UARTの入出力を行います。
例えば上記の出力形式の場合、アスキー形式では以下のよう に表現されます。
末尾の68はチェックサムです。
TWELITE-トワイライトから出力される形式は、宛先の論理IDの次に0xA0バイトが続きます。
各種送信時のオプションが指定できます。アプリケーション再送や遅延のためのオプションは、1パケットで送信できるデータ量(送受信したいデータが78バイト以内)で使用してください。
※ 本オプションはネットワーク層を利用した送信では使用しないでください。
※ 遅延や再送回数などによりコマンド入力から1秒を経過すると、コマンド処理がタイムアウトし、処理待ちのコマンドが処理されます。
※ 遅延処理やアプリケーション再送が行われている間は、内部のパケットバッファー(10ヶ)が処理待ちで埋まっていて新しい処理要求が実行されない場合が有ります。また同時に平行処理できるパケットは5ヶとなります。
※ パケットの重複確認は、内部で割り振っている連番で新しいものを優先し旧いものは採用しません。新しい要求受け付けのパケットが先に届き、旧い要求受け付けのパケットが後に届くような場合、古いパケットは受信されません。(特に 0x06 オプションを付加した時に、このような現象が発生しやすくなります)
※ パケット分割されるデータサイズの場合に遅延処理やアプリケーション再送処理を行うと、後半のパケットが前半のパケットの処理完了後に処理されるため、大きな時間差が発生し受信側でタイムアウトを起こし受信が失敗します。原則として遅延が発生するオプションはパケット分割しない範囲で使用してください。
応答メッセージはコマンドの入力に対し、処理結果を通知します。
以下の例では、バイトまたはバイト列を 0x を省略して表記します。
※ 以下の例をそのままTWELITEに入力できるわけではなく、アスキーまたはバイナリ形式で表現します。
子機から親機へ( 0203 の2バイトを送信、コマンドバイトは 01)
親機から全子機へ(長い系列)
子機→親機(単純な送信)
子機→親機(Ack付きの送信)
子機→親機(0.768秒後に送信)
ファームウェアバイナリに設定情報を付記した設定済みファームウェアバイナリが利用できます。例えば、ボーレートを最初から設定したファームウェアを作成しておけば、毎回インタラクティブモードなどで設定する必要がなくなります。
インタラクティブモードでの設定を行う替わりに、書式モード(バイナリモード・アスキーモード)では、コマンドによりモジュールの動作(リセット・サイレント解除)や設定を行えます。
サイレントモードでは、受信回路を動作させず稼働中にパケット受信を行いません。起動後にマイコン経由で毎回特定の設定を反映させてから、通信を始めるような場合に利用します。
Chat Anywhere
MONOSTICK-モノスティックをパソコンやスマートフォン、タブレット端末のUSBポートに接続することで複数の端末同士でテキストチャットをすることができます。
イーサーネットやWiFi等のネットワーク環境が無い場所でもどこでも無料でテキストチャットが行えます。
パソコンを2台以上用意して下さい。(複数人でチャットできます。)
それぞれのパソコンのUSBポートにMONOSTICK-モノスティックを接続して下さい。
TWELITE STAGEのメニューから[ビューア]>[ターミナル]を選択してください。
キーボードから文字を入力するとMONOSTICK-モノスティックが接続された全てのパソコンのターミナル上に表示されます。
接続しているシリアルポート名(Windows では COMポート)を調べて設定して下さい。(Windows の場合はデバイスマネージャを用いるのが簡単です。)
ターミナルソフトウエアの通信設定を「115200bps/8bit/パリティ無し/ストップビット1/フロー制御なし」にして下さい。
ローカルエコーは OFF に設定してください。
キーボードから文字を入力するとMONOSTICK-モノスティックが接続された全てのパソコンのターミナルソフトウエア上に表示されます。
初期状態ではハンドルネーム(名前)は「8xxxxxxx:0>」のようにシリアル番号が設定されています。最後の数字は発言回数を表し、発言毎に1つ増え255になると0に戻ります。
ハンドルネーム(名前)は任意の名前に変更することが出来ます。例えば「MONOW」と設定した場合はプロンプトが「MONOW:0>」と言う表示になり誰からのメッセージか、わかりやすくなります。
ハンドルネーム(名前)の設定はインタラクティブモード(設定変更モード)で行います。インタラクティブモードに入るには、+ を3回、一呼吸(0.2~1秒間隔)置きながら入力します。上手くいかない場合は、根気よく + を入力してください。
インタラクティブモードに入ると以下のような画面が表示されます。
hを入力すると”Input handle name:”と表示されますので、好みのハンドルネーム(名前)を入力して下さい。
Sを入力して変更内容をセーブしてください。
初期状態ではアプリケーションIDは(0x67720103)で周波数チャネルは18chです。アプリケーションIDと周波数チャネルの両方の値が同じ場合に通信が可能になるので、通信範囲にあるパソコン全てにメッセージが伝わります。相手を特定せずにチャットを楽しむことが出来ます。
特定のグループ内でのみチャットを行いたい場合は、アプリケーションIDと周波数チャネルの値をグループ毎に変えることで複数のグループで混信せずにメッセージのやり取りができます。
インタラクティブモードに入ってください。
c(小文字)を入力すると"Input Channel(s):”と表示されますので、11~26を入力してください。
Sを入力して変更内容をセーブしてください。
インタラクティブモードに入ってください。
aを入力すると"Input Application ID (HEX:32bit):”と表示されますので、16進数の00010001~7FFFFFFEを入力してください。
Sを入力して変更内容をセーブしてください。
アプリケーションIDと周波数チャネルの両方の値が同じ場合に通信が可能になるので、両方の値が同じユーザーのみメッセージを見ることができます。更にアプリケーションIDと周波数チャネルが同じでも暗号化を設定することで許可されたユーザー以外がメッセージを見ることができなくなります。
インタラクティブモードに入ってください。
C(大文字)を入力すると"Input crypt mode (0,1):”と表示されますので、1を入力してください。これで暗号化がオンになります。(0を入力すると暗号化がオフになります。)
K(大文字)を入力すると"Input crypt key:”と表示されますので、任意の16バイトの文字列(暗号キー)を入力してください。共通の文字列(暗号キー)を使用している相手だけと通信が可能になります。
Sを入力して変更内容をセーブしてください。
Mode D
チャットモードに対し、エコーバックやプロンプト表示がないためマイコンとの通信に適しています。
連続して入力された文字列を1パケット(最大80バイト)として送信します。
通信はブロードキャストで行われます。アスキーまたはバイナリデータの送信が可能です。
中継は最大3段(3ホップ)まで対応しています。初期設定では中継はしません。中継機能を使用する場合はインタラクティブモードにて設定が必要です。
透過モード:ブロードキャスティングはインタラクティブモードにてUARTモード(m)をDに設定します。
1パケットの最大送信文字数は80バイトです。
データサイズが80バイトを超えた場合は80バイト毎のパケット分割機構が働きますが、80バイト以上の一括送信は通信安定性の面で推奨しません。
本モードで、パケット送信の引き金となるのは以下です。インタラクティブモードで設定します。
データを入力して設定時間のタイムアウト時( 初期値:100ms)
送信トリガー文字の入力時 (要設定)
データが最低パケットバイト数に達した時 (要設定)
インタラクティブモードでは、以下の設定が可能です。
送信タイムアウト 最後の1バイトが入力されてから、パケットを送信するまでの待ち時間です。
送信トリガー文字 送信トリガー文字を入力した時点でパケット送信を行います。「最小データサイズ」を設定している場合は設定値に達するまではデータ内に送信トリガー文字が含まれていても送信は行いません。送信時は送信トリガー文字も同時に送信されます。送信トリガー文字を有効にする場合にはオプションビット 0x00000100 を設定してください。
最小データサイズ 最小のデータサイズを規定することにより、データの途中に含まれている送信トリガー文字によってパケットが分断されてしまう事を防ぎます。最小データTx Trigger min_bytesの値を1-80に設定すると、入力バイト数が指定のバイト数になるまで送信を保留します。0 に設定するとこの処理は行われません。
インタラクティブモードではUART modeをDに設定するとset Tx Triggerのメニューが表示されます。例えば0a,8,30と設定するとLFをトリガー文字にし、最小データは8バイト、30msのタイムアウトを設定します。
送信タイムアウト処理が優先されます。
送信トリガー文字を有効にした場合、 最小データバイト数に到達前のトリガー文字は無視され、最小バイト数以上かつトリガー文字が入力された時点で送信となります。
送信トリガー文字を無効にした場合、 最小データバイト数に到達した時点で送信となります。
複数のノードから送信された場合、どのノードから送信されたかを判別する場合は、送信データに送信元情報を含めてください。
データはパケット単位で出力されますので、データ単位を80バイト以内で送信している場合は複数のノードからのデータが途中で混ざることはありません。
通信距離が足りない場合や障害物があって通信できない場合に中継機を使用することで通信距離を延長したり通信範囲を拡張することが期待できます。
中継機能を持った端末は受信したパケットをそのまま送信します。
M2ピンをGNDに接続すると1ホップの中継機能が設定されます。インタラクティブモードで1ホップ以上の中継機能の設定もできます。
中継機能を使用する場合はインタラクティブモードで”r”を入力し、set Roleの値を1~3に設定してください。初期値は0です。
1~3は最大中継回数です。0を設定すると中継しません。中継機は受信したパケットをそのまま送信します。中継回数が指定数になるまで中継を繰り返します。
※ 設定は子機のみに有効です。 ※ 中継機の配置や数によっては多数の複製パケットが乱造され通信が不安定になる場合がありますのでご注意ください。
図のようなネットワーク構成にする場合は赤色の端末のRoleを0に青色の端末のRoleを3に設定してください。
青色の端末は最大3ホップの中継機能を持ちます。よって、赤色の端末の間に最大3台の中継端末を入れることができます。
中継機能を持つ端末の通信範囲内に他の端末がある場合は同様に中継します。
0xDB Command
インタラクティブモードでの設定を行う替わりに、書式モード(バイナリモード・アスキーモード)では、コマンドによりモジュールの動作(リセット・サイレント解除)や設定を行えます。
書式は先頭をDBとし、コマンド種別およびコマンドごとに決まるパラメータとなります。
例えばアプリケーションIDを 0x12345678
に設定する場合、コマンド種別が F2
で、パラメータが 00 12 34 56 78
、コマンドは DB F2 12 34 56 78
となります。
アスキー形式(チェックサム省略)では :DBF212345678X
となります。コマンド発行後には応答が戻ります。
バイナリー形式では、0xA5 0x5A ... XOR という加工が必要になります。 DB F2 00 12 34 56 78 というコマンドに対してバイナリで A5 5A 80 07 DB F2 00 12 34 56 78 21 という 12 バイトを送ります。
(インタラクティブモード中での入力はしないでください)
設定(F2)、設定取得(F3) 時のパラメータは、設定種別と設定内容を列挙します。設定内容は種別によって書式が変化します。
設定種別ごとのパラメータを解説します。 ※ 0xFF(OCTET) 0xFFFF(BE_WORD) 0xFFFFFFFF(BE_DWORD) の場合は、無効値として無視されます。
OCTET: 8bit=1バイトを示す。
BE_WORD: ビッグエンディアン 2 OCTETを示す。例えば 0x1234 は 0x12 0x34 の順に並びます。
BE_DWORD: ビッグエンディアン 4 OCTETを示す。例えば 0x12345678 は 0x12 0x34 0x56 0x78の順に並びます。
MONOSTICK-モノスティックに書込まれているアプリを「シリアル通信アプリ」に書き換える必要があります。アプリの書換えは「」で簡単に行えます。
をインストールして、メニューから[アプリ書換]>[TWELITE APPSビルド&書換]>[App_Uart]を選択すると書換えができます。
それぞれのパソコン上でターミナルソフトウエア( 等)を起動して下さい。
#
解説
1
U
固定
2
メッセージを出力したときのシステム時間(秒)
3
メッセージの送り主の8bit論理アドレス
0-100,120
: 子機から
219
: 自身から(起動時や送信完了メッセージの場合)
4
メッセージの送り主のアドレス(32bitロングアドレス、シリアル番号)
5
電波強度 (自身からの場合は000
)
6
送信元が設定したメッセージの続き番号
7
メッセージ内容
8
6
の先頭の文字から直前の文字までの XOR チェックサム (例では HELLO;
までを計算対象)
文字
意味
*
送信文字列
&hl
任意の文字を16進数で指定 (例:&20
→0x20空白)
<
チェックサム計算開始位置を設定する(設定しない場合は出力の先頭)
>
チェックサム計算終了位置を指定する(v1.4.6以降。それ以前のバージョンは無視されます)
\n
CRLF (0x0d 0x0a) の出力
\t
TAB の出力
\*
*
の出力
\%
%
の出力
\<
<
の出力
\>
>
の出力
\&
&
の出力
%A
送信元アドレス(32bit)の出力(8桁16進数)
%a
送信元アドレス(32bit)の出力(10桁10進数)
%I
送信元論理アドレス(8bit)の出力(2桁16進数)
%i
送信元論理アドレス(8bit)の出力(3桁10進数)
%T
現在のシステム時間(秒)の出力(4桁16進数)
%t
現在のシステム時間(秒)の出力(5桁10進数)
%S
送信元が設定した続き番号の出力(2桁16進数)
%s
送信元が設定した続き番号の出力(3桁10進数)
%Q
受信時の電波強度を出力(2桁16進数)
%q
受信時の電波強度を出力(3桁10進数)
%X
チェックサムの出力(2桁16進数)
%x
チェックサムの出力(3桁10進数)
元データのバイト数
表現形式におけるバイト数
解説
ヘッダ
2
0xA5 0x5A を指定します。
データ長
2
データ長はビッグエンディアン形式の2バイトで、MSB (0x8000) を設定した上、データ部の長さを指定します。 例えばデータ部の長さが 8 バイトなら 0x8008 を指定します。
データ部
N
N
元データを指定します。
チェックサム
1
データ部の各バイトの XOR を計算します。 例えばデータ部が 00A01301FF123456 なら 0x00 xor 0xA0 xor ... 0x56 = 0x3D となります。
フッタ
(1)
チェックサムが事実上の終端です。無線モジュールからの出力では 0x04 (EOT) が付加されます。
データ形式
バイト数
解説
バイト
1
送信先の論理ID。 0x00 ⇒ 親機宛 0x01 ~ 0x64(100) ⇒ 子機論理ID宛 0x78 ⇒ 全子機宛
バイト
1
コマンド種別(0x80未満任意) ※ データ領域として利用可能だが、0x80以上を入力してはならない。
バイト列
N
送受信したいバイト列。
データ形式
バイト数
解説
バイト
1
送信元の論理ID。 0x00 ⇒ 親機 0x01 ~ 0x64(100) ⇒ 子機論理ID 0x78 ⇒ 子機。(論理ID未設定)
バイト
1
コマンド種別(0x80未満任意) ※ 送信時に指定した値がそのまま入る。
バイト列
N
送受信したいバイト列。
データ形式
バイト数
解説
バイト
1
送信先の論理ID。 0x00 ⇒ 親機宛 0x01 ~ 0x64(100) ⇒ 子機論理ID宛 0x78 ⇒ 全子機宛 0x80 ⇒ 拡張アドレス
バイト
1
0xA0
バイト
1
応答ID。 任意に指定できる。後述の応答メッセージ(送信完了などの通知)に使用され、送信コマンドとの対応を付けるために使用する。
ビッグエンディアン4バイト
4
先頭バイトが拡張アドレス(0x80)指定の場合、アドレス指定を行います。拡張アドレス指定でない場合は、本領域は0バイトとなります。
バイト列
N
オプション列。 オプションは {オプションバイト} {オプション引数} が連続し、オプションバイトが 0xFF を指定する事で終端します。オプションを指定しない場合は 0xFF の1バイトを指定します。
バイト列
N
送受信したいバイト列。
データ形式
バイト数
解説
バイト
1
送信元の論理ID。 0x00 ⇒ 親機宛 0x01 ~ 0x64(100) ⇒ 子機論理ID宛 0x78 ⇒ 子機(論理ID未設定)
バイト
1
0xA0
バイト
1
送信元で指定した応答ID。
ビッグエンディアン4バイト
4
送信元拡張アドレス。
ビッグエンディアン4バイト
4
送信先拡張アドレス。 1バイトの論理IDの指定で送信された場合 0xFFFFFFFF が格納される。
バイト
1
通信品質 LQI 値。 0..255 の値を取り、受信時の電波強度に対応する。0が一番弱く、255が一番強い。
ビッグエンディアン2バイト
2
続くデータ領域のバイト数。
バイト列
N
送受信したいバイト列。
オプションバイト
パラメータバイト数
規定値v1.2.13以降
解説
0x1
0
無効
MAC ACK を設定します。 ※ 中継機による中継が行われなくなります。 ※ 送信先が 0x78(子機ブロードキャスト) の場合、この設定は無効になります。
0x2
1
0x00
アプリケーション再送を行います。 ・0x00 ~ 0x0F: 0 から 16 回の再送を行います。 送信成功を持って終了します。主にMAC ACK 設定時に使用します。 ・0x81 ~ 0x8F: 1 から 16 回の再送を行います。失敗成功に関わらず指定回数の送信を行います。主に MAC ACK を設定しない場合に利用します。 応答メッセージは、全ての再送処理が終わってから処理されます。
0x3
2
0x0000
初回の送信までの遅延を設定し、その最小値を与えます。 パラメータはビッグエンディアンの2バイトで、遅延[ms]を指定します。
0x4
2
0x0000
初回の送信までの遅延を設定し、その最大値を与えます。 パラメータはビッグエンディアンの2バイトで、遅延[ms]を指定します。最小値より小さい値を与えた場合は無効になります。 結果、送信要求発行からの遅延は (最小値)+(最大値-最小値)x(乱数 0...1) となります。
0x5
2
パケット数 x 10 [ms]
アプリケーション再送の再送間隔を指定します。 パラメータはビッグエンディアンの2バイトで、送信間隔[ms]を与えます。
0x6
0
無効
併行要求処理を行う。 このオプションが設定された要求は、要求完了までブロックせず、次の要求処理を受け付けます。 例えば 0.5 秒の遅延を設定した要求を 3 ヶを連続して投入した場合、本オプションを付けない場合は 0.5 秒後、1.0秒後、1.5秒ごと順次処理されますが、本オプションを付加すると 0.5秒後に3つの送信要求が処理されます。 ※ パケット分割しない送信処理に限ります。 ※ 併行動作の最大数は5ヶで、送信順は保証されません。
0x07
0
無効
送信後、応答メッセージを表示しません。
0x08
0
無効
送信後、速やかにスリープします。 ※ スリープからの復帰は RX ポート (DIO7) に Lo → Hi への割り込み信号を入力します(何か1バイト入力する)。コマンドはUART初期化が終わってから入力します。
データ形式
バイト数
解説
バイト
1
0xDB
バイト
1
0xA1
バイト
1
応答ID。 拡張形式では指定した応答ID、 簡易形式では続き番号(128~255)が振られます。 ※ 拡張形式と簡易形式を混在させて利用する場合、応答IDに128以上の値を使用すると識別できなくなります。
バイト
1
0:失敗 1:成功
番号 | 名前 | データ形式 | バイト数 | 解説 |
1 | 対象 | OCTET | 1 | 0xDB |
2 | コマンド種別 | OCTET | 1 | 下表に解説 |
3 | パラメータ | 種別による | 種別による | 設定データを示す。 |
コマンド 種別 | 機能 | 説明 | パラメータ | 応答 | 対応バージョン |
F0 | ACK | ACK 応答の要求を行う。 | なし | OCTET 0xDB OCTET 0xF0 OCTET 0x01 | v1.2以降 |
F1 | モジュールアドレス | モジュールアドレス情報などを表示する。モジュール起動時にも出力される。 | なし | OCTET 0xDB OCTET 0xF1 BE_DWORD アプリケーションID BE_DWORD バージョン番号 OCTET IDアドレス(1バイト) BE_DWORD モジュールのシリアル番号 OCTET 0:通常 1:サイレントモード中 OCTET 0:ネットワークDOWN, 1:ネットワークUP | v1.2以降 |
F2 | 設定 | モジュールに設定します。設定後、設定内容は「セーブ&リセット」しない限り反映されません。応答はコマンド種別F3の設定値となります。 | 別表参照 | 成功すればコマンド種別F3 で、設定した内容が報告される。失敗すればコマンド種別 F3、パラメータ FF が報告される。 | v1.2以降 |
F3 | 設定取得 | モジュールに設定内容を要求します。 | v1.2以降 |
F8 | モジュール制御 | ■ 0x10 サイレントモードで起動したモジュールを稼働状態にする。 | ■ 0x10 OCTET 0x10 | ■ 0x10 OCTET 0xDB OCTET 0xF8 OCTET 0x11 OCTET 0:サイレント 1:解除 | v1.2以降 |
FD | クリア&リセット | 不揮発領域をクリアして無線モジュールをリセットします。 | なし | 応答はありません。 リセット後に始動メッセージが出力されます。 | v1.2以降 |
FE | セーブ&リセット | データをセーブして無線モジュールをリセットします。 | v1.2以降 |
FF | リセット | 無線モジュールをリセットします。設定内容は破棄されます。 | v1.2以降 |
番号 | 名前 | データ形式 | バイト数 | 解説 |
1 | 設定種別 | OCTET | 1 | 設定の種別を示す。 0xFF は無効・エラーを意味し、続く 設定内容は格納されない。 |
2 | 設定内容 | 種別による | 種別による | 設定データを示す。 |
設定種別 | 名前 | 設定データ形式 | バイト数 | 解説 | 対応バージョン |
0x00 | アプリケーションID | BE_DWORD | 4 | アプリケーションIDを設定する。※ | v1.2以降 |
0x01 | チャネルマスク | BE_DWORD | 4 | 利用するチャネルを指定する(ch11 なら 1UL << 11 = 0x800) | v1.2以降 |
0x02 | 出力設定 | BE_WORD | 2 | 再送回数と電波の出力を設定する。 下位の1バイトのみを使用し、再送回数を上位4ビット、電波の出力を下位4ビットで設定する。 例)再送回数を8回、電波の出力を3(最大出力)に設定する場合は 0x0083 を指定します。※ | v1.2以降 |
0x03 | ID | OCTET | 1 | 0x00: 親機 0x01~0x64: 子機ID指定 0x78:子機ID未指定 | v1.2以降 |
0x04 | 役割 | OCTET | 1 | 子機のみ有効で、以下のいずれかを指定します。通常はネットワーク層を利用しない配送方式を選択してください。 ■ ネットワーク層を利用しない配送方式: 0 -> 通常の指定(親機または子機) 1-3 -> 中継子機(id 指定で 1~100 または 120の子機指定と同時に指定します。)1~3 は最大中継段数です。この中継方式は受信したパケットを中継段数が指定回数になるまで再送を繰り返す方式ですので、中継機の配置や数によっては重複したパケットが中継されることになります。 ■ ネットワーク層を利用する配送方式: (書式モードのみ) 11 -> 親機 12 -> 中継機 13 -> 子機 ■ サイレント モード: サイレントモードでは起動時に受信回路を開きませんので、解除コマンドを実行するまでは無線パケットに応答する事はありません。 設定は上記指定に 80 を足します。 例えば 93 を指定すると「ネットワーク層利用かつサイレントモード」となります。※ | v1.2以降 |
0x05 | 中継レイヤ | OCTET | 1 | 中継レイヤ番号です。中継機は中継レイヤ数の上位(より小さい値)の中継機・親機に接続を試みます。本設定は役割がネットワーク層を利用する配送方式で中継機に設定しているときにだけ設定してください。※ | v1.2以降 |
0x06 | UARTモード | OCTET | 1 | 0:透過モード 1:書式・アスキー 2:書式・バイナリ 3:チャット 4:プロンプト無しチャット | v1.2以降 |
0x07 | UARTボーレート | BE_DWORD | 4 | ボーレートを指定します。※ | v1.2以降 |
0x08 | UARTパリティ | OCTET | 1 | 以下の設定の組み合わせで、各設定値の総和を指定する。 Parity = 0: None, 1: Odd, 2: Even Stop = 0: STOP 1, 4: STOP 2 Bit = 0: 8Bit, 8: 7Bit 例)7E1 なら 8+2+0=10(0xA) を指定します。 | v1.2以降 |
0x09 | 暗号化設定 | OCTET | 1 | 0: 暗号化なし 1: AES128bit暗号化 | v1.2以降 |
0x0A | 暗号化キー | OCTET[16] | 16 | 16バイトの暗号化キーを指定します。インタラクティブモードでは設定できないバイナリ列を格納できます。この場合、インタラクティブモードの表示が崩れる場合があります。 | v1.2以降 |
0x0C | 区切り文字の指定 | BE_WORD | 2 | 区切り文字列の指定を行います。(0x00-0xFF) | v1.2以降 |
OCTET | 1 | 最小パケットサイズを指定します。(1-80) |
OCTET | 1 | 未入力タイムアウトを指定します。(0, 10-200) |
0xFF | エラー | 無し | 0 | エラーや異常を示します。 | v1.2以降 |