リモコンアプリによる高度なデジタル伝送
使用する製品
TWELITE DIP | TWELITE R2 |
TWELITE 親機/子機 | USB アダプター |
超簡単!標準アプリ | - |
2個 | 1個 |
リモコンアプリ
TWELITE のファームウェアを、デジタル信号の伝送に特化したリモコンアプリ(App_IO)へ書き換えます。超簡単!標準アプリはデジタル信号の伝送機能を備えているものの、入出力は4本に限られています。リモコンアプリは入出力を増やし、その組み合わせを切り替えることができます。
ファームウェアの書き換え
親機と子機、すべての端末を書き換えます。
- TWELITE STAGE SDK を導入し、TWELITE STAGE アプリを立ち上げる
- シリアルポート選択から接続したデバイスを選択する
- 「メインメニュー」から「2: アプリ書換」を選択する
- 「1: BINから選択」を選び、
App_IO...
を選択する - 書き込みが完了するまで、数回
Enter
を押す
初期設定では、書き込みが成功すると次のようなインタラクティブモードの画面へ移行します。
--- CONFIG/APP_IO V1-03-2/SID=0x86300001/LID=0x00 ---
a: set Application ID (0x67720107)
i: set Device ID (--)
c: set Channels (16)
x: set Tx Power (3)
t: set mode4 sleep dur (1000ms)
y: set mode7 sleep dur (0s)
f: set mode3 fps (16)
d: set hold mask (000000000000)
D: set hold dur (1000ms)
o: set Option Bits (0x00000000)
b: set UART baud (38400)
p: set UART parity (N)
C: set crypt mode (0)
K: set crypt key []
---
S: save Configuration
R: reset to Defaults
まずは使ってみる
初期状態のリモコンアプリは、次のように子機が12本のデジタル入力ポートを、親機が12本のデジタル出力ポートを備えた片方向伝送の設定としています。まずは配線してみましょう。
名称 | 子機 | 親機 | 標準 | DIP # |
---|---|---|---|---|
I1 /O5 | I1 | O5 | DI1 | 15 |
I2 /O6 | I2 | O6 | DI2 | 16 |
I3 /O7 | I3 | O7 | DI3 | 17 |
I4 /O8 | I4 | O8 | DI4 | 18 |
I5 /O1 | I5 | O1 | DO1 | 5 |
I6 /O2 | I6 | O2 | DO2 | 8 |
I7 /O3 | I7 | O3 | DO3 | 9 |
I8 /O4 | I8 | O4 | DO4 | 12 |
I9 /O9 | I9 | O9 | SCL | 2 |
I10 /O10 | I10 | O10 | SDA | 19 |
I11 /O11 | I11 | O11 | PWM1 | 4 |
I12 /O12 | I12 | O12 | PWM4 | 11 |
親機の配線
初期状態のとき、親機は最大12本のデジタル信号を受信できます。
上図では DIP 9番 O3
ピンを出力として使用していますが、他のOx
ピンも同様に使用できます。また、超簡単!標準アプリにはないチャネル上書き機能を検証するため、DIP 23番 C1
ピンへタクトスイッチを接続しています。
子機の配線
初期状態のとき、子機は最大12本のデジタル信号を送信できます。
上図では DIP 17番 I3
ピンを入力として使用していますが、他のIx
ピンも同様に使用できます。また、こちらも同様にチャネル上書き機能を検証するため、DIP 23番 C1
ピンへタクトスイッチを接続しています。
動作確認
- 子機の
I3
へ接続したボタンを押したり離したりします- 親機の
O3
へ接続した LED が点灯したり消灯したりします。
- 親機の
- 子機の
C1
へ接続したボタンを押しながら、I3
のボタンを押したり離したりします- 子機の周波数チャネルを一時的に上書きするため、通信できません。
- 親機と子機の
C1
へ接続したボタンを押しながら、子機のI3
へ接続したボタンを押したり離したりします- 親機と子機の周波数チャネルを両方とも上書きするため、再び通信できるようになります。
C1
/C2
ピンは、次のように周波数チャネルを上書きします。
C2 | C1 | 周波数チャネル |
---|---|---|
未接続 | 未接続 | 既定値(初期値は16) |
未接続 | GND | 12 |
GND | 未接続 | 21 |
GND | GND | 25 |
ボタンと LED に余りがあれば、入出力を増やしてみましょう。
12系統あるため、例えば 7セグメント LED を使用できます。
高度な機能を使ってみる
次のようなシチュエーションを想定して、インタラクティブモードによる設定変更を行ってみましょう。
- 子機と親機の入出力の割り当てを変更し、双方とも6入力6出力とする
- 子機の入力を最短で親機へ反映する
- パケットが断絶した際に出力信号を復帰させる
- 子機を省電力リモコンとする
- 子機を長押しによる連続送信へ対応した省電力リモコンとする
子機と親機を6入力6出力とする
インタラクティブモードからオプションビットの値を変更することで、入出力の割り当てを下記のなかから選ぶことができます。
子機入力 | 子機出力 | 親機入力 | 親機出力 | 備考 |
---|---|---|---|---|
12 | 0 | 0 | 12 | 初期状態 |
8 | 4 | 4 | 8 | オプションビット0x00001000 |
6 | 6 | 6 | 6 | オプションビット0x00002000 |
0 | 12 | 12 | 0 | オプションビット0x00003000 |
ここでは、双方とも6入力6出力としてみましょう。
- TWELITE STAGE アプリを立ち上げる
- シリアルポート選択から接続したデバイスを選択する
- 「メインメニュー」から「3: インタラクティブモード」を選択する
Enter
を押し、設定項目が表示されることを確認するo
(小文字)を入力し、オプションビットの値00002000
を入力してEnter
を押下するS
(大文字)を入力して保存し、ESC
を押下して終了
これで次のように、子機と親機がともに6本の入出力をもつ割り当てとなります。
名称 | 子機 | 親機 | 標準 | DIP # |
---|---|---|---|---|
I1 /O5 | I1 | I1 | DI1 | 15 |
I2 /O6 | I2 | I2 | DI2 | 16 |
I3 /O7 | I3 | I3 | DI3 | 17 |
I4 /O8 | I4 | I4 | DI4 | 18 |
I5 /O1 | O1 | O1 | DO1 | 5 |
I6 /O2 | O2 | O2 | DO2 | 8 |
I7 /O3 | O3 | O3 | DO3 | 9 |
I8 /O4 | O4 | O4 | DO4 | 12 |
I9 /O9 | O5 | I5 | SCL | 2 |
I10 /O10 | O6 | I6 | SDA | 19 |
I11 /O11 | I5 | O5 | PWM1 | 4 |
I12 /O12 | I6 | O6 | PWM4 | 11 |
子機の入力を最短で親機へ反映する
子機の連続モードを使用するとき、子機の入力から親機の出力までに通常は 30-70ms 程度の遅延が発生します。すばやい応答が必要とされる場面では、この遅延を小さくするためにインタラクティブモードからオプションビット0x00000001
:低レイテンシモードを設定します。
子機の設定
- TWELITE STAGE アプリを立ち上げる
- シリアルポート選択から接続したデバイスを選択する
- 「メインメニュー」から「3: インタラクティブモード」を選択する
Enter
を押し、設定項目が表示されることを確認するo
(小文字)を入力し、オプションビットの値00000001
を入力してEnter
を押下するS
(大文字)を入力して保存し、ESC
を押下して終了
ほぼ同時に複数の入力が変化した際は、順番に送信します。そのため、次に処理される入力は遅延してしまうことに注意してください。
また、入力にチャタリングが発生した場合、そのまま出力へ反映されてしまう場合があることにも注意してください。
低レイテンシモードを子機の間欠モードへ適用したときの振る舞いは、連続モードと異なります。
- 割り込みから起床した際は、対象の割り込みポートの値だけを送信します
- あるポートを割り込み起床ピンとして利用し、起床した際に他のポートの状態を同時に読むことはできません
- スリープから復帰した際は、IOポートの状態を通常の1/4の時間で確定させます
パケットの断絶時に信号を復帰させる
いずれかの入力がLoの状態のまま電波が途切れた場合には、実際の入力がLoからHiへ戻っても出力はLoを維持します。
パケットが断絶した際に信号を元の状態へ戻すには、リモコン長押しモードを適用します。リモコン長押しモードでは、送信側の入力が変化してからしばらくの間、継続的に信号を送信します。受信側では、Lo 状態を示すパケットが断絶してから一定の時間が経過すると、タイムアウトして出力を Hi へ戻します。
子機の設定
M1
/M2
/M3
を開放し、子機:連続モード を設定する- TWELITE STAGE アプリを立ち上げる
- シリアルポート選択から接続したデバイスを選択する
- 「メインメニュー」から「3: インタラクティブモード」を選択する
Enter
を押し、設定項目が表示されることを確認するo
(小文字)を入力し、オプションビットの値00000100
を入力してEnter
を押下するd
(小文字)を入力し、ホールド/長押しモードの対象(000000001010
ならI2
とI4
、長押し時に連続送信するポート)を入力してEnter
を押下するD
(大文字)を入力し、ホールド/長押しモードの時間(すべての入力がLoからHiへ戻ったあとに送信を続ける時間)を入力してEnter
を押下するS
(大文字)を入力して保存し、ESC
を押下して終了
親機の設定
M1
/M2
/M3
を開放し、子機:連続モード を設定する- TWELITE STAGE アプリを立ち上げる
- シリアルポート選択から接続したデバイスを選択する
- 「メインメニュー」から「3: インタラクティブモード」を選択する
Enter
を押し、設定項目が表示されることを確認するo
(小文字)を入力し、オプションビットの値00000100
を入力してEnter
を押下するd
(小文字)を入力し、ホールド/長押しモードの対象(000000001010
ならO2
とO4
、断絶時にタイムアウトするポート)を入力してEnter
を押下するD
(大文字)を入力し、ホールド/長押しモードの時間(Loの信号が途切れてからHiへ戻すまでの時間)を入力してEnter
を押下するS
(大文字)を入力して保存し、ESC
を押下して終了
子機を省電力リモコンとする
子機を電池で駆動させる場合には、スリープと起床を繰り返す間欠モードが有効です。低レイテンシモードおよびホールドモードを併用することで、子機のボタンを押した際に親機の出力を設定した時間にわたって維持する動作を実現できます。
子機の設定
M1
/M2
/M3
をGND
へ接続し、子機:間欠10秒モード を設定する- TWELITE STAGE アプリを立ち上げる
- シリアルポート選択から接続したデバイスを選択する
- 「メインメニュー」から「3: インタラクティブモード」を選択する
Enter
を押し、設定項目が表示されることを確認するo
(小文字)を入力し、オプションビットの値00000001
を入力してEnter
を押下するS
(大文字)を入力して保存し、ESC
を押下して終了
親機の設定
M1
/M2
/M3
を開放し、子機:連続モード を設定する- TWELITE STAGE アプリを立ち上げる
- シリアルポート選択から接続したデバイスを選択する
- 「メインメニュー」から「3: インタラクティブモード」を選択する
Enter
を押し、設定項目が表示されることを確認するd
(小文字)を入力し、ホールド/長押しモードの対象(000000001010
ならO2
とO4
、ホールドするポート)を入力してEnter
を押下するD
(大文字)を入力し、ホールド/長押しモードの時間(ホールドする時間)を入力してEnter
を押下するS
(大文字)を入力して保存し、ESC
を押下して終了
子機を長押し省電力リモコンとする
子機を電池で駆動させる場合には、スリープと起床を繰り返す間欠モードが有効です。低レイテンシモードおよびリモコン長押しモードを併用することで、子機のボタンを押している間に親機への送信を連続的に行うことができます。また、子機のボタンを離したあとに一定の時間にわたって送信を続け、親機側では子機のボタンを押した状態の電波が途切れてから一定の時間が経過した場合に出力を元に戻します。このため、省電力性能に優れた子機の入力をより確実に親機へ届けることができます。
子機の設定
M1
/M2
/M3
をGND
へ接続し、子機:間欠10秒モード を設定する- TWELITE STAGE アプリを立ち上げる
- シリアルポート選択から接続したデバイスを選択する
- 「メインメニュー」から「3: インタラクティブモード」を選択する
Enter
を押し、設定項目が表示されることを確認するo
(小文字)を入力し、オプションビットの値00000103
(00000100
+00000001
+00000002
) を入力してEnter
を押下するd
(小文字)を入力し、ホールド/長押しモードの対象(000000001010
ならI2
とI4
、長押し時に連続送信するポート)を入力してEnter
を押下するD
(大文字)を入力し、ホールド/長押しモードの時間(すべての入力がLoからHiへ戻ったあとに送信を続ける時間)を入力してEnter
を押下するS
(大文字)を入力して保存し、ESC
を押下して終了
親機の設定
M1
/M2
/M3
を開放し、子機:連続モード を設定する- TWELITE STAGE アプリを立ち上げる
- シリアルポート選択から接続したデバイスを選択する
- 「メインメニュー」から「3: インタラクティブモード」を選択する
Enter
を押し、設定項目が表示されることを確認するo
(小文字)を入力し、オプションビットの値00000100
を入力してEnter
を押下するd
(小文字)を入力し、ホールド/長押しモードの対象(000000001010
ならO2
とO4
、断絶時にタイムアウトするポート)を入力してEnter
を押下するD
(大文字)を入力し、ホールド/長押しモードの時間(Loの信号が途切れてからHiへ戻すまでの時間)を入力してEnter
を押下するS
(大文字)を入力して保存し、ESC
を押下して終了