Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
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)では、書式を必要としない通信が可能です。エコーバックやプロンプト表示がないためマイコンとの通信に適しています。
詳しくはこちらをご確認ください。
TWELITE UART ユーザーズガイド
をご参照ください。 お気付きの点がありましたら、当サポート窓口にご連絡いただければ幸いです。
本資料の表示例(ボタン名や画面キャプチャ)は、資料作成時のバージョンのものとなっています。一部、入手されたバージョンと差異がある場合があります。
本プログラムは、に基づき提供されます。
シリアル通信アプリ(App_Uart)は、UART(シリアル)通信に特化したアプリケーションです。UARTはマイコンで一般的に利用されるシリアル通信方式です。
TWELITE UARTには本アプリがあらかじめインストールされており、配線すればすぐにマイコン等で無線通信をすることができます。
をインストールして、TWELITE STAGEのメニューから[アプリ書換] → [TWELITE APPSビルド&書換] → [App_Uart]を選択してアプリを書換えてください。
Check Operation
TWELITE UARTやMONOSTICKを使って通信してみましょう。
TWELITE UART
TWELITE R2
USBケーブル (充電専用不可)
MONOSTICK
TWELITE UART x 2
TWELITE R2 x 2
USBケーブル (充電専用不可) x 2
TWELITE UARTを2つ使用して動作確認をする場合は、ここを読み飛ばしてください。
1. MONOSTICKをパソコンのUSBポートに接続します。
2. インストールしたTWELITE STAGE SDKのMWSTAGEフォルダ内の以下のファイルをダブルクリックしてください。 ・TWELITE_stage.exe(Windows) ・TWELITE_stage.command(macOS) ・TWELITE_stage.run(Linux) 起動するとUSBに接続されたMONOSTICKが画面上に表示されます。
3. シリアルポート選択画面から 1: MONOSTICK を選択してください。
4. デバイスを選択するとTWELITE STAGE APPのトップメニュー画面が表示されます。
1. トップメニューから 2:アプリの書換 > 1:BINから選択を選択してください。
2. MONOSTICK BLUE を使用している場合はApp_Uart_BLUE... を選択し、MONOSTICK RED を使用している場合はApp_Uart_RED... を選択してください。
3. 書き込み完了後はインタラクティブモードに入らずにESCキーを長押ししてトップメニューに戻ってください。
4. トップメニューから 1:ビューア> 1: ターミナル を選択します。
TWELITE UARTを32つ使用する場合は、ここを2回行ってください。
図のようにTWELITE R2とTWELITE UARTを接続します。
接続できたら、TWELITE R2のUSBコネクターに通信ができるUSBケーブルを接続してください。
1. TWELITE R2に接続されているUSBケーブルをパソコンのUSBポートに接続します。
2. インストールしたTWELITE STAGE SDKのMWSTAGEフォルダ内の以下のファイルをダブルクリックしてください。 ・TWELITE_stage.exe(Windows) ・TWELITE_stage.command(macOS) ・TWELITE_stage.run(Linux) 起動するとUSBに接続されたTWELITE R2が画面上に表示されます。
3. シリアルポート選択画面から1: TWELITE R2を選択してください。
4. デバイスを選択するとTWELITE STAGE APPのトップメニュー画面が表示されます。
5. トップメニューから 1:ビューア> 1: ターミナル を選択します。
TWELITE UARTにHELLO<Enter>
と入力すると、MONOSTICKに補助情報が含まれた形でHELLO
が表示されます。TWELITE UARTにも出力が出ますが、これは送信完了を示すメッセージです。
MONOSTICKからも同様にメッセージを送信できます。
Connect to microcontroller
実際にArduinoを使用してマイコンの無線化を行います。
PCからArudinoに入力したシリアルデータをTWELITE UARTを介して、もう一台のArduinoに無線で送信し、そのデータを解釈するサンプルです。
以下のものを2セット用意してください。
TWELITE UART
Arduino UNO
抵抗 2.2kΩ(赤・赤・赤)
抵抗 3.3kΩ(橙・橙・赤)
Arudino UNOは5V系のマイコンで、UART出力のHiレベルが5Vです。TWELITEに5Vを入力するとTWELITEが破損するため、分圧してHiレベルが3Vになるようにしております。
m5StackやRaspberry PiなどのようにHiレベルが3Vのマイコンなどに接続する場合はTWELITEに直接接続してください。
TWELITE UARTをTWELITE R2などを使用して、以下のような設定にしてください。
Arduino IDEを起動させ、以下のプログラムをコピー&ペーストし、Arduinoに書き込んでください。
Arduino IDE のシリアルモニターなどを使用して、送信側のArduinoにメッセージを入力(ここではHELLO
)すると受信側のArduinoから以下のようなメッセージがシリアル出力されます。
送信するメッセージには必ず最後に改行コード(CR+LF)をつけてください。
改行コードをつけないとデータが送信されません。
下記の関数がシリアル通信の処理を記述したメインループ関数です。
2~30行目ではTWELITEからのシリアル出力を読み込む処理を行っております。 TWELITEからCR+LFが来るまでは内部のバッファに受信したシリアル電文をためておき、CR+LFが来たらsplit()関数で保持していたデータを分割し、PCにシリアル出力します。
32~34行目はPCから来たシリアルデータをそのままTWELITEに送ります。
split()は保持しているシリアルデータを区切り文字ごとに分割する関数です。
引数の配列を前から順番に中を確認し、区切り文字になったらそこまでの配列をString型に変換してて保管します。
分割が終わったら、分割した数を戻します。
もとのシリアルデータはString型ではなくchar型の配列で、分割後はString型になりますので、変数の方の取り扱いをご注意ください。
Pin Assignment
本解説で使用するピン名は、超簡単!標準アプリの名前定義 (M1-M3, BPS, TX, RX, I1-I4) を用います。以下に各TWELITEの配列を記載します。
※ DIO番号は半導体データシートに基づく信号名で、ピン番号ではありません。TWELITE DIP の場合はピンに記載されるシルクの数字記載が DIO 番号です。
※ オープンは Hi レベルでも可。設計上必要と考える場合はプルアップ(10k~100kΩ)して下さい。 ※ Lo は GND レベル。設計上必要と考える場合はプルダウン(100Ω程度)して下さい。 ※ 未使用ピンはオープンにしてください。
まず最初にの最新版をパソコンにインストールします。
通信相手としてを使用することができます。 以下の手順でシリアル通信アプリをMONOSTICK - モノスティックに書き込んでください。
各部の説明はをご確認ください。
Silent Mode
サイレントモードでは、受信回路を動作させないため稼働中にパケット受信を行いません。起動後にマイコン経由で毎回特定の設定を反映させてから、通信を始めるような場合に利用します。
インタラクティブモードで以下の設定を行います。
Role に 80 を足しておく。通常の親機子機なら 80 で良い。
UART mode を書式モード(アスキー・バイナリ形式)に設定しておく。
起動直後に DB F1 メッセージが出力され、メッセージ中にサイレントモード状態かどうかの値が格納されています。
インタラクティブモードでサイレントモードおよび書式モード(バイナリ・アスキー)に設定した場合、サイレントモードを利用できます。
サイレントモードを解除するには、サイレントモード解除の DB F8 コマンド(0xDB 0xF8 0x10, アスキー形式では :DBF810X) を送信します。
サイレントモードを解除後は、サイレントモード状態に再設定する事は出来ません。
送信コマンドを投入した時の動作は未定義です。
ピン名 | 機能 |
M1 | 親機子機の設定。ソフト上からも設定可能。 オープン: 子機 Lo: 親機 | 10 |
M2 | 子機設定で Lo で中継と設定する(Role=1 または Role=0x12 と等価)。 ※ 親機設定で Lo にしないこと。 | 2 |
M3 | ピンが Lo の間スリープする | 3 |
EX1 | Lo で起動すると UART mode を書式モード(バイナリ形式)に強制する ※標準アプリケーションのAI2ピンです。 | 0 |
EX2 | 未使用 ※標準アプリケーションのAI4ピンです。 | 1 |
BPS | ピンが Lo で起動すると、設定したボーレート、パリティ設定で UART を初期化する | 17 |
TX | UARTの出力 (TX) | 6 |
RX | UARTの入力 (RX) ※ 本ピンに Lo > Hi への立下り信号を投入するとスリープ復帰します。 | 7 |
RTS | UART の RTS 出力 (Hi 時に入力を禁止すると、データ欠落等を抑制できる) | 5 |
TX_SUB | 副UARTの出力 (TX) | 14 |
RX_SUB | 副UARTの入力 (RX) | 15 |
名称 | 機能 |
GND | 電源のマイナス側 | GND |
TXD | シリアル出力通信線(相手側はシリアル入力端子に接続) | 6 |
PRG | GNDに接続してリセットし、開放またはVCCに接続するとプログラムモードに遷移 | SPIMISO |
RXD | シリアル入力通信線(相手側はシリアル出力端子に接続) | 7 |
RST | GNDに接続するとリセット | RESETN |
VCC | 電源のプラス側(2.0V - 3.6V) | VCC |
SET | Lo で起動すると UART mode を書式モード(アスキー形式)に強制する | 11 |
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)などを利用し、タイムアウトしないように入力してください。
なお、インタラクティブモードでは、タイムアウトが発生せず入力毎のエコーバック(入力した文字がターミナルに表示される)とチェックサムが間違えていた時にメッセージが表示できるようになっています。このためキーボードから直接入力しても試せます。
子機から親機にメッセージを送ります。書式モードの簡易形式を用いて親機 (0x00) 宛に、コマンド種別 0x00、データ 0x11, 0x22, 0x33 の3バイトを送信します。末尾の X はチェックサムを省略しています。
受信データは 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] ボタンを押します。
親機から子機へデータ送信してみます。
Mode E
TWELIET UARTではヘッダ付き透過モード(E)が標準になっています。以下のように送信側にHELLO<Enter>
と入力すると受信側に補助情報が含まれた形でHELLO
が表示されます。入力側にも出力が出ますが、これは送信完了を示すメッセージです。
補助情報には送信元のアドレス情報や受信時の電波強度、チェックサムなどが含められます。また、書式をカスタマイズすることも可能です。
無線の1パケットの範囲で送信するのが効率が良いため、パケットサイズに対応した80バイト以下のデータを単位送信します。
これ以上のサイズを送信したい場合は、ホスト側で80バイト以下に分割して送信することを推奨します。
Eモードでは送信側と受信側の区別はありません。無線設定(チャネルとアプリケーションID)が同じであれば、いずれかの送信側から送信したデータは他の受信側に伝達されます。
TWELITE URATは各々32bitの固定アドレスと8bit(0-100,120)の論理アドレスを設定することができます。
Eモードでは、宛先を指定することは出来ず、送信側からの無線パケットは全てのTWELITE UARTに伝達されます。
出力書式は以下のような;(セミコロン)
区切りになっています。
上記書式はカスタマイズできます。
Custom Defaults
カスタムデフォルト機能の解説を行います。ファームウェアバイナリに設定情報を付記した設定済みファームウェアバイナリが利用できます。例えば、ボーレートを最初から設定したファームウェアを作成しておけば、毎回インタラクティブモードなどで設定する必要がなくなります。
※ 本機能はApp_Uart、App_IOに対応しています。
インタラクティブモードで必要な設定を済ませ、動作確認を行っておきます。
TeraTerm など xmodem プロトコルのダウンロード可能なターミナルソフトを用います。インタラクティブモードの入力待ち状態で (何か入力して設定待ち状態では動作しません)、xmodem のダウンロードを行います。(xmodem はチェックサム、128バイトパケットで、後に拡張された 1KB や CRC ではありません)
TeraTerm では、以下の操作を行います。
File->Transfer->XMODEM->Receive... を選択します。
Option を Checksum、Binary を選択しておきます。
書き出すファイル名を指定します。
Open (開く) ボタンを押します。
成功すれば、指定したファイル名のファイルが出来上がり、サイズが128バイトになっているはずです。xmodem の実装によってはこれより小さいサイズになることもあります。
ダウンロードした設定ファイルをファームウェアの末尾に連結します。コマンドライン、ファイル連結ツールなどを利用します。
出来あがったカスタムファイルを TWELITE に書き込みます。上記の例では App_Uart_custom_1_2_X.bin です。
起動してインタラクティブモードでは、最後の方に C- と出ます。この C はカスタム設定がロードされたことを意味します。
モジュール始動時にカスタム設定を読み込み、続いて不揮発領域に保存された設定を読み出します。保存された設定情報が存在する場合は、インタラクティブモードでは以下のように CE と表示されます。動作確認時は必ず保存された設定を消去してください。
※ 保存された設定を消去するには、インタラクティブモードで R 入力後、S を入力します。
output format
初期モードではインタラクティブモードのh: set header format
を設定することで書式を自由に設定できます。
初期設定では、書式が以下のように設定されています。
この設定の意味は以下の通りです。
例えば送信側からHELLO<Enter>
と入力した場合、出力側からは以下のように出力され、それぞれのデータの意味は下表の通りです。
出力の設定の詳細については出力のカスタマイズをご覧ください。
実際に設定を変更してみましょう。
例えば、Excelで取り扱いやすくするためにカンマ(,)でデータを区切り、付加情報を送信機のシリアル番号と電波強度、続き番号のみにすると設定は以下のようになります。
この設定をし、送信側からHELLO<Enter>
と入力した場合、出力側からは以下のように出力されます。
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秒後に送信)
ファームウェアバイナリに設定情報を付記した設定済みファームウェアバイナリが利用できます。例えば、ボーレートを最初から設定したファームウェアを作成しておけば、毎回インタラクティブモードなどで設定する必要がなくなります。
インタラクティブモードでの設定を行う替わりに、書式モード(バイナリモード・アスキーモード)では、コマンドによりモジュールの動作(リセット・サイレント解除)や設定を行えます。
サイレントモードでは、受信回路を動作させず稼働中にパケット受信を行いません。起動後にマイコン経由で毎回特定の設定を反映させてから、通信を始めるような場合に利用します。
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の順に並びます。
Chat Anywhere
MONOSTICK-モノスティックをパソコンやスマートフォン、タブレット端末のUSBポートに接続することで複数の端末同士でテキストチャットをすることができます。
イーサーネットやWiFi等のネットワーク環境が無い場所でもどこでも無料でテキストチャットが行えます。
MONOSTICK-モノスティックに書込まれているアプリを「シリアル通信アプリ」に書き換える必要があります。アプリの書換えは「TWELITE STAGE」で簡単に行えます。
TWELITE STAGEをインストールして、メニューから[アプリ書換]>[TWELITE APPSビルド&書換]>[App_Uart]を選択すると書換えができます。
パソコンを2台以上用意して下さい。(複数人でチャットできます。)
それぞれのパソコンのUSBポートにMONOSTICK-モノスティックを接続して下さい。
TWELITE STAGEのメニューから[ビューア]>[ターミナル]を選択してください。
キーボードから文字を入力するとMONOSTICK-モノスティックが接続された全てのパソコンのターミナル上に表示されます。
接続しているシリアルポート名(Windows では COMポート)を調べて設定して下さい。(Windows の場合はデバイスマネージャを用いるのが簡単です。)
それぞれのパソコン上でターミナルソフトウエア( TeraTerm等)を起動して下さい。
ターミナルソフトウエアの通信設定を「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台の中継端末を入れることができます。
中継機能を持つ端末の通信範囲内に他の端末がある場合は同様に中継します。
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台の中継端末を入れることができます。
中継機能を持つ端末の通信範囲内に他の端末がある場合は同様に中継します。
Other Features
ファームウェアバイナリに設定情報を付記した設定済みファームウェアバイナリが利用できます。例えば、ボーレートを最初から設定したファームウェアを作成しておけば、毎回インタラクティブモードなどで設定する必要がなくなります。
UART の入力バッファは、入力側が 4KB、出力側が 4KB 確保しています。UARTを2系統出力させる場合は、各系統ごとに 入力 2KB、出力 2KB を利用します。
書式モードやチャットモードでは1系列単位で送信を行うためバッファのサイズを意識する場面は多くありませんが、透過モードなどで連続的に系列を投入する場合、書式モードであっても多数の系列を一度に投入する場合は、このバッファを上限として入力されます。出力についても、ボーレートが遅いにもかかわらずこれ以上の無線パケットが伝送されると、UART 出力が間に合わなくなります。
バッファの上限を超えた場合は、その境界でのデータは保護されません。データ抜けが発生します。特に入力側では後述のフロー制御ピンを参照することを検討してください。
入力側のフロー制御について RTS ピン同様の振る舞いをするように実装しています。使用するピンは DIO5 で、監視対象は主UARTポート(UART0)です。入力受付不可時は Hi、入力可能時は Lo となります。出力側のフロー制御には対応しませんので、受信側では十分なボーレートと処理速度を準備してください。
電源投入、リセット直後は Hi で、UART が初期化されると Lo になります。
UART の入力バッファが 7/8 を超えたときに Hi になり、下回ると Lo になります。
透過モード(D)では、パケット送信中は Hi になります。
TWELITE DIO番号 (と同じ)
TWELITE DIO番号 (と同じ)
ハンドル名はで任意に設定できます。
データー抜けが発生する場合は再送回数を増やしてください。再送回数はで設定できます。(x: set RF Conf)
データ形式
バイト数
解説
ヘッダ
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 が付加されるが入力時には不要
文字
内容
%t
メッセージを出力したときのシステム時間(秒)
%i
メッセージの送り主の8bit論理アドレス
0-100,120
: 子機から
219
: 自身から(起動時や送信完了メッセージの場合)
%A
メッセージの送り主のアドレス(32bitロングアドレス、シリアル番号)
%q
電波強度 (自身からの場合は000
)
%s
送信元が設定したメッセージの続き番号
<
チェックサム計算開始位置を設定する(設定しない場合は出力の先頭)
*
送信文字列
>
(無視されます)
%X
開始位置から直前までのチェックサムの出力
\n
CRLF (0x0d 0x0a) の出力
それ以外の文字
そのまま出力
No.
意味
1
固定 (データの識別子としてご使用ください。)
2
受信側が起動してから777s後に受信した。
3
送信機の論理アドレスが120(0x78)
4
送信機のシリアル番号が1025A17(先頭の8は通常、読み飛ばします。)
5
電波強度が120
6
送信機が起動してから13回目の送信データ
7
送信データ
8
HELLO; のチェックサム (0x48 xor 0x45 xor 0x4C xor 0x4C xor 0x4F xor 0x3B)
#
解説
1
U
固定
2
メッセージを出力したときのシステム時間(秒)
3
メッセージの送り主の8bit論理アドレス
0-100,120
: 子機から
219
: 自身から(起動時や送信完了メッセージの場合)
4
メッセージの送り主のアドレス(32bitロングアドレス、シリアル番号)
5
電波強度 (自身からの場合は000
)
6
送信元が設定したメッセージの続き番号
7
メッセージ内容
8
6
の先頭の文字から直前の文字までの XOR チェックサム (例では HELLO;
までを計算対象)
元データのバイト数
表現形式におけるバイト数
解説
ヘッダ
1
':' (0x3A) コロンを指定します。
データ部
N
2N
元データの各バイトをアスキー文字列2文字(A-F は大文字)で表現します。 例えば 0x1F は '1' (0x31) 'F' (0x46) と表現します。
チェックサム
2
データ部の各バイトの和を8ビット幅で計算し2の補数をとります。つまりデータ部の各バイトの総和+チェックサムバイトを8ビット幅で計算すると0になります。
チェックサムバイトをアスキー文字列2文字で表現します。
例えば 00A01301FF123456
では 0x00 + 0xA0 + ... + 0x56 = 0x4F となり、この二の補数は0xB1 です。(つまり 0x4F + 0xB1 = 0)
フッタ
2
[CR] (0x0D) [LF] (0x0A) を指定する。
元データのバイト数
表現形式におけるバイト数
解説
ヘッダ
2
0xA5 0x5A を指定します。
データ長
2
データ長はビッグエンディアン形式の2バイトで、MSB (0x8000) を設定した上、データ部の長さを指定します。 例えばデータ部の長さが 8 バイトなら 0x8008 を指定します。
データ部
N
N
元データを指定します。
チェックサム
1
データ部の各バイトの XOR を計算します。 例えばデータ部が 00A01301FF123456 なら 0x00 xor 0xA0 xor ... 0x56 = 0x3D となります。
フッタ
(1)
チェックサムが事実上の終端です。無線モジュールからの出力では 0x04 (EOT) が付加されます。
文字
意味
*
送信文字列
&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進数)
データ形式
バイト数
解説
バイト
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以降
Interactive Mode
インタラクティブモードでアプリの詳細設定を行うことができます。
ここではシリアル通信アプリ(App_Uart)固有の機能を説明します。共通機能については、インタラクティブモード(共通機能) を参照してください。
インタラクティブモードに入ると以下の画面が表示されます。
オプションビット設定値を各ビットごとに解説します。
通信距離が足りない場合や障害物があって通信できない場合に中継機を使用することで通信距離を延長したり通信範囲を拡張することが期待できます。
中継機能を持った端末は受信したパケットをそのまま送信します。
中継機能を使用する場合はインタラクティブモードで”r”を入力し、set Roleの値を1~3に設定してください。初期値は0です。
1~3は最大中継回数です。0を設定すると中継しません。中継機は受信したパケットをそのまま送信します。中継回数が指定数になるまで中継を繰り返します。
※ 設定は子機のみに有効です。 ※ 中継機の配置や数によっては多数の複製パケットが乱造され通信が不安定になる場合がありますのでご注意ください。
図のようなネットワーク構成にする場合は赤色の端末のRoleを0に青色の端末のRoleを3に設定してください。
青色の端末は最大3ホップの中継機能を持ちます。よって、赤色の端末の間に最大3台の中継端末を入れることができます。
中継機能を持つ端末の通信範囲内に他の端末がある場合は同様に中継します。
設定内容によっては、操作が困難になる場合があります。(ボーレートを設定したが、ターミナルソフトが対応しないボーレートだった等)その場合は以下の方法で初期化してください。
別のアプリを改めて書き込み、そのアプリ上で初期化操作を行う 。(インタラクティブモードで 'R' キーを押して、次に 'S' キーを押すと初期化します)
コマンド
設定項目
初期値
説明
a
アプリケーションID
0x67720103
同一の周波数チャネルを複数のグループで使用することが可能です。値は32ビットで設定します。
i
論理デバイスID
120
子機の論理デバイスIDを設定します。1~100および以下に挙げる特別な値を設定できます。 0: 親機 (=121) 1-100: 子機 120: 子機(ID設定無し) 121: 親機 これ以外の値も設定した場合の動作は未定義です。
c
周波数チャネル
18
チャネル (11~26) を選択します。複数チャネルを指定した場合は チャネルアジリティにより電波干渉の回避に役立ちます。最大3チャネルまで指定可能です。例えばチャネル 13 とチャネル 22 を使用する場合は 13,22 と入力します。
x
送信出力
3
1桁、または2桁の数字を指定します。2桁目は省略可能です。 1桁目は、送信出力を設定します。3が最強で2,1,0と1段階小さくなるたびに -11.5db 出力が低下します。出力を制限し電波の有効伝達範囲を小さくしたい場合に使用します。ただし、伝達可能距離は環境(ノイズ・遮蔽物など)に影響を受けます。 ※ 理論上の伝達距離は 6db 出力が小さくなるたびに 1/2 になりますので、1段階小さくすることで伝達距離は約1/4になります。 2桁目は透過モード・プロンプト無しチャットモード時の再送回数を設定します。2桁目は 0~9を指定し、0はデフォルトで再送なし、1~9は再送回数に対応します。 例: 3 -> 再送なし・最強出力(デフォルト、省略時) 42 -> 再送4回・出力は2(1段階弱める)
r
役割
0
子機のみ有効で、以下のいずれかを指定します。通常はネットワーク層を利用しない配送方式を選択してください。 ■ ネットワーク層を利用しない配送方式: 0 -> 通常の指定(親機または子機) 1-3 -> 中継子機(id 指定で 1~100 または 120の子機指定と同時に指定します。)1~3 は最大中継段数です。この中継方式は受信したパケットを中継段数が指定回数になるまで再送を繰り返す方式ですので、中継機の配置や数によっては重複したパケットが中継されることになります。 ■ ネットワーク層を利用する配送方式: (書式モードのみ) 11 -> 親機 12 -> 中継機 13 -> 子機 ■ サイレント モード: サイレントモードでは起動時に受信回路を開きませんので、解除コマンドを実行するまでは無線パケットに応答する事はありません。 設定は上記指定に 80 を足します。 例えば 93 を指定すると「ネットワーク層利用かつサイレントモード」となります。
b
UARTボーレート
38400
BPSピンを Lo (GND) レベルにして電源投入した場合に有効になります。Hi レベルでは常に 115200 8N1 条件で UART を初期化します。 9600、19200、38400、57600、115200、230400が設定可能です。 他の値も設定可能ですが、オシロスコープ等を用いて誤差を検証した上で使用してください。 ※ オプションビットの設定により、BPS ピンの状態を無視したり、UART1 に出力する事も可能です。
B
UARTパリティ
N
N: 無し、O: Odd(奇数)、E: Even(偶数)を設定します。ストップビットは1で固定。ハードウェアフローは設定不可です。 v1.2以降では、8N1, 7E2 といったビット数、パリティ、ストップビットの設定が可能ですが、動作検証は 8N1 のみとなります。動作検証以外の設定で利用される場合は、オシロスコープなどで波形を観察し要求を満足するか確認の上利用してください。
m
UARTモード
E
TWELITEの通信方式を決定します。 A: 書式モード、アスキー形式 B: 書式モード、バイナリ形式
C: チャットモード D: 透過モード E: ヘッダ付き透過モード
k
トリガー文字
0d0a,0,0
トリガー文字列(オプションビットで有効化)を設定します。 後述の最小パケットサイズ、無入力タイムアウトの設定を行っても反映されません。原則としてトリガー文字列を入力まで送信を保留し、トリガー文字列が来た時点でトリガー文字列も含めた形でパケット送信を試みます。 ■ 透過モード(D)とヘッダ付き透過モード(E)時のみ有効です。 ■ 設定書式 カンマ区切りで3つのパラメータを一度に設定し 20,8,100 の場合、トリガー文字列が 0x20、最小パケットサイズが 8 バイト、無入力タイムアウトが 100ms と設定します。 ■ 値 ・トリガー文字列 :16進数で指定します。0000-FFFF ・最小パケットサイズ: 1-80 を指定します。 ・無入力タイムアウト:0なら無効、10-200 を指定します。あまり小さい値を指定すると、1バイトごとにタイムアウトするようになりますので、十分な時間を設定してください。
h
ヘッダのカスタマイズ/ハンドル名
;U;%t;%i;0x%A;%q;%s;<*>;%X;\n
・ヘッダ付き透過モード
出力のカスタマイズをします。 詳しくはこちらをご確認ください。
・チャットモード
ハンドル名を指定します。ハンドル名は 23 文字まで利用可能です。各通信ごとにハンドル名が送信されるため、長いハンドル名は通信データ増大させます。
C
暗号化
0
0 は平文通信、1 は暗号化通信(AES128)です。同じ暗号化鍵で通信しないと受信時に暗号解読が出来ないため受信が失敗します。 ※ 暗号化設定しない無線ノードからの平文メッセージは受信します。 ※ ただし Ack 応答はするため、送信側では受信失敗を確認できません。(受信成功失敗の確認には受信側から返しのメッセージをもらうといった処理が必要です)
K
暗号化鍵
暗号化鍵を入力します。テキストで16文字を設定します。(バイナリ列を設定する事は出来ません) ※ 暗号化の鍵は平文で保存されます。
!
リセット
TWELITEをリセットします。
R
初期値に戻す
各設定をデフォルト値に戻します。この時点では設定値は保存されません。続けて設定する事も可能です。 ※ 他の入力を行わず続けて S コマンドで保存すると、セーブ(不揮発)領域を初期化状態に戻します
S
設定を保存する
設定値を保存し、TWELITEをリセットします。
設定ビット (16進)
説明
00000001
スリープ設定用のIOピン(M3ピン)のプルアップを停止します。 プルアップ停止時には対象ピンをオープンにしないようにしてください。 ※ M3 をオープン状態で起動すると、スリープ状態になる場合があり、設定変更等の操作を受け付けなくなります。M3ピンをHiにすることでスリープを解除します。
00000002
透過モード選択ピン(I1-I4)のプルアップを停止します。 プルアップ停止時には対象ピンをオープンにしないようにしてください。
00000100
送信トリガー文字の設定をします。 透過モード(D)、透過モード・ペアリング(T)で、設定された文字が入力されるとそれをトリガーとしてデータを送信します。例えば0x0Aを設定しておくと、LF改行文字毎にパケット分割され無線送信されます。 例) 改行文字などで終端されるコマンド列を連続的に送信したい場合に、遅延の少ない効率的な無線送信が行えます。
00000200
新しい入力系列を優先します。 書式モード(A,B)、透過モード(D)で、送信完了前までに確定したUART入力データを破棄し、より新しい入力データを優先して送信します。 例) 制御値やセンサー値などを連続的に送信して、最新データを反映させたい場合
00001000
応答メッセージの出力を停止します。 書式モード(A,B)、ヘッダ付き透過モード(E)時の送信処理完了メッセージを出力しません。
00004000
重複チェッカーの条件を緩くします。
数100ms以下の間隔で送信するなど、短い間隔で送信する場合はこのオプションを有効にしてください。
00010000
BPSピンの設定と関係なくBAUD設定を反映します。 ※ 外部から入出力できないボーレートに設定した場合、インタラクティブモード等の操作が出来なくなり、簡易な手段での回復は出来なくなります。セーブデータ領域を初期化する必要があります。
00020000
UART1(副ポート)にも出力します。 ※ 副ポートには原則として入力しないことを前提としていますが、インタラクティブモード・書式モード・チャットモード・透過モードの入力は受けつけるように実装されています。 ※ UART入出力用に確保しているバッファ(入力4KB,出力4KB)は、主ポート・副ポートで半々(入力2KB,出力2KB)として利用します。
00040000
UART0とUART1 を入れ替えます。 UART1 を主ポートとします。
00100000
(ネットワーク層)中継器は1階層上位に限定して接続します。 ネットワーク層利用時のみ有効です。中継器が上位階層を探索する場合、通常はより上位の中で最大の電波強度を持つ中継器・親機に接続しますが、この設定では1段階上位に限定して接続します。 ※ 中継テストを行う場合などに利用します。