1 - リモコンアプリのピン配置 リモコンアプリが使用するピンの機能
TWELITE / TWELITE DIP リモコンアプリが使用するピンの機能を、下図の超簡単!標準アプリのピン 名を使って表します。
超簡単!標準アプリのピン配置表
電源入力 VCC/GND には、3.3V(2.0-3.6V)の電源を接続します。
デジタル入出力 子機:12入力0出力/親機:12出力0入力 デフォルトの入出力の割り当て。
名称 子機 親機 標準 DIP # I1/O5I1O5DI115 I2/O6I2O6DI216 I3/O7I3O7DI317 I4/O8I4O8DI418 I5/O1I5O1DO15 I6/O2I6O2DO28 I7/O3I7O3DO39 I8/O4I8O4DO412 I9/O9I9O9SCL2 I10/O10I10O10SDA19 I11/O11I11O11PWM14 I12/O12I12O12PWM411
子機:8入力4出力/親機:8出力4入力 オプションビット:0x00001000 の設定を有効とした場合の入出力の割り当て。
名称 子機 親機 標準 DIP # I1/O5I1I1DI115 I2/O6I2I2DI216 I3/O7I3I3DI317 I4/O8I4I4DI418 I5/O1O1O1DO15 I6/O2O2O2DO28 I7/O3O3O3DO39 I8/O4O4O4DO412 I9/O9I5O5SCL2 I10/O10I6O6SDA19 I11/O11I7O7PWM14 I12/O12I8O8PWM411
子機:6入力6出力/親機:6出力6入力 オプションビット:0x00002000 の設定を有効とした場合の入出力の割り当て。
名称 子機 親機 標準 DIP # I1/O5I1I1DI115 I2/O6I2I2DI216 I3/O7I3I3DI317 I4/O8I4I4DI418 I5/O1O1O1DO15 I6/O2O2O2DO28 I7/O3O3O3DO39 I8/O4O4O4DO412 I9/O9O5I5SCL2 I10/O10O6I6SDA19 I11/O11I5O5PWM14 I12/O12I6O6PWM411
子機:0入力12出力/親機:0出力12入力 オプションビット:0x00003000 の設定を有効とした場合の入出力の割り当て。
名称 子機 親機 標準 DIP # I1/O5O5I1DI115 I2/O6O6I2DI216 I3/O7O7I3DI317 I4/O8O8I4DI418 I5/O1O1I5DO15 I6/O2O2I6DO28 I7/O3O3I7DO39 I8/O4O4I8DO412 I9/O9O9I9SCL2 I10/O10O10I10SDA19 I11/O11O11I11PWM14 I12/O12O12I12PWM411
シリアル入出力 TX/RX は、リモコン(UART)の送信と受信に使用します。
3.3V レベルのため、Arduino など 5V レベルで動作するマイコン等と接続する場合はレベル変換を行ってください。
ステータスLED出力 アプリケーションID自動設定時のステータス出力を行う際に使用します。
出力が Lo のとき光るようにしてください(吸い込み方式)。
設定入力 モード設定入力 Mxピンを未接続またはGNDへ接続することで、親機、子機、中継機といった動作モードを切り替える ことができます。
代替ボーレート設定入力 BPSピンを未接続またはGNDへ接続することで、UART のボーレート(通信速度)を 115200bps 以外の値へ変更 できます。
チャネル設定入力 一時的に周波数チャネルを上書きします。
間欠モードでは、これらのピンをプルアップするか、
無効化 してください。暗電流が発生するおそれがあります。
リセット入力 RSTとGNDとの間にプッシュボタンを接続することで、リセットボタンを実装できます。RSTは内部プルアップされています。
2 - リモコンアプリの動作モード 各動作モードの説明
リモコンアプリ(App_IO)には、6つの動作モードがあります。
動作モードの一覧 各モードは、Mx ピンを未接続または GND へ接続することで設定します。
M3M2M1モード 機能 省電力動作 LID初期値 O O O 子機:連続 入力状態を親機へ送信するほか、常に受信データを待機して出力へ反映します 120O O G 親機:連続 入力状態を子機へ送信するほか、常に受信データを待機して出力へ反映します 0O G O 中継機:連続 常に受信データを待機して中継します 122O G G 子機:連続0.03秒 頻繁に入力状態を親機へ送信するほか、常に受信データを待機して出力へ反映します 123G O O 子機:間欠1秒 1秒おきに入力状態を親機へ送信するほか、受信を無効化して常に節電モードへ入ります ✅ 124G G O (ペアリングモード) 詳細 G G G 子機:間欠10秒 10秒おきに入力状態を親機へ送信するほか、受信を無効化して常に節電モードへ入ります ✅ 127
O:未接続(OPEN)、G:GNDへ接続
初期状態は子機:連続モードです。
モードによって端末を識別するための論理デバイスID(LID)の初期値は異なります。
親機または中継機モードに限り、インタラクティブモード で切り替えできます。
親機は121、中継機は122としてください。
親機 連続モード 親機:連続モード 信号入力の変化を検知したとき、また1秒おきに、すべての子機へデータを送信します。
また子機から送信されるデータを常時待機しており、反応がよいものの、常に電力を消費します。
子機 連続モード 子機:連続モード 信号入力の変化を検知したとき、また1秒おきに、すべての親機へデータを送信します。
また親機から送信されるデータを常時待機しており、反応がよいものの、常に電力を消費します。
親機との通信のイメージ
定期送信の無効化 インタラクティブモードでオプションビット 0x00000020 を設定することで、1秒おきの定期送信を無効化できます。
子機:連続0.03秒モード 子機:連続モードの定期送信の間隔は1秒ですが、これを0.03秒に短縮するモードです。
親機から送信されるデータを常時待機しているものの、子機から親機への通信で帯域を占有してしまうため、親機の入力に対する反応は鈍くなってしまいます。常に電力を消費します。
親機との通信のイメージ
1台の子機だけでほとんどの帯域を占有してしまうため、同時に複数の子機を使用することはなるべく避けてください。
間欠モード 子機:間欠1秒モード 信号入力の変化を検知したとき、また1秒おきに節電モードを解除し、すべての親機へデータを送信します。
受信機能を無効とするため、親機の制御を受けることはできません。省電力性能に優れたモードです。
親機との通信のイメージ
子機:間欠10秒モード 信号入力の変化を検知したとき、また10秒おきに節電モードを解除し、すべての親機へデータを送信します。
受信機能を無効とするため、親機の制御を受けることはできません。省電力性能に優れたモードです。
親機との通信のイメージ
中継機 連続モード 中継機:連続モード 中継機は、受信したパケットを送信します。
親機と子機の間に3つまで設置できますが、中継機を増やすとパケットの数が増大するため、干渉しやすくなることに注意してください。
中継のイメージ
3 - リモコンアプリの代替ボーレート設定 UART 通信に使用するボーレート設定の変更
リモコンアプリ(App_IO)はデフォルトで 115200 bps のボーレートを UART 通信に使用しますが、これを変更できます。
代替ボーレート設定の有効化 BPS ピンを GND へ接続することで、代替ボーレート設定を有効化できます。
BPS内容 ボーレート 備考 O デフォルト 115200bps G 上書き設定 38400bps 変更 可
O:未接続(OPEN)、G:GNDへ接続
インタラクティブモードのボーレート設定は、代替ボーレートの値を示しています。BPS ピンが GND に接続されていないと、インタラクティブモードの設定値は適用されません。
インタラクティブモードは、UART 通信を利用します。TWELTIE のボーレートを切り替えた際は、インタラクティブモードを使用する前に PC 側のボーレートを合わせなくてはなりません(
TWELITE STAGE アプリの設定変更 )。
4 - リモコンアプリのUART機能 UART機能で利用するデータ形式
リモコンアプリ(App_IO)の UART 機能で使用するデータ形式を解説します。
デジタル入出力 0x81:相手端末からの状態通知受信した入力信号の状態を出力します。
データ形式 # データ 内容 備考 charヘッダ :のみ0 uint8送信元の論理デバイスID 1 uint8コマンド番号 0x81のみ2 uint8パケット識別子 0x0Fのみ3 uint8プロトコルバージョン 0x01のみ4 uint8LQI 0-2555 uint32送信元のシリアルID 0x8???????9 uint8送信先の論理デバイスID 10 uint16タイムスタンプ 1秒で64カウント、MSBは内部フラグ 12 uint8中継回数 13 uint16デジタル信号 LSBから順にIxへ対応、0がHigh 15 uint16デジタル信号マスク LSBから順にIxへ対応、1なら有効 17 uint16デジタル信号フラグ LSBから順にIxへ対応、1なら割り込み 19 uint8未使用 内部管理用 uint8チェックサム LRC8 charフッタ CR (0x0D/'\r') charフッタ LF (0x0A/'\n')
出力データの例
:01810F01DB8630000200645F000040004F00400049
上記データの解釈 # データ 内容 値 :charヘッダ :010 uint8送信元の論理デバイスID 0x78811 uint8コマンド番号 0x810F2 uint8パケット識別子 0x15013 uint8プロトコルバージョン 0x01DB4 uint8LQI 219/255863000025 uint32送信元のシリアルID 0x6300002009 uint8送信先の論理デバイスID 0x00645F10 uint16タイムスタンプ 約401秒 0012 uint8中継回数 0004013 uint16デジタル信号 I7がLo004F15 uint16デジタル信号マスク I7,I1-I4が有効004017 uint16デジタル信号フラグ I7は割り込みにより変化0019 uint8未使用 49uint8チェックサム 0x49charフッタ \rcharフッタ \n
0x80:相手端末の出力変更相手端末の出力信号を制御します。
データ形式 # データ 内容 備考 charヘッダ :のみ0 uint8送信先の論理デバイスID 親機0x00,子機0x01-0x64,全子機0x78 1 uint8コマンド番号 0x80のみ2 uint8書式バージョン 0x01のみ3 uint16デジタル信号 LSBからOxに対応、0でHigh 5 uint16デジタル信号マスク LSBからOxに対応、1で有効 7 uint16未使用 09 uint16未使用 011 uint16未使用 013 uint16未使用 0uint8チェックサム LRC8 charフッタ CR (0x0D/'\r') charフッタ LF (0x0A/'\n')
親機・中継機アプリ(v1.2以前)はこの書式に対応していません。
TWELITE GOLD 版の App_IO v1.3.2 では、送信コマンドが動作しない場合がある不具合が報告されています。
原因は調査中です。TWELITE STICK では、App_Wings v1.3.2 (TWELITE Apps統合版も可)をご利用ください。
UART 入出力 5 - リモコンアプリのカスタムデフォルト機能 デフォルトの設定を変更したファームウェアの作成
カスタムデフォルト機能によって、ファームウェアに含まれるデフォルトのパラメータを変更できます。
例えば、ボーレートを 115200bps から 9600bps へ変更したファームウェアを作成しておけば、最初から 9600bps で使用できます。
設定手順 1. 設定を適用 インタラクティブモード の設定を変更し、Sを押下して保存します。
2. 設定内容をダウンロード xmodem プロトコルのデータをダウンロードできるソフトウェアを用意します。
xmodem の仕様はチェックサム/128バイトパケットです。拡張された 1KB や CRC の形式は使用しません。
再度インタラクティブモードへ入った状態(項目を選ぶ前の状態)として、xmodem のダウンロードを要求します。
TeraTerm では、次の操作を行います。
ファイル > 転送 > XMODEM > 受信... を選択Option > Checksum, Binary を選択ファイル名を指定(例:conf.bin) 開く ボタンを押下
macOS や Linux 等では、lrzsz を利用できます。
lrx --binary --xmodem /path/to/conf.bin 通常は screen でインタラクティブモードへ入り、Ctrl+A の押下後 :exec !! lrx -b -X /path/to/conf.bin を実行します
ダウンロードに成功すると、128バイトのファイルを生成します(xmodem の実装によっては、小さいサイズになることもあります)。
3. カスタムバイナリの作成 ダウンロードしたファイルをファームウェアのバイナリファイルの末尾へ連結し、カスタムバイナリを作成します。
連結には、コマンドラインツールや汎用のファイル連結ツールを使用してください。
実行例 ダウンロードした xmodem のファイルを conf.bin、元のバイナリファイルをApp_IO_BLUE_L1305_V1-3-X.bin、作成するカスタムバイナリをApp_IO_custom_V1-3-X.binとした場合の例を示します。
【Windows】
copy App_IO_BLUE_L1305_V1-3 -X.bin App_IO_custom_V1-3 -X.bin
type conf.bin >> App_IO_custom_V1-3 -X.bin 【macOS / Linux】
cat App_IO_BLUE_L1305_V1-3-X.bin conf.bin > App_IO_custom_V1-3-X.bin 4. カスタムバイナリの書き込み 連結したカスタムバイナリを TWELITE へ書き込みます。
カスタムバイナリを書き込んでからインタラクティブモードへ入ると、最初の行の末尾に C- を表示します。
--- CONFIG/APP_IO V1-04-2/SID=0x81001f1c/LID=0x78 C- --- カスタムバイナリに対してインタラクティブモードから設定を上書きして保存すると、C-の代わりにCEと表示します。
--- CONFIG/APP_IO V1-04-2/SID=0x81001f1c/LID=0x78 CE --- 6 - リモコンアプリのペアリング機能 アプリケーションIDの自動設定による親機と子機のグループ化
リモコンアプリ(App_IO)には、インタラクティブモードを使わずに親機と子機のグループを作成する機能があります。
「ペアリング」といっても、Bluetooth のペアリングとは異なります。
あくまでもアプリケーションIDを共有するだけであり、同報通信の仕組み は変わりません。
設定方法 親機のシリアルIDに基づいたアプリケーションIDを生成し、それを子機へ流し込むことでグループを作成します。LED ピンへ LED を接続すると、設定の成否を確認できます。
接続の様子
親機と子機の LED へ LED と 電流制限抵抗(680Ω)を接続する(吸い込み) M1を開放したまま、M2とM3をGNDへ接続する親機の電源を入れて、LED の点滅を確認する 5秒以内に親機の近くで子機の電源を入れ、LED が消灯することを確認する(失敗すると点灯) 7 - インタラクティブモード(リモコンアプリ) インタラクティブモードによる設定変更
インタラクティブモードでアプリの詳細設定を行うことができます。
ここではリモコンアプリ(App_IO)に固有の機能を説明します。共通機能については、TWELITE APPS マニュアル のトップページ を参照してください。
TWELITE がスリープしている間はインタラクティブモードを使用できません。
M3ピン をGNDへ接続していないことを確認してください。
表示例 次のような画面を表示します。
--- 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 コマンド 各コマンドの詳細を次に示します。
a:アプリケーションID通信を行う端末はすべて同一の値とします。論理的にネットワークを分離します。
i:論理デバイスID複数の子機を識別する必要がある場合に設定します。
識別の必要がない、できない場合は120としてください。識別の必要がある場合は、子機は1-100の任意の値に、親機は0あるいは121としてください。
c:周波数チャネル通信を行う端末はすべて同一の値とします。物理的にネットワークを分離します。
x:送信出力と再送回数電波の送信出力と、透過モードおよびヘッダ付き透過モードにおいてパケットを追加で送信する回数を指定します。
t:子機間欠1秒モードの間隔子機間欠1秒モードの間欠時間を1秒から他の値へ上書きします。単位はミリ秒です。
0を設定した場合は、タイマによる定期的な起床を無効化します。このときIxの立ち下がりエッジにより起床しますが、立ち上がりエッジでは起床しません。
y:子機間欠10秒モードの間隔子機間欠10秒モードの間欠時間を10秒から他の値へ上書きします。単位は秒です。
0を設定した場合は、タイマによる定期的な起床を無効化します。このときIxの立ち下がりエッジにより起床しますが、立ち上がりエッジでは起床しません。
f:子機連続0.03秒モードのサイクル毎秒の送信リクエストの数を32回から4/8/16回へ上書きします。再送回数は含みません。
d:ホールド/長押しモードの対象初期状態ではホールドモードの、オプションビット0x00000100 を有効としたときはリモコン長押しモードの対象とするポートを選択します。
設定値には、対象とするIxまたはOxのビットマスクを指定します。値は12文字までの0または1で構成します。LSBから順に I1 I2 … I12 と並びます。
例えば 000000001010 を指定すると、I2とI4にホールドモードを適用できます。任意のピンを対象とした場合、対象としていないポートからは50msのパルスを出力します。
ホールドモード ホールドモードの場合、対象としたポートは次のように振るまいます。
入力(送信)側:Ix すべての入力がLoからHiへ戻ったあと、設定した時間 にわたり連続して送信します(ホールド解除のため) 出力(受信)側:Ox 受信した入力のうち、Loであるものに対しては、設定した時間 にわたり出力をLoのままホールドします いずれかの出力のホールド中に再び入力がLoの信号を受信した際は、ホールドする期間を延長します リモコン長押しモード リモコン長押しモードの場合、対象としたポートは次のように振るまいます。
入力(送信)側:Ix いずれかの入力がLoである間、連続して送信します すべての入力がLoからHiへ戻ったあと、設定した時間 にわたり連続して送信します 出力(受信)側:Ox いずれかの入力がLoであるパケットが断絶してから設定した時間 が経過すると、出力をHiへ戻します D:ホールド/長押しモードの時間初期状態ではホールドモードを、オプションビット0x00000100 を有効としたときはリモコン長押しモードのホールド時間や送信間隔といった値を指定することができます。
20-64000 ms の値を指定できます。
ホールドモード ホールドモードの場合、設定した時間は次のように適用されます。
入力(送信)側:Ix 連続モードでは、すべての入力がLoからHiへ戻ったあとに連続して送信する時間を指定します。
間欠モードでは、いずれかの入力がLoである間の送信間隔を指定します。
出力(受信)側:Ox 出力を維持する時間を指定します。
リモコン長押しモード リモコン長押しモードの場合、設定した時間は次のように適用されます。
入力(送信)側:Ix すべての入力がLoからHiへ戻ったあとに連続して送信する時間を指定します。
出力(受信)側:Ox いずれかの入力がLoのパケットが断絶してからすべての出力をHiへ戻すまでの時間を指定します。
o:オプションビット32bit の数値を指定します。各ビットに紐付いた設定を有効化できます。
b:UART代替ボーレートBPSピンをGNDへ接続して起動した場合に選択される代替ボーレートを38400bpsから上書きします。
値は9600/19200/38400/57600/115200/230400から選択できます。他の値を指定すると、誤差が生じる可能性があります。
BPSピンを開放して起動した場合、この設定は適用されません。115200bpsに固定されます。
B:UARTパリティN: 無し、O: Odd(奇数)、E: Even(偶数)のいずれかを設定します。ストップビットは1のみ、ハードウェアフローは設定不可です。
C:暗号化暗号化機能の有無を指定します。
AES128bitの暗号化を有効とするには、1を指定してください。
K:暗号鍵暗号化に用いる鍵を入力します。16文字のテキストを指定します(バイナリ列は指定できません)。
オプションビットの詳細 オプションビットの値の各ビットに紐付いた設定を解説します。
0x00000001:低レイテンシモード低レイテンシモードで入力状態の監視と無線送信を行います。
ボタン監視の時間を短縮し、送信遅延を最小にします。また、連続モードでは入力の判定に割り込みを使用しますが、チャタリングの影響を受けやすくなります。間欠モードでは、入力状態の確定までの時間を短縮します。
子機のみ有効です。
0x00000002:低レイテンシモード(スリープ割り込み)間欠モード時にスリープ復帰要因がIxのHiからLoへの割り込みであったとき、割り込み要因のポート情報を速やかに送信します。
特に子機間欠10秒モードにおいて、定期起床を無効としたとき、ボタンの押し下げを検出するためにホールドモードと合わせて利用します。
子機のみ有効です。
0x00000010:ACKつき送信の有効化子機から ACK を有効とした通信を行います。親機が ACK を返した時点で送信は終了します。
複数台の親機やすべての中継機は利用できませんが、親機と安定して通信できる環境では効率のよい通信を実現できます。
子機間欠10秒モードの場合、BPSピンが出力ピンとして設定されるため、子機側のボーレートの上書きはできません。
0x00000020:定期送信の無効化子機連続モードにおける1秒おきの定期送信を無効化します。
0x00000100:リモコン長押しモードの有効化ホールドモードの代わりに、リモコン長押しモードを適用します。
0x00000200:C1/C2チャネル切り替えの無効化C1/C2ピンによるチャネル切り替え機能を停止します。
0x00000400:Ixの入力を反転入力が Hi のとき1を、Lo のとき0を送信します。
デフォルトでは、プルアップを想定しているため、入力が Hi のとき0を、 Lo のとき1を送信します。
0x00000800:Ixの内部プルアップを停止Ixの内部プルアップ(約50kΩ)をすべて停止します。
起動してからハードウェアの初期化を完了するまでの約1msの期間はプルアップされます。
0x00001000:子機:8入力4出力/親機:8出力4入力入出力ポートの割り当てを「子機:12入力0出力/親機:12出力0入力」から変更します。間欠モードでは間欠受信を行います。
0x00002000:子機:6入力6出力/親機:6出力6入力入出力ポートの割り当てを「子機:12入力0出力/親機:12出力0入力」から変更します。間欠モードでは間欠受信を行います。
0x00003000:子機:0入力12出力/親機:0出力12入力入出力ポートの割り当てを「子機:12入力0出力/親機:12出力0入力」から変更します。間欠モードでは間欠受信を行います。
0x00010000:子機の受信を強制的に有効化連続モードのとき、出力ポートの有無に関わらず強制的に受信を有効化します。
他の端末から受信したデータのUART出力を実現できます。
0x00020000:入出力変化時のUART出力の停止入出力変化時のメッセージ出力を停止します
0x00040000:C2のウォッチドッグ出力を有効化C2ポートからウォッチドッグ出力を行います。
アプリケーションループでIOを制御し、約32Hzの矩形波を出力します。
モジュールのハングアップに備えて、自動復帰のために外部のリセット回路を接続し、モジュールを強制的にリセットする際に使用します。
0x00400000:Oxの出力を反転受信した入力ポートの状態が 0 のとき Lo を、1 のとき Hi を出力します。
デフォルトでは、プルアップを想定しているため、受信した入力ポートの状態が 0 のとき Hi を、1 のとき Lo を出力します。