1 - リモコンアプリのピン配置 リモコンアプリが使用するピンの機能
TWELITE / TWELITE DIP リモコンアプリが使用するピンの機能を、下図の超簡単!標準アプリのピン 名を使って表します。
超簡単!標準アプリのピン配置表
電源入力 VCC
/GND
には、3.3V(2.0-3.6V)の電源を接続します。
デジタル入出力 子機:12入力0出力/親機:12出力0入力 デフォルトの入出力の割り当て。
名称 子機 親機 標準 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
子機:8入力4出力/親機:8出力4入力 オプションビット:0x00001000
の設定を有効とした場合の入出力の割り当て。
名称 子機 親機 標準 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
I5
O5
SCL
2 I10
/O10
I6
O6
SDA
19 I11
/O11
I7
O7
PWM1
4 I12
/O12
I8
O8
PWM4
11
子機:6入力6出力/親機:6出力6入力 オプションビット:0x00002000
の設定を有効とした場合の入出力の割り当て。
名称 子機 親機 標準 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
子機:0入力12出力/親機:0出力12入力 オプションビット:0x00003000
の設定を有効とした場合の入出力の割り当て。
名称 子機 親機 標準 DIP # I1
/O5
O5
I1
DI1
15 I2
/O6
O6
I2
DI2
16 I3
/O7
O7
I3
DI3
17 I4
/O8
O8
I4
DI4
18 I5
/O1
O1
I5
DO1
5 I6
/O2
O2
I6
DO2
8 I7
/O3
O3
I7
DO3
9 I8
/O4
O4
I8
DO4
12 I9
/O9
O9
I9
SCL
2 I10
/O10
O10
I10
SDA
19 I11
/O11
O11
I11
PWM1
4 I12
/O12
O12
I12
PWM4
11
シリアル入出力 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
へ接続することで設定します。
M3
M2
M1
モード 機能 省電力動作 LID初期値 O O O 子機:連続 入力状態を親機へ送信するほか、常に受信データを待機して出力へ反映します 120
O O G 親機:連続 入力状態を子機へ送信するほか、常に受信データを待機して出力へ反映します 0
O G O 中継機:連続 常に受信データを待機して中継します 122
O G G 子機:連続0.03秒 頻繁に入力状態を親機へ送信するほか、常に受信データを待機して出力へ反映します 123
G O O 子機:間欠1秒 1秒おきに入力状態を親機へ送信するほか、受信を無効化して常に節電モードへ入ります ✅ 124
G 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 uint8
LQI 0
-255
5 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
ヘッダ :
01
0 uint8
送信元の論理デバイスID 0x78
81
1 uint8
コマンド番号 0x81
0F
2 uint8
パケット識別子 0x15
01
3 uint8
プロトコルバージョン 0x01
DB
4 uint8
LQI 219/255
86300002
5 uint32
送信元のシリアルID 0x6300002
00
9 uint8
送信先の論理デバイスID 0x00
645F
10 uint16
タイムスタンプ 約401
秒 00
12 uint8
中継回数 0
0040
13 uint16
デジタル信号 I7
がLo004F
15 uint16
デジタル信号マスク I7
,I1
-I4
が有効0040
17 uint16
デジタル信号フラグ I7
は割り込みにより変化00
19 uint8
未使用 49
uint8
チェックサム 0x49
char
フッタ \r
char
フッタ \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
未使用 0
9 uint16
未使用 0
11 uint16
未使用 0
13 uint16
未使用 0
uint8
チェックサム LRC8 char
フッタ CR (0x0D
/'\r'
) char
フッタ LF (0x0A
/'\n'
)
親機・中継機アプリはこの書式に対応していません。リモコンアプリの親機のみ対応しています。
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
へ接続して起動した場合に選択される代替ボーレートを38400
bpsから上書きします。
値は9600
/19200
/38400
/57600
/115200
/230400
から選択できます。他の値を指定すると、誤差が生じる可能性があります。
BPS
ピンを開放して起動した場合、この設定は適用されません。115200
bpsに固定されます。
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 を出力します。