セクションの複数ページをまとめています。 印刷またはPDF形式で保存...

もとのページに戻る

2024-09-06 現在

リモコンアプリ マニュアル

最新版

導入方法

リモコンアプリ(App_IO)を導入するには TWELITE STAGE SDK をインストールして、TWELITE STAGE アプリを使って書き換えてください。[アプリ書換] → [TWELITE APPSビルド&書換] → [App_IO]を選択します。

機能

12個までのスイッチ等の接点入力を無線送信できます。

超簡単!標準アプリ(App_Twelite)との違いは次の通りです。

  • ポート数が増加し、最大12ポートを使用できる
  • 入出力の割り当ては4種類(12:0, 8:4, 6:6, 0:12)
  • 外部配線で周波数チャネルを4種類から選択できる。
  • 通信を暗号化できる
  • 特定の相手とのみ通信できる(アプリケーションIDの自動設定)

1 - リモコンアプリのピン配置

リモコンアプリが使用するピンの機能

TWELITE / TWELITE DIP

リモコンアプリが使用するピンの機能を、下図の超簡単!標準アプリのピン名を使って表します。

超簡単!標準アプリのピン配置表

超簡単!標準アプリのピン配置表

DIP #IO標準リモコン機能
1GNDGNDGND電源入力
2DIO14SCLI9/O9デジタル入出力
3DIO7RXRXシリアル入出力
4DIO5PWMI11/O11デジタル入出力
5DIO18DO1I5/O1デジタル入出力
6DO0PWMLEDステータスLED出力
7DO1M3
8DIO19DO2I6/O2デジタル入出力
9DIO4DO3I7/O3デジタル入出力
10DIO6TXTXシリアル入出力
11DIO8PWMI12/O12デジタル入出力
12DIO9DO4I8/O4デジタル入出力
13DIO10M1M1モード設定入力
14GNDGNDGND電源入力
28VCCVCCVCC電源入力
27DIO3M3M3モード設定入力
26DIO2M2M2モード設定入力
25DIO1AI4C2チャネル設定入力
24ADC2AI3
23DIO0AI2C1チャネル設定入力
22ADC1AI1
21RESETNRSTRSTリセット入力
22DIO17BPSBPS代替ボーレート設定入力
19DIO15SDAI10/O10デジタル入出力
18DIO16DI4I4/O8デジタル入出力
17DIO11DI3I3/O7デジタル入出力
16DIO13DI2I2/O6デジタル入出力
15DIO12DI1I1/O5デジタル入出力

電源入力

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)の送信と受信に使用します。

ステータスLED出力

アプリケーションID自動設定時のステータス出力を行う際に使用します。

出力が Lo のとき光るようにしてください(吸い込み方式)。

設定入力

モード設定入力

Mxピンを未接続またはGNDへ接続することで、親機、子機、中継機といった動作モードを切り替えることができます。

代替ボーレート設定入力

BPSピンを未接続またはGNDへ接続することで、UART のボーレート(通信速度)を 115200bps 以外の値へ変更できます。

チャネル設定入力

一時的に周波数チャネルを上書きします。

C2C1周波数チャネル
未接続未接続既定値(初期値は16)
未接続GND12
GND未接続21
GNDGND25

リセット入力

RSTGNDとの間にプッシュボタンを接続することで、リセットボタンを実装できます。RSTは内部プルアップされています。

2 - リモコンアプリの動作モード

各動作モードの説明
リモコンアプリ(App_IO)には、6つの動作モードがあります。

動作モードの一覧

各モードは、Mx ピンを未接続または GND へ接続することで設定します。

M3M2M1モード機能省電力動作LID初期値
OOO子機:連続入力状態を親機へ送信するほか、常に受信データを待機して出力へ反映します120
OOG親機:連続入力状態を子機へ送信するほか、常に受信データを待機して出力へ反映します0
OGO中継機:連続常に受信データを待機して中継します122
OGG子機:連続0.03秒頻繁に入力状態を親機へ送信するほか、常に受信データを待機して出力へ反映します123
GOO子機:間欠1秒1秒おきに入力状態を親機へ送信するほか、受信を無効化して常に節電モードへ入ります124
GGO(ペアリングモード)詳細
GGG子機:間欠10秒10秒おきに入力状態を親機へ送信するほか、受信を無効化して常に節電モードへ入ります127

O:未接続(OPEN)、G:GNDへ接続

初期状態は子機:連続モードです。

モードによって端末を識別するための論理デバイスID(LID)の初期値は異なります。

親機

連続モード

親機:連続モード

信号入力の変化を検知したとき、また1秒おきに、すべての子機へデータを送信します。

また子機から送信されるデータを常時待機しており、反応がよいものの、常に電力を消費します。

  • 受信:常に待機
  • 送信:入力変化時/1秒おき

子機

連続モード

子機:連続モード

信号入力の変化を検知したとき、また1秒おきに、すべての親機へデータを送信します。

また親機から送信されるデータを常時待機しており、反応がよいものの、常に電力を消費します。

親機との通信のイメージ

親機との通信のイメージ

  • 受信:常に待機
  • 送信:入力変化時/1秒おき

子機:連続0.03秒モード

子機:連続モードの定期送信の間隔は1秒ですが、これを0.03秒に短縮するモードです。

親機から送信されるデータを常時待機しているものの、子機から親機への通信で帯域を占有してしまうため、親機の入力に対する反応は鈍くなってしまいます。常に電力を消費します。

親機との通信のイメージ

親機との通信のイメージ

  • 受信:常に待機
  • 送信:入力変化時/0.03秒おき

間欠モード

子機:間欠1秒モード

信号入力の変化を検知したとき、また1秒おきに節電モードを解除し、すべての親機へデータを送信します。

受信機能を無効とするため、親機の制御を受けることはできません。省電力性能に優れたモードです。

親機との通信のイメージ

親機との通信のイメージ

  • 受信:無効
  • 送信:入力変化時/1秒おき

子機:間欠10秒モード

信号入力の変化を検知したとき、また10秒おきに節電モードを解除し、すべての親機へデータを送信します。

受信機能を無効とするため、親機の制御を受けることはできません。省電力性能に優れたモードです。

親機との通信のイメージ

親機との通信のイメージ

  • 受信:無効
  • 送信:入力変化時/10秒おき

中継機

連続モード

中継機:連続モード

中継機は、受信したパケットを送信します。

親機と子機の間に3つまで設置できますが、中継機を増やすとパケットの数が増大するため、干渉しやすくなることに注意してください。

中継のイメージ

中継のイメージ

  • 受信:常に待機
  • 送信:受信時

3 - リモコンアプリの代替ボーレート設定

UART 通信に使用するボーレート設定の変更
リモコンアプリ(App_IO)はデフォルトで 115200 bps のボーレートを UART 通信に使用しますが、これを変更できます。

代替ボーレート設定の有効化

BPS ピンを GND へ接続することで、代替ボーレート設定を有効化できます。

BPS内容ボーレート備考
Oデフォルト115200bps
G上書き設定38400bps変更

O:未接続(OPEN)、G:GNDへ接続

4 - リモコンアプリのUART機能

UART機能で利用するデータ形式
リモコンアプリ(App_IO)の UART 機能で使用するデータ形式を解説します。

デジタル入出力

0x81:相手端末からの状態通知

受信した入力信号の状態を出力します。

データ形式

#データ内容備考
charヘッダ:のみ
0uint8送信元の論理デバイスID
1uint8コマンド番号0x81のみ
2uint8パケット識別子0x0Fのみ
3uint8プロトコルバージョン0x01のみ
4uint8LQI0-255
5uint32送信元のシリアルID0x8???????
9uint8送信先の論理デバイスID
10uint16タイムスタンプ1秒で64カウント、MSBは内部フラグ
12uint8中継回数
13uint16デジタル信号LSBから順にIxへ対応、0がHigh
15uint16デジタル信号マスクLSBから順にIxへ対応、1なら有効
17uint16デジタル信号フラグLSBから順にIxへ対応、1なら割り込み
19uint8未使用内部管理用
uint8チェックサムLRC8
charフッタCR (0x0D/'\r')
charフッタLF (0x0A/'\n')

出力データの例

:01810F01DB8630000200645F000040004F00400049

0x80:相手端末の出力変更

相手端末の出力信号を制御します。

データ形式

#データ内容備考
charヘッダ:のみ
0uint8送信先の論理デバイスID親機0x00,子機0x01-0x64,全子機0x78
1uint8コマンド番号0x80のみ
2uint8書式バージョン0x01のみ
3uint16デジタル信号LSBからOxに対応、0でHigh
5uint16デジタル信号マスクLSBからOxに対応、1で有効
7uint16未使用0
9uint16未使用0
11uint16未使用0
13uint16未使用0
uint8チェックサムLRC8
charフッタCR (0x0D/'\r')
charフッタLF (0x0A/'\n')

UART 入出力

5 - リモコンアプリのカスタムデフォルト機能

デフォルトの設定を変更したファームウェアの作成
カスタムデフォルト機能によって、ファームウェアに含まれるデフォルトのパラメータを変更できます。

例えば、ボーレートを 115200bps から 9600bps へ変更したファームウェアを作成しておけば、最初から 9600bps で使用できます。

設定手順

1. 設定を適用

インタラクティブモードの設定を変更し、Sを押下して保存します。

2. 設定内容をダウンロード

xmodem プロトコルのデータをダウンロードできるソフトウェアを用意します。

再度インタラクティブモードへ入った状態(項目を選ぶ前の状態)として、xmodem のダウンロードを要求します。

ダウンロードに成功すると、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 へ書き込みます。

6 - リモコンアプリのペアリング機能

アプリケーションIDの自動設定による親機と子機のグループ化
リモコンアプリ(App_IO)には、インタラクティブモードを使わずに親機と子機のグループを作成する機能があります。

設定方法

親機のシリアルIDに基づいたアプリケーションIDを生成し、それを子機へ流し込むことでグループを作成します。LED ピンへ LED を接続すると、設定の成否を確認できます。

接続の様子

接続の様子

  1. 親機と子機の LED へ LED と 電流制限抵抗(680Ω)を接続する(吸い込み)
  2. M1を開放したまま、M2M3GNDへ接続する
  3. 親機の電源を入れて、LED の点滅を確認する
  4. 5秒以内に親機の近くで子機の電源を入れ、LED が消灯することを確認する(失敗すると点灯)

7 - インタラクティブモード(リモコンアプリ)

インタラクティブモードによる設定変更
インタラクティブモードでアプリの詳細設定を行うことができます。

ここではリモコンアプリ(App_IO)に固有の機能を説明します。共通機能については、TWELITE APPS マニュアル のトップページを参照してください。

表示例

次のような画面を表示します。

--- 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アプリケーションID0x6772010732bit
i論理デバイスID120親機121,子機1-100,IDなし子機120,未設定0
c周波数チャネル1611-26
x再送回数と送信出力3
再送回数01-9回、0はデフォルト:2回
送信出力30-3
t子機間欠1秒モードの間隔1000100-64000ms
y子機間欠10秒モードの間隔02-10000s, 無効0
f子機連続0.03秒モードのサイクル324/8/16/32回毎秒
dホールド/長押しモードの対象000000000000右からI1-I2, 有効1
Dホールド/長押しモードの時間100020-64000ms
oオプションビット0x00000000その他の詳細設定
bUART代替ボーレート38400BPSピンで有効化
pUARTパリティNストップビットは1固定
C暗号化0無効0,AES128bit1
K暗号鍵-最大16文字

各コマンドの詳細を次に示します。

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 I2I12 と並びます。

例えば 000000001010 を指定すると、I2I4にホールドモードを適用できます。任意のピンを対象とした場合、対象としていないポートからは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 の数値を指定します。各ビットに紐付いた設定を有効化できます。

対象ビット設定項目初期送信受信連続間欠
0x00000001低レイテンシモード0️⃣
0x00000002低レイテンシモード(スリープ割り込み)0️⃣
0x00000010ACKつき送信の有効化0️⃣
0x00000020定期送信の無効化0️⃣
0x00000100リモコン長押しモードの有効化0️⃣
0x00000200C1/C2チャネル切り替えの無効化0️⃣
0x00000400Ixの入力を反転0️⃣
0x00000800Ixの内部プルアップを停止0️⃣
0x00001000子機:8入力4出力/親機:8出力4入力0️⃣
0x00002000子機:6入力6出力/親機:6出力6入力0️⃣
0x00003000子機:0入力12出力/親機:0出力12入力0️⃣
0x00010000子機の受信を強制的に有効化0️⃣
0x00020000入出力変化時のUART出力の停止0️⃣
0x00040000C2のウォッチドッグ出力を有効化0️⃣
0x00400000Oxの出力を反転0️⃣

b:UART代替ボーレート

BPSピンをGNDへ接続して起動した場合に選択される代替ボーレートを38400bpsから上書きします。

値は9600/19200/38400/57600/115200/230400から選択できます。他の値を指定すると、誤差が生じる可能性があります。

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:リモコン長押しモードの有効化

ホールドモードの代わりに、リモコン長押しモードを適用します。

0x00000200C1/C2チャネル切り替えの無効化

C1/C2ピンによるチャネル切り替え機能を停止します。

0x00000400Ixの入力を反転

入力が Hi のとき1を、Lo のとき0を送信します。

0x00000800Ixの内部プルアップを停止

Ixの内部プルアップ(約50kΩ)をすべて停止します。

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出力の停止

入出力変化時のメッセージ出力を停止します

0x00040000C2のウォッチドッグ出力を有効化

C2ポートからウォッチドッグ出力を行います。

アプリケーションループでIOを制御し、約32Hzの矩形波を出力します。

モジュールのハングアップに備えて、自動復帰のために外部のリセット回路を接続し、モジュールを強制的にリセットする際に使用します。

0x00400000Oxの出力を反転

受信した入力ポートの状態が 0 のとき Lo を、1 のとき Hi を出力します。