セクションの複数ページをまとめています。 印刷またはPDF形式で保存...
マニュアル
- 1: TWELITE STAGE SDK
- 1.1: 導入方法
- 1.1.1: フォルダ構成
- 1.1.2: プラットフォーム別の注意事項
- 1.1.2.1: Windowsへインストールする際の注意事項
- 1.1.2.2: macOSインストールする際の注意事項
- 1.1.2.3: Linuxへインストールする際の注意事項
- 1.1.2.4: Raspberry Piへインストールする際の注意事項
- 1.2: TWELITE STAGE APP
- 1.2.1: TWELITE STAGE APP マニュアル
- 1.2.1.1: パッケージの取得
- 1.2.1.2: 使用方法
- 1.2.1.2.1: キーとマウスの操作
- 1.2.1.2.2: 画面の操作
- 1.2.1.2.2.1: シリアルポート選択
- 1.2.1.2.2.2: メインメニュー
- 1.2.1.2.2.2.1: ビューア
- 1.2.1.2.2.2.1.1: ターミナル
- 1.2.1.2.2.2.1.2: 標準アプリ ビューア
- 1.2.1.2.2.2.1.3: グラフ
- 1.2.1.2.2.2.1.3.1: 加速度リアルタイムグラフ
- 1.2.1.2.2.2.1.3.2: センサーグラフ
- 1.2.1.2.2.2.1.4: 簡易モニタ
- 1.2.1.2.2.2.1.5: コマンダー
- 1.2.1.2.2.2.2: アプリ書換
- 1.2.1.2.2.2.2.1: BINから選択
- 1.2.1.2.2.2.2.2: actビルド&書換
- 1.2.1.2.2.2.2.3: TWELITE APPSビルド&書換
- 1.2.1.2.2.2.2.4: Act_extras
- 1.2.1.2.2.2.2.5: 指定
- 1.2.1.2.2.2.2.6: 再書換
- 1.2.1.2.2.2.2.7: ビルド・書換画面
- 1.2.1.2.2.2.3: インタラクティブモード
- 1.2.1.2.2.2.4: TWELITE STAGE の設定
- 1.2.1.2.2.2.5: シリアルポートの選択
- 1.2.1.2.3: ログ機能
- 1.2.1.3: 詳細な仕様
- 1.2.1.3.1: コマンドライン引数とiniファイルによる詳細設定
- 1.2.1.3.2: 環境変数
- 1.2.1.3.3: 000desc.txt によるプロジェクト説明の追加
- 1.2.1.4: ライセンス
- 1.2.1.5: 改訂履歴
- 1.3: TWELITE APPS
- 1.3.1: 超簡単!標準アプリ マニュアル
- 1.3.1.1: 超簡単!標準アプリ マニュアル
- 1.3.1.1.1: 超簡単!標準アプリのピン配置
- 1.3.1.1.2: 超簡単!標準アプリの動作モード
- 1.3.1.1.3: 超簡単!標準アプリの代替ボーレート設定
- 1.3.1.1.4: 超簡単!標準アプリのUART機能
- 1.3.1.1.5: インタラクティブモード(超簡単!標準アプリ)
- 1.3.2: 親機・中継機アプリ マニュアル
- 1.3.2.1: 親機・中継機アプリ マニュアル
- 1.3.2.1.1: 親機・中継機アプリの動作モード
- 1.3.2.1.1.1: 親機・中継機アプリの親機モード
- 1.3.2.1.1.1.1: 親機・中継機アプリの受信メッセージ
- 1.3.2.1.1.1.1.1: 超簡単!標準アプリからの出力(親機・中継機アプリ)
- 1.3.2.1.1.1.1.2: リモコンアプリからの出力(親機・中継機アプリ)
- 1.3.2.1.1.1.1.3: シリアル通信アプリからの出力(親機・中継機アプリ)
- 1.3.2.1.1.1.1.4: パル/キュー/アリアアプリからの出力(親機・中継機アプリ)
- 1.3.2.1.1.1.1.4.1: パルアプリからの出力(親機・中継機アプリ)
- 1.3.2.1.1.1.1.4.2: キューアプリからの出力(親機・中継機アプリ)
- 1.3.2.1.1.1.1.4.3: アリアアプリからの出力(親機・中継機アプリ)
- 1.3.2.1.1.1.1.4.4: パル・キュー・アリアアプリからの出力の詳細(親機・中継機アプリ)
- 1.3.2.1.1.1.1.5: actからの出力(親機・中継機アプリ)
- 1.3.2.1.1.1.1.6: 無線タグアプリからの出力(親機・中継機アプリ)
- 1.3.2.1.1.1.2: 親機・中継機アプリの送信コマンド
- 1.3.2.1.1.1.2.1: 超簡単!標準アプリへの入力(親機・中継機アプリ)
- 1.3.2.1.1.1.2.2: シリアル通信アプリへの入力(親機・中継機アプリ)
- 1.3.2.1.1.1.2.3: パルアプリ(通知パル)への入力(親機・中継機アプリ)
- 1.3.2.1.1.2: 親機・中継機アプリの中継機モード
- 1.3.2.1.2: インタラクティブモード(親機・中継機アプリ)
- 1.3.3: リモコンアプリ マニュアル
- 1.3.3.1: リモコンアプリ マニュアル
- 1.3.3.1.1: リモコンアプリのピン配置
- 1.3.3.1.2: リモコンアプリの動作モード
- 1.3.3.1.3: リモコンアプリの代替ボーレート設定
- 1.3.3.1.4: リモコンアプリのUART機能
- 1.3.3.1.5: リモコンアプリのカスタムデフォルト機能
- 1.3.3.1.6: リモコンアプリのペアリング機能
- 1.3.3.1.7: インタラクティブモード(リモコンアプリ)
- 1.3.4: シリアル通信アプリ マニュアル
- 1.3.4.1: シリアル通信アプリ マニュアル
- 1.3.4.1.1: シリアル通信アプリのピン配置
- 1.3.4.1.2: シリアル通信アプリの通信モード
- 1.3.4.1.2.1: シリアル通信アプリの書式モード(アスキー形式)
- 1.3.4.1.2.1.1: シリアル通信アプリ 書式モード(アスキー)の 0xDB コマンド
- 1.3.4.1.2.2: シリアル通信アプリの書式モード(バイナリ形式)
- 1.3.4.1.2.2.1: シリアル通信アプリ 書式モード(バイナリ)の 0xDB コマンド
- 1.3.4.1.2.3: シリアル通信アプリのチャットモード
- 1.3.4.1.2.4: シリアル通信アプリの透過モード
- 1.3.4.1.2.5: シリアル通信アプリのヘッダ付き透過モード
- 1.3.4.1.3: シリアル通信アプリのカスタムデフォルト機能
- 1.3.4.1.4: シリアル通信アプリの通信における注意点
- 1.3.4.1.5: インタラクティブモード(シリアル通信アプリ)
- 1.3.5: キューアプリ マニュアル
- 1.3.5.1: キューアプリ マニュアル
- 1.3.5.1.1: キューアプリの動作モード
- 1.3.5.1.1.1: キューアプリのTWELITE CUEモード
- 1.3.5.1.1.2: キューアプリの動作センサーパルモード
- 1.3.5.1.1.3: キューアプリの開閉センサーパルモード
- 1.3.5.1.2: キューアプリの設定方法
- 1.3.5.1.2.1: キューアプリのOTAによる設定
- 1.3.5.1.2.2: キューアプリのTWELITE R2/R3による設定
- 1.3.5.1.2.3: インタラクティブモード(キューアプリ)
- 1.3.6: アリアアプリ マニュアル
- 1.3.6.1: アリアアプリ マニュアル
- 1.3.6.1.1: アリアアプリの使用方法
- 1.3.6.1.1.1: アリアアプリの動作確認
- 1.3.6.1.1.2: アリアアプリの動作モード
- 1.3.6.1.1.2.1: アリアアプリのTWELITE ARIAモード
- 1.3.6.1.1.2.2: アリアアプリの開閉センサーパルモード
- 1.3.6.1.2: アリアアプリの設定方法
- 1.3.6.1.2.1: アリアアプリのOTAによる設定
- 1.3.6.1.2.2: アリアアプリのTWELITE R2/R3による設定
- 1.3.6.1.3: インタラクティブモード(アリアアプリ)
- 1.3.7: パルアプリ マニュアル
- 1.3.7.1: パルアプリ マニュアル
- 1.3.7.1.1: インタラクティブモード(パルアプリ)
- 1.4: act サンプル
- 1.4.1: act サンプル
- 1.4.1.1: act0..4
- 1.4.1.2: Scratch
- 1.4.1.3: Slp_Wk_and_Tx
- 1.4.1.4: Parent_MONOSTICK
- 1.4.1.5: PingPong
- 1.4.1.6: BRD_APPTWELITE
- 1.4.1.7: BRD_I2C_TEMPHUMID
- 1.4.1.8: BRD_ARIA
- 1.4.1.9: PAL_AMB
- 1.4.1.10: PAL_AMB-usenap
- 1.4.1.11: PAL_AMB-behavior
- 1.4.1.12: PAL_MAG
- 1.4.1.13: PAL_MOT-single
- 1.4.1.14: PAL_MOT-fifo
- 1.4.1.15: PulseCounter
- 1.4.1.16: WirelessUART
- 1.4.1.17: ユニバーサル レシーバー
- 1.4.1.18: Unit_???
- 1.5: 改版履歴
- 2: TWELITE SPOT / ESP32
- 2.1: 導入済みアプリケーションの概要
- 2.2: 無線性能に配慮した設置方法
- 2.3: ファームウェア開発環境の構築方法
- 2.3.1: Arduino IDE 1.x による開発環境の構築方法
- 2.3.1.1: Arduino IDE 1.x の導入
- 2.3.1.2: Arduino core for the ESP32 の導入
- 2.3.1.3: Arduino core for the ESP32 の設定
- 2.3.1.4: MWings ライブラリの導入
- 2.4: ファームウェアの書き込み方法
- 2.4.1: ESP32 へのファームウェアの書き込み方法
- 2.4.1.1: ESP32 へのスケッチの書き込み方法
- 2.4.1.2: ESP32 へのファイルの書き込み方法
- 2.4.1.3: ESP32 のパーティションテーブルを指定した書き込み方法
- 2.4.2: TWELITE へのファームウェアの書き込み方法
- 2.4.3: ファームウェアの初期化方法
- 2.4.3.1: ESP32 のファームウェアの初期化方法
- 2.4.3.2: TWELITE のファームウェアの初期化方法
- 2.5: サンプルスケッチの解説
- 2.5.1: TWELITE と通信するスケッチの解説
- 2.5.1.1: 超簡単!標準アプリのデータを取得・操作
- 2.5.1.1.1: 超簡単!標準アプリのデータを取得・操作
- 2.5.1.1.2: 超簡単!標準アプリのデータを取得・操作
- 2.5.1.1.3: 超簡単!標準アプリのデータを取得・操作
- 2.5.1.2: キューアプリのデータを取得
- 2.5.1.2.1: キューアプリのデータを取得
- 2.5.1.2.2: キューアプリのデータを取得
- 2.5.1.2.3: キューアプリのデータを取得
- 2.5.1.3: アリアアプリのデータを取得
- 2.5.1.3.1: アリアアプリのデータを取得
- 2.5.1.3.2: アリアアプリのデータを取得
- 2.5.1.3.3: アリアアプリのデータを取得
- 2.5.2: TWELITE に加えて無線 LAN を活用するスケッチの解説
- 2.5.2.1: プリインストール済みスケッチ
- 2.5.2.1.1: プリインストール済みスケッチ
- 2.5.2.1.2: プリインストール済みスケッチ
- 2.5.2.2: WebSocketによる中継
- 2.5.2.2.1: WebSocketによる中継
- 2.5.2.3: REST API の使用
- 2.5.2.3.1: REST API の使用
- 2.5.2.3.2: REST API の使用
- 2.5.2.4: Google スプレッドシートの利用
- 2.5.2.4.1: Google スプレッドシートの利用
- 3: TWELITE WINGS API / MWings
- 3.1: TWELITE Wings API / MWings for Python
- 3.2: TWELITE Wings API / MWings for 32-bit Arduinos
- 3.2.1: TWELITE Wings API / MWings for 32-bit Arduinos
- 3.2.1.1: TWELITE SPOT に使用する
- 3.2.1.2: Arduino UNO R4 に使用する
- 3.2.1.3: パケットパーサの拡張
- 4: Miscellaneous
- 4.1: TWELITE PAL/CUE/ARIA Script
- 4.1.1: 使用方法
- 4.1.2: ソースファイル
- 4.1.2.1: PAL_Script.py
- 4.1.2.2: Main_user.py
- 4.1.2.3: MNLib
- 4.1.2.3.1: apppal.py
- 4.1.2.3.2: appbase.py
- 4.1.2.3.3: mwSerial.py
- 4.1.2.3.4: parseFmt.py parseFmt_*.py
1 - TWELITE STAGE SDK
1.1 - 導入方法
動作環境によっては、本アプリケーションの動作に各種設定が必要です。問題が生じた場合には、本資料の記述を参考にして環境を整備してください。
開発環境を構築するためには、ソフトウェア群のインストール、またこれらの利用許諾に同意する必要があります。また、セキュリティ設定等が必要になる場合があります。
- 配布時に十分注意しておりますが、お客さまの側でもウィルスやマルウェアが含まれていないことを確認いただくようお願いします。
- セキュリティの運用(外部アプリケーションのインストールの可否など)については、お客さまの環境の管理者にご確認ください。
「アプリケーションの配布と実行について」 も併せてご覧ください。以下の内容を含みます。
- 本来のファイルとダウンロードしたファイルの同一性の確認について
- macOS/Windowsにおけるコード署名の取り扱いについて
TWELITE STAGE SDK のインストール手順
① アーカイブを取得
各プラットフォーム (Windows / macOS / Linux) 用の TWELITE STAGE SDK を ダウンロード します。
macOSの場合はHomebrewを使用できます
brew install twelite-stage
インストール先は
~/MWSTAGE
です。
② アーカイブを展開
ダウンロードしたZipアーカイブを展開します。
展開先のファイルパスには、半角数字 0..9、半角アルファベットa..zA..Z、一部の記号 -_. 以外の空白や漢字・ひらがな等を含めないでください。 Windows の場合の例
- NG :
C:\work\作業\
- NG :
C:\Users\user1\work dir\
- OK :
C:\Work\Work1
③ ファイルを確認
展開先のフォルダを確認します。
C:\Work
上に配置したアーカイブは C:\Work\MWSTAGE
に展開されますが、展開ソフトによってはフォルダ名が異なる可能性があります。 必要に応じて変更してください。C:\Work\MWSTAGE
) を {MWSTAGE インストール}
のように表記する場合があります。展開先のフォルダ {MWSTAGE インストール}
には、以下が含まれます。
- TWELITE STAGE APP
- Windows の場合:
TWELITE_Stage.exe
(通常版)、TWELITE_Stage_VSCode.exe
(VSCode対応版) - macOS の場合:
TWELITE_Stage.command
(通常版)、TWELITE_Stage_VSCode.command
(VSCode対応版) - Linux の場合:
TWELITE_Stage.run
(通常版)、TWELITE_Stage_VSCode.run
(VSCode対応版)
- Windows の場合:
TWELITE_STAGE
- TWELITE STAGE APP の関連ファイルMWSDK
- ライブラリ、ソースコードなどTools
- ビルドするためのツールチェインなどBIN
- TWELITE STAGE APP の [BINから選択]メニューで参照されるTWELITE 向け.BINファイルlog
- TWELITE STAGE APP のログ機能やデータベースファイルの保存先flask_wsns_db
- Python, Flask, sqlite3 による簡易的なサーバ
詳細は「フォルダ構成」をご覧ください。
1.1.1 - フォルダ構成
TWELITE STAGE APP は、TWELITE STAGE SDK のフロントエンドアプリケーションとして動作します。
ここでは、そのフォルダ構成について解説します。
MWSTAGE/ : TWELITE STAGE SDK インストール
TWELITE_Stage.??? : 実行形式 (Windwows .exe, macOS .command, Linux .run)
TWELITE_Stage.sav : 設定ファイル
TWELITE_Stage.ini : その他設定
TWELITE_Stage/ : TWELITE STAGE APP の関連ファイル
MWSDK/ : MWSDKのライブラリなど
BIN/ : [BINファイル選択]時の格納先
log/ : ログ・データベース格納先
Tools/ : gcc コンパイラなどのツール一式
flask_wsns_db/ : Python, Flask, sqlite3 による簡易的なサーバ
MWSDK
フォルダ
MWSDK/
Act_samples/ : mwx ライブラリによるサンプルコード
Wks_TweApps/ : TWELITE APPS のソースコード
Act_extras/ : mwx ライブラリによるより専門的なサンプル、他のライブラリを引用したもの
TWENET/ : TWENET ライブラリ (mwx ライブラリなど)
ChipLib/ : 半導体ライブラリ
MkFiles/ : Makefile の本体処理部分
docs/ : ライブラリマニュアルなど
LICENSE : MWSDKのライセンス記述
000manifest : MWSDKのバージョン情報
ReleaseNotes.md : 更新履歴(トップページ)
ReleaseNotes_en.md : 更新履歴(英語)
ReleaseNotes_jp.md : 更新履歴(日本語)
MWSDK フォルダには、TWELITE のソフトウェアを構築するためのライブラリや、サンプル、TWELITE APPS のソースコードが含まれます。
TWELITE_Stage.sav
TWELITE STAGE APPの設定情報を記録します。
ファイル名は TWELITE STAGE APP 実行形式名 + .sav
です。
TWELITE_Stage.ini
.ini
ファイルの詳細はこちら。
MWSDK=
MWSDK/
フォルダの替わりに別のフォルダを指定したいときに編集します。複数のライブラリバージョンを混在させる場合に便利です。上記の例ではMWSDK2020_10
フォルダを利用します。LANG=
TWELITE STAGE APP の表示言語を英語にする場合はLANG=en
を指定します。
設定の異なる TWELITE STAGE APP を実行する
TWELITE_Stage.exe
(Windows の場合) を別のファイル名でコピーします。 例えば TWS1.exe
と変更した場合は、TRS1.sav
, TRS1.ini
という設定ファイルを参照します。
BIN
フォルダ
TWELITE STAGE APP の [BINから選択] メニューを選択したときには、このフォルダにある ファームウェアファイル (.BIN
) を利用します。
log
フォルダ
TWELITE STAGE APP でシリアルポートのログ機能を実行したときには、このフォルダにログファイルを格納します。
グラフ機能を用いた場合のデータベースファイルの格納先や、csvファイルの出力先もこのフォルダです。
Tools
フォルダ
gcc
, g++
など、クロスコンパイラの toolchain 等が含まれます。
プラットフォームに固有のユーティリティもこのフォルダに格納されます。詳しくは Tools/readme.txt
を参照してください。
flask_wsns_db
フォルダ
TWELITE STAGE APP のセンサーグラフビューアで作成したデータベースにアクセスするためのPythonのサンプルスクリプトです。 本サンプルでは表やグラフでデータをWebブラウザで閲覧することができます。
詳しくは flask_wsns_db/README.html
を参照してください。
ビルドプロジェクトフォルダ
フォルダの検索順
TWELITE STAGE APP は、以下の順でビルドプロジェクトフォルダ (Act_samples
など) を検索します。
- TWELITE STAGE APP が起動したときのフォルダ
- TWELITE STAGE APP の実行形式があるフォルダ
{MWSDKフォルダ}/..
{MWSDKフォルダ}
Wks_Acts
Wks_Acts
フォルダを作成した場合には、Act_samples
フォルダの替わりに、このフォルダをメニューの[actビルド&書換]メニューから参照します。
Wks_Acts
は、自身で作成したプロジェクトを格納する用途を想定しています。1.1.2 - プラットフォーム別の注意事項
TWELITE STAGE APP を各プラットフォームにインストールする際の注意事項を記載しています。
1.1.2.1 - Windowsへインストールする際の注意事項
環境
以下の環境で開発・動作確認しています。
- Windows10 バージョン 1903
- VisualStudio 2019 (32bit ビルド)
シリアルポートの取り扱い
MONOSTICK や TWELITE R シリーズには、 FTDI社の USBシリアル変換IC(FT230/FT232 シリーズ)を搭載しています。これらを利用するために、デバイスドライバのインストールが必要となる場合があります。
PC がMONOSTICK や TWELITE R を認識しない場合には、 https://www.ftdichip.com より D2XX ドライバをインストールしてください。
Visual C++ ランタイムライブラリの追加インストール
場合によっては、Visual Studio 2019 の Visual C++ 頒布可能コード(ランタイムライブラリ)が必要です。
アプリケーションの起動時にエラーが出て起動しない場合は、本パッケージで再配布している TWELITE_Stage¥INSTALL¥VC_redist.x86.exe
を実行するか、マイクロソフト社のウェブサイトから入手してください。なお、再配布バイナリは 32bit です。
1.1.2.2 - macOSインストールする際の注意事項
環境
以下の環境で開発・動作確認しています。
- macOS 10.14 (Mojave, Intel)
- macOS 12 (Monterey, Apple Silicon)
依存するソフトウェアや警告ダイアログについて
下記の事象が発生した場合には、 TWELITE_Stage.command
の動作のために、実行の許可やインストールが必要です。
- ツールチェインにはコード署名がなされていますが、コード署名が正しく認証されない場合は、ビルドツールチェイン (
ba-elf-gcc
など) の実行形式一つずつについて、動作許可を求められる場合があります。 - ダウンロードアーカイブには署名しておりません。実行時には、インターネットからダウンロードされたアプリケーションとしてセキュリティ警告が出る場合があります。
TWELITE_Stage.command
をインストールしたパスからの実行許可を要求される場合があります。- ビルド実行時に make ユーティリティのインストールダイアログが出る場合があります。
make ユーティリティの追加インストール
場合によっては、make ユーティリティをインストールしなくてはなりません。
コマンドライン (zsh) から make を実行したときに、エラーが出る場合には Command Line Tools をインストールします。
xcode-select --install
インストールが完了したら、make を入力して以下のメッセージの出力を確認します。
make
make: *** No targets specified and no makefile found. Stop.
シリアルポートの取り扱い
MONOSTICK や TWELITE R シリーズには、 FTDI社 (https://www.ftdichip.com) の USBシリアル変換IC(FT230/FT232 シリーズ)を搭載しています。これらを利用するために、デバイスドライバのインストールが必要となる場合があります。
TWELITE_Stage.command
を起動してもシリアルポートが表示されない場合は、FTDI社のドライバをアンロード(無効化)してください。
https://www.ftdichip.com/Drivers/D2XX.htm より D2xxHelper をダウンロードできます。 なお、TWELITE STAGE SDKの TWELITE_Stage/INSTALL
フォルダにも同じものを収録しています。
参考:FTDI社デバイスドライバの手動アンロード
FTDI 関連のドライバをアンロードするには、以下のコマンドを実行します。
sudo kextunload -b com.apple.driver.AppleUSBFTDI
1.1.2.3 - Linuxへインストールする際の注意事項
Linux環境はディストリビューションやバージョンによって、用意されているパッケージの種類が異なります。個別にパッケージ等のインストールや設定が必要になる場合があります。
エラーメッセージ等を手がかりに一般の情報を参照いただくようお願いいたします。
環境
以下の環境で開発・動作確認しています。
- Ubuntu 16.04, 18.04, 20.04
- NNLinux Beta8 64bit
- CentOS 7
シリアルポートの取り扱い
TWELITE STAGE から MONOSTICK や TWELITE-R を認識するには、ftdi_sioモジュールをアンロードし、USBデバイスに対して読み書き権限を与える必要があります。
USBデバイスのIDを以下に示します。
- ベンダーID
0x0403
- プロダクトID
0x6001
(MONOSTICK,TWELITE R) または0x6015
(TWELITE R2)
なお、この設定を自動化するための udev
の設定スクリプト(Ubuntu, CentOS) を用意しています。
/etc/udev/rules.d
に定義をコピーして、設定をリロードします。 設定後は USB デバイスを抜き差ししてから TWELITE_Stage.run
を実行してください。起動直後の画面で USB デバイスが表示されたなら、設定が反映されています。
Ubuntu 16.04, 18.04, 20.04
cd ./MWSTAGE/TWELITE_Stage/INSTALL/ubuntu/
sudo ./set_udev_sudo.sh
定義ファイル(読みやすいように改行しています)
ACTION=="add",
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001",
MODE="0666",
RUN+="/bin/sh -c 'rmmod ftdi_sio && rmmod usbserial'"
ACTION=="add",
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6015",
MODE="0666",
RUN+="/bin/sh -c 'rmmod ftdi_sio && rmmod usbserial'"
Centos 7
cd ./MWSTAGE/TWELITE_Stage/INSTALL/centos/
sudo ./set_udev_sudo.sh
定義ファイル(読みやすいように改行しています)
ACTION=="add",
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001",
MODE="0666",
RUN+="/bin/sh -c '/usr/sbin/rmmod ftdi_sio'"
ACTION=="add",
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6015",
MODE="0666",
RUN+="/bin/sh -c '/usr/sbin/rmmod ftdi_sio'"
アプリケーションの登録
必要に応じて、お使いのデスクトップ環境に合った方法でアプリケーションを登録してください。
TWELITE_Stage.run
を実行形式として認識できない場合があるためです。Ubuntu 16.04, 18.04, 20.04
Ubuntu用の定義ファイル生成スクリプトを用意しています。
cd ./MWSTAGE/TWELITE_Stage/INSTALL/ubuntu/
./make_launch_icon.sh
このスクリプトは .desktop
ファイル(アプリ定義)を $HOME/.local/share/applications
に作成します。
スクリプト実行後に、アプリケーション一覧に TWELITE STAGE のアイコンが追加されます。
1.1.2.4 - Raspberry Piへインストールする際の注意事項
TWELITE STAGE APPは、一部を除く Raspberry Pi で動作します。
- マウスとタッチスクリーンに対応します。
- ビルドツールチェインが付属しており、コンパイルもできます。
- 実行形式には、X11版のほかにフレームバッファ版(
nox
)があるほか、半透明エフェクトなどを省略した軽量版があります。
環境
以下の環境で開発・動作確認しています。
ハードウェア
- Raspberry Pi 3 Model B
- LCD Screen: Raspberry Pi Touch Display (7")
ソフトウェア
- Raspberry PI OS (32bit) Lite (Version:August 2020)
既知の問題・制限事項
- 1回目の起動で
/dev/serial0
の動作に失敗することがあります。 - Raspberry Pi 4B では
/dev/serial0
の動作は未検証です。 - Raspberry Pi 4B ではタッチスクリーンの動作は未検証です。
- TWELITE STAGE への入力文字列が
/dev/tty1
上で動作してるシェルやgetty
へ入力文字列がそのまま渡されます。/dev/tty1
から起動することを推奨します。 - 他のインストールや動作のプログラム(X11など)に影響を受けることがあります。
アーカイブの展開
ダウンロードしたアーカイブファイルは、パス名に空白や日本語などが含まれないフォルダに展開します。
以下ではRaspberry Piのホームフォルダに展開しています。
cd /home/pi
unzip MWSTAGE2020_XX_YYYY.zip
フォルダ構成
../MWSTAGE
TWELITE_Stage.run TWELITE_Stage アプリ
BIN/ ファームウェアBINファイル
MWSDK/ MWSDK ライブラリなど
TWELITE_Stage/ TWELITE_Stage アプリ関連ファイル
デバイスドライバ
TWELITE STAGE から MONOSTICK や TWELITE R を認識するためには、ftdi_sio
モジュールのアンロードや、USBデバイスに対する読み書き権限の付与が必要です。
USBデバイスのIDを以下に示します。
- ベンダーID
0x0403
- プロダクトID
0x6001
(MONOSTICK,TWELITE R) または0x6015
(TWELITE R2)
この設定を自動化するための udev
の設定スクリプトを用意しています。/etc/udev/rules.d
に定義をコピーして、設定をリロードしています。設定後は USB デバイスを抜き差ししてから TWELITE_Stage.run
を実行してください。起動直後の画面で USB デバイスが表示されたなら、設定が反映されています。
cd ./MWSTAGE/TWELITE_Stage/INSTALL/ubuntu/
sudo ./set_udev_sudo.sh
定義ファイル(読みやすいように改行しています)
ACTION=="add",
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001",
MODE="0666",
RUN+="/bin/sh -c 'rmmod ftdi_sio && rmmod usbserial'"
ACTION=="add",
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6015",
MODE="0666",
RUN+="/bin/sh -c 'rmmod ftdi_sio && rmmod usbserial'"
シリアルポートの取り扱い
上述の環境では、raspi-config
よりシリアルポートの設定をすることで /dev/serial0
が利用できます。
sudo raspi-config
メニューより
"3 Interface Options Configure connections to peripherals"
→"P6 Serial Port Enable/disable shell messages on the serial connection"
以下のようにログインシェルとしては利用しない、ハードウェアを有効化するを選択します。
"Would you like a login shell to be accessible over serial?" ->
"Would you like the serial port hardware to be enabled?" →
配線例
[TWELITE] [Raspberry Pi]
GND ------------------ Gound (#6,#9,#14,#20,#25,#30,#34,#39のいずれか)
TXD(DIO6,DIP#10) ------ GPIO15/UART0 RXD (#10)
PRG(SPIMISO,DIP#7) ---- GPIO23 (#16)
RXD(DIO7,DIP#3) ------- GPIO14/UART0 TXD (#8)
RST(RESETN,DIP#21) ---- GPIO22 (#15)
VCC ------------------ 3V3 (#1,#17のいずれか)
SET(DIO12,DIP#15) ----- GPIO12 (#32)
- TWELITE, Raspberry Pi それぞれのマニュアルを参照してください。
- DIP# は TWELITE DIP のピン番号です。
- 上記の配線は TWELITEが安定稼働することを保証するものではありません。
TWELITE STAGE APPの起動
- フレームバッファ版(
nox
)はX11のデスクトップ上では動作しません。X11を終了しておきます。 TWELITE_Stage.run
を実行します。スクリーン画面上のTWELITE STAGE APPが表示されます。
留意事項
- マウスとタッチパネルに対応します。
- TWELITE STAGE APP中で、入力した文字はコンソール画面にも表示される場合があります。
その他
/dev/dri
エラー
TWELITE_Stage.run
の起動時に以下のエラーが出る場合がありますが、無視して構いません。
"The path /dev/dri/ cannot be opened or is not available"
メモリ不足
CPU数が4以上の場合、ビルド時はCPU数を一つ引いた値の並列コンパイルを実行します(4コアなら3並列)。 場合によってはメモリ不足が発生するかもしれません。その場合は並列数を変更してください。
Raspberry Pi 4
busterにおける注意事項
OpenGL関連のドライバを有効とする必要があります。
- raspi-config の Advanced Settings → A2 GL Driver → G2 GL (Fake KMS) を選択します
- libgles-dev パッケージを導入しておきます
2024年6月現在、Raspberry Pi OS (32bit, bookworm)では、Linuxカーネルの更新に伴いピンの制御を行えず、モジュールを認識・操作できない不具合が発生しております。
また、bookworm では libccm 等に関するエラーにより起動できない不具合も確認されていますが、次のコマンドを実行することで解消できる場合があります。
sudo apt update
sudo apt install --reinstall libraspberrypi0 libraspberrypi-dev libraspberrypi-doc libraspberrypi-bin
このとき、再起動すると lightdm の起動に失敗してしまう場合があります。
その際は raspberrypi-ui-mods
の導入をお試しください。
sudo apt update
sudo apt install raspberrypi-ui-mods
お手数ですが、当分は Raspberry Pi OS (32bit, bullseye) をご利用ください。
追記:Raspberry Pi OS (bookworm) に対応した TWELITE STAGE アプリのベータ版を作成しました。
【32bit版パッチの導入方法】
cd MWSTAGE
wget https://twelite.net/files/TWELITE_Stage_Wayland.run.zip
unzip TWELITE_Stage_Wayland.run.zip
./TWELITE_Stage_Wayland.run
- 本体:TWELITE_Stage_Wayland.run.zip
- SHA256:
76da281f80dc998fde1acb9eeb4d5168179f810b03342feb8b3e8ad644a978a2
- SHA256:
【64bit版パッチの導入方法】
cd MWSTAGE
wget https://twelite.net/files/TWELITE_Stage_Wayland_64.run.zip
unzip TWELITE_Stage_Wayland_64.run.zip
mv Tools/ba-elf-ba2-r36379 Tools/ba-elf-ba2-r36379-bkup32
wget https://twelite.net/files/ba-elf-ba2-r36379_aarch64.tgz
tar -xzf ba-elf-ba2-r36379_aarch64.tgz
mv ba-elf-ba2-r36379 Tools/
./TWELITE_Stage_Wayland_64.run
- 本体:TWELITE_Stage_Wayland_64.run.zip
- SHA256:
2f784b3d667ccb08b9cc9fe5eda8cd48e37c2e11c1747718087fe279be693a0f
- SHA256:
- ツールチェーン:ba-elf-ba2-r36379_aarch64.tgz
- SHA256:
81a9546c2d1d77344358426a1eefa275a08e24d8b497d2faefce07d497776a45
- SHA256:
1.2 - TWELITE STAGE APP
1.2.1 - TWELITE STAGE APP マニュアル
資料の取り扱いについてをご参照ください。
お気付きの点がありましたら、当サポート窓口にご連絡いただければ幸いです。
Windows/macOS/Linux ではコンパイラ・サンプルコードなどを格納した MWSDK が含まれます。これらに関する詳細は、以下を参照ください。
- MWSDK全般 - https://sdk.twelite.info/
- MWXライブラリ - https://mwx.twelite.info/
様々なプラットフォームで動作します。
- Windows10
- macOS (High Sierra 以降、Intel および Apple Silicon Mac に対応)
- Linux (Ubuntu18.04)
- Raspberry Pi (Raspberry Pi 3 Model B, Lcd Touch Screen, Raspberry Pi OS August-2020)
- (M5stack : バージョン1.0 まで対応。v1.3以降はソースレベルで非対応です。)
※ プラットフォームによって、動作条件や配布形式、また機能が異なります。
本資料について
- 対象のプラットフォームを示すため、一部のページでは以下を記載しています。
- Windows – Windows 10
- macOS – Mac OS X, OS X, macOS
- Linux – Ubuntuなど(64bit)
- RasPi – Raspberry Pi
1.2.1.1 - パッケージの取得
最新版のTWELITE STAGE アプリは、以下のいずれかの方法で取得できます。
TWELITE STAGE SDK 全体(公式サイト)
モノワイヤレス公式サイトでは、TWELITE STAGE アプリを含む開発ツール一式(Windows/macOS/Linux用)を配布しています。
TWELITE STAGE-トワイライトステージ - MONO-WIRELESS.COM
TWELITE STAGE アプリのみ(GitHub)
モノワイヤレス公式リポジトリでは、TWELITE STAGE アプリ単体のバイナリを配布しています。 TWELITE STAGE アプリだけを更新する場合や、M5Stack版を取得する際にはこちらをご利用ください。 各バイナリのバージョンはGitHub上のtagから識別できます。
Windows
monowireless/TWELITE_Stage_BIN_Win: Binary Distribution of TWELITE Stage.
macOS
monowireless/TWELITE_Stage_BIN_macOS: Binary distribution of TWELITE Stage for macOS
Linux
Linux 版のバイナリは個別に配布しておりません。 バイナリは TWELITE STAGE SDK パッケージから取得してください。 もしくは、ソースコードからビルドしてください。
Raspberry Pi
Raspberry Pi 版のバイナリは個別に配布しておりません。 バイナリは TWELITE STAGE SDK パッケージから取得してください。 もしくは、ソースコードからビルドしてください。
M5Stack
バージョン 1.0.3a までを以下のページで配布しております。
monowireless/TWELITE_STAGE_Bin_M5Stack
ソースコード (MWM5ライブラリ)
TWELITE STAGE のソースコードを含む MWM5 ライブラリは以下のページで公開しています。
TWELITE STAGE アプリのソースコードは、examples/TWELITE_Stageに配置しています。
1.2.1.2 - 使用方法
アプリの起動方法
TWELITE STAGE アプリを起動するには、{MWSTAGE インストール}
にある実行形式を実行します。
実行はプラットフォーム(Windows, macOS, Linux)によって方法が異なります。
システム | 拡張子 | 備考 |
---|---|---|
Windows | .exe | エクスプローラで実行形式をダブルクリック |
macOS | .command | Finder で実行形式をダブルクリック |
Linux RasPi | .run | ディストリビューションやインストール環境に依存します。Xウインドウシステム上のターミナル画面(xtermなど)から、コマンドとして実行します |
アプリの実行形式
TWELITE STAGE APP には、2種類の実行形式があります。
- TWELITE_Stage.{拡張子} - 標準設定で起動します。
- TWELITE_Stage_VSCode.{拡張子} - 「VSCode を使う」設定済みです(設定は
TWELITE_Stage_VSCode.ini
に保存)。VSCodeを使う設定を有効にすると、VSCodeを用いた開発作業に適した動作を行うようになります。
アプリの実行画面
アプリを起動すると、以下の2種類のウィンドウが表示されます。
- メイン画面
- TWELITE STAGE APPのユーザインタフェースを表示します。
- TWELITE STAGE APPの操作はこの中で行います。
- コマンド画面
- 通常は使用しませんが、補助情報を表示します。
- シリアル通信の内容が表示されるため、ログを確認する用途に最適です。
- コマンドラインから実行した場合には、実行元のターミナルがコマンド画面となります。
- 通常は使用しませんが、補助情報を表示します。
アプリの終了
いずれかの方法で終了してください。
- 実行画面上の右上にマウスポインタを移動し、画面内に表示された終了ボタンを押します。
- 実行画面のウインドウを閉じます(macOSの場合は
⌘Q
も使用できます)。
ごくまれに、終了操作をしても実行画面が残る場合があります。その場合には、以下をお試しください。
- TWELTIE STAGE APPのコマンドライン画面を閉じる。
- 強制終了を行う(強制終了の操作方法はお使いのシステムの解説を参照してください)。
1.2.1.2.1 - キーとマウスの操作
Windows macOS Linux RasPi
キー操作
Windows macOS Linux RasPi
Alt(⌘)
を押しながら行うキー入力は、TWELITE STAGE APP の設定を変える操作等に割り当てられています。その他のキー操作は、通常は文字入力として機能します。
共通のキー
Windows macOS Linux RasPi
キー | 意味 |
---|---|
ESC ESC | 素早く2回ESC を押す。キャンセル、または前画面に戻る。画面によっては1回の押下で前画面に戻ります。 |
ENTER | 入力、選択 |
BS | 一文字削除 |
カーソルキー↑ ↓ | 項目の選択 |
ヘルプ画面
Windows macOS Linux RasPi
Alt(⌘)
を押し続けることでヘルプ画面を表示します。ヘルプ画面ではAlt(⌘)
と一緒に操作できるキーの説明や一部動作状況を表示します。
ヘルプ画面は画面の左上部分にマウスポインタを移動することでも表示できます。
Alt(⌘)+操作
Windows macOS Linux RasPi
Alt(⌘)
を押しながら行う操作について解説します。
表中ではAlt(⌘)
+の表記は省略しています。上記のヘルプ画面から使用可能なキーを確認できますが、下表に補足説明を示します。
Alt(⌘) +キー | 意味 |
---|---|
I | + + + を入力します。インタラクティブモードに入るキーシーケンスです。※ スリープによる間欠動作を行うアプリは非対応。 |
R | モジュールをリセットします。TWELITE R や MONOSTICK の機能を用いてリセットピンの制御を行います。 |
A , S , D | A, B, C ボタンを押します。 |
Shift +A , S , D | A, B, C ボタンを長押しします。 |
C | 表示されている画面の文字列をクリップボードにコピーします。(画面によって範囲は異なります) |
V | クリップボードからキーボード入力としてペーストします。 |
F | フルスクリーン表示に遷移します。Shift+Fの場合、可能であればより拡大します。 |
G | 画面の描画方法を変更します。640x480の液晶画面をエミュレートしていますが、拡大時の描画方式として(1. 液晶モニタ風の描画 / 2. ブラウン管風の描画 / 3. ドットを目立たせた拡大 / 4. ドットをぼやかせた拡大)の4種類が選択できます。※ 設定メニューで起動時の設定を変更できます。 |
J | 画面サイズを選択します。選択可能な画面サイズは {640,480}, {1280, 720}, {1280,960}, {1920,1440}, {2560,1440}, {320,240} です。※ 設定メニューで起動時設定にできます。 |
Q | TWELITE STAGE APPを終了します。 |
0 | シリアルポートを切断し、再度シリアルポートの一覧を表示します。 |
1 , 2 , … | シリアルポートを選択します。 |
L , Shift +L | シリアルポートの入出力のログを開始します。終了時にはログファイルが Windows であればメモ帳、macOS であれば ログビューア で開かれます。Shift +L でログ格納フォルダを開きます。 |
その他の操作
キー | 意味 |
---|---|
Alt(⌘) +Shift +Ctrl +m | MWX ライブラリコードのフォルダを開きます。 |
Alt(⌘) +Shift +l | log フォルダを開きます。 |
マウス操作
Windows macOS Linux RasPi
マウス操作は左クリックが中心ですが、右クリック、右ダブルクリック、ホイールを使う場合があります。
マウス操作 | 意味 |
---|---|
左クリック | 選択 |
左クリックしながらドラッグ | 画面によっては利用(グラフ画面でのドラッグ) |
左ダブルクリック | 使用しない |
右クリック | 画面によっては使用する |
右ダブルクリック | 画面から脱出する(ESC ESC と同様) |
ホイール | 画面によって利用する(グラフ画面で拡大縮小) |
マウスによるA,B,Cボタン
Windows macOS Linux RasPi
画面下部のメニュー表示にマウスポインタを移動すると、[ A ]
, [ B ]
, [ C ]
という表記のボタンが表示されます。 TWELITE STAGE APPは、この3つ並びのハードウェアボタンを模したメニューに画面ごとの機能を割り当てています。 このボタンを左クリックまたは左長押しクリックすることで、機能を呼び出しできます。(Alt(⌘)
+a
,s
,d`` または
Alt(⌘)+
Shift+
a,
s,
d`でも選択可能)
マウスによる画面操作
Windows macOS Linux RasPi
Windows/macOS/Linuxでは、TWELITE STAGE APP の画面を原則文字列のみで構成しますが、メニューやボタン、タブについてはマウスによる操作が可能です。
画面はテキストのみの構成ですが、画面上部のタブや、反転表示の文字はマウスの左クリックで選択可能です。
1.2.1.2.2 - 画面の操作
Windows macOS Linux RasPi
Windows / macOS / Linux / Raspberry Pi
TWELITE STAGE APPはコンソール画面(コマンドライン)から起動するアプリケーションです。コンソール画面とウインドウ画面の両方に情報を出力します。
コンソール画面には、ターミナルと同様にUART出力を表示します。
Raspberry Pi (nox)
X11 を使わず、フレームバッファに表示します。
通常(フレームバッファ上のシェル画面から起動した場合)はコンソール画面を表示しません。
1.2.1.2.2.1 - シリアルポート選択
Windows macOS Linux RasPi
概要
Windows / macOS / Linux では、始動時にTWELITEが接続されたシリアルポートを選択する画面を表示します。 ただし、シリアルポートは、あとから接続することもできます。
TWELITE STAGEアプリでは、シリアルポートの選択と各画面の処理は連携しません。 例えば、シリアルポートの選択をしていない状態で、ビューアを起動しても表示は更新されません。この状態でシリアルポートを選択すると、ビューワの表示が更新されます。
なお、シリアルポートは Alt(⌘)
+0
, 1
, 2
, … のキー操作でいつでも切り替えできます。
Windows
c
キーを押すと、リストで反転中のシリアルポートのCOMポート名が表示されます。
Raspberry Pi
Raspberry Pi ではUSBデバイスに加えて/dev/serial0
/dev/serial1
があれば serial0
, serial1
を表示します。なお、通常はserial0
を使用します。
1.2.1.2.2.2 - メインメニュー
Windows macOS Linux RasPi
階層化されたメニューの最上位に位置します。
この画面では、メニュー選択を行います。メニューを反転すると、下部緑色文字部分に簡易的な解説を表示します。
- ビューア : TWELITE から受信した電文を解釈して表示するビューアです。多くの場合、受信側の TWELITE には App_Wings を書き込んでおきます。
- アプリ書き換え : ファームウェアをビルドし、接続した TWELITE に書き込みます。
- インタラクティブモード : 接続した TWELITE 設定を、インタラクティブモードによって行います。
- TWELITE STAGEの設定 : TWELITE STAGE アプリの各種設定を行います。
- シリアルポートの選択 : シリアルポートを選択します。
- 説明書 : 説明書を表示するメニューです。以下の説明書をブラウザで開きます。
- TWELITE STAGE アプリ(この文書)
- MWX ライブラリ
- TWENET_C ライブラリ
1.2.1.2.2.2.1 - ビューア
Windows macOS Linux RasPi
ビューアは、接続した TWELITE から受信した情報を表示したり、コマンドを送ったりするための機能です。
1.2.1.2.2.2.1.1 - ターミナル
Windows macOS Linux RasPi
概要
一般的なVT100系のシリアルターミナルです。
TWELITE のインタラクティブモードやリセット制御をサポートしています。
操作
操作 | 説明 |
---|---|
[ A ] | + + + シーケンスの入力(インタラクティブモード) |
[ A ]長押し | この画面を抜けて、前のメニューに戻ります。 |
[ B ] | 大きなフォントで最初の画面の部分領域を表示します。カーソルが画面中に表示されるように領域を選びますが、画面出力によっては見たい部分が見えない場合もあります。 |
[ B ]長押し | 折返し制御のON/OFFを変更します。標準では折返し表示を行うようになっていますが、折り返ししないように表示することもできます。画面右端以降の文字列は表示されません。 |
[ C ] | ファーム書換画面に移動します。ファームウェアの開発中には頻繁にソースコードの修正、動作確認、ビルド&書き込みを行うため、ショートカットを用意しています。 |
[ C ]長押し | TWELITE のリセットピンを制御し、リセットします。 |
ESC ESC | ESC キーを2回素早く入力することで、この画面を抜けます。※ 殆どの画面ではESC キーを1回押すことで画面から抜ける操作となっていますが、ターミナルではESC キーの単独入力を使用する場合があるため、2回連続入力の割当になっています。 |
1.2.1.2.2.2.1.2 - 標準アプリ ビューア
Windows macOS Linux RasPi
概要
通信相手の TWELITE には App_Twelite
(標準アプリ)を書き込んでおきます。標準アプリのボタンやアナログ入力の状態のメッセージ (0x81
メッセージ) を受信すると、その内容を mwm5
のパーサーライブラリにより解釈して表示します。
操作
操作 | 説明 |
---|---|
[ A ] | 割当なし |
[ A ]長押し | この画面を抜けて、前のメニューに戻ります。 |
[ B ] | フォントを変更します。 |
[ B ]長押し | テスト用のダミーデータによる画面表示を行います。 |
[ C ] | 割当なし |
[ C ]長押し | TWELITE のリセットピンを制御し、リセットします。 |
ESC ESC | ESC キーを入力することで、この画面を抜けます。 |
1.2.1.2.2.2.1.3 - グラフ
- 加速度リアルタイムグラフ:加速度センサーのパケットをリアルタイムで表示します。周波数領域の表示や CSV ファイルの保存ができます。
- センサーグラフ:TWELITE 各種センサーのデータを sqlite3 データベースに保存し、グラフを表示します。
1.2.1.2.2.2.1.3.1 - 加速度リアルタイムグラフ
Windows macOS Linux RasPi
概要
TWELITE CUE や TWELITE 動作センサーPAL から受信したパケットを参照します。加速度データをリアルタイムで表示できるほか、周波数解析や CSV 出力の機能があります。
CUE モード、MOTモード、2525 FIFO モードの3種類に対応しています。
連続したサンプルが一定数(解析窓)以上になると、XYZ軸を周波数解析した表示を行います。ただし 2525 FIFO モードでは常に連続していると仮定します。
パケットの区切りが明示的である場合(直前のパケットから3秒以上経過したとき、CUEモードは1パケットごと、MOTモードはパケットのシーケンス番号が不連続になった場合)には、4サンプル分のダミーデータを挿入しピンク色の背景色を表示します。
先着順に最大4ノードまでのデータを格納します。
工場出荷時の TWELITE CUE は TWELITE CUE モードに設定されています。
連続したデータを計測する場合は動作センサーパルモードに変更してください。
加速度リアルタイムグラフを使用する場合における動作センサーパルモードの代表的な設定を以下に記します。
- 連続的に約 25Hz で計測したいとき
t: set Transmission Interval (0)
p: set Sensor Parameter (03000000)
- 連続的に約 50Hz で計測したいとき
t: set Transmission Interval (0)
p: set Sensor Parameter (03000100)
- 連続的に約 100Hz で計測したいとき
t: set Transmission Interval (0)
p: set Sensor Parameter (03000200)
- 約10秒おきに 約 100Hz で128サンプル分計測したいとき
t: set Transmission Interval (10)
p: set Sensor Parameter (03000208)
- 約10秒おきに 約 100Hz で256サンプル分計測したいとき
t: set Transmission Interval (10)
p: set Sensor Parameter (03000210)
- 約10秒おきに 約 50Hz で64サンプル分計測したいとき
t: set Transmission Interval (10)
p: set Sensor Parameter (03000104)
- 約10秒おきに 約 200Hz で128サンプル分計測したいとき
t: set Transmission Interval (10)
p: set Sensor Parameter (03000308)
操作
操作 | 説明 |
---|---|
右上部(i)ID# ボタン | クリックするごとにIDの切り替えを行います。(注:FIFOモードによる連続サンプルデータは、複数IDによる運用に向きません) |
右上部(f)SMP# ボタン | クリックするごとに解析窓サイズを 64,128,256 と変更します。 |
右下部(c)表示データ保存 ボタン | log フォルダにCSV形式のデータ出力を行います。バッファにある最も古いサンプルから、画面右端の最新のサンプルまでを出力します。(注:出力数は常に 5120 サンプルであり、末尾のデータが最新です) |
右下部PAUSE( ) ボタン | 表示更新を中断します。(注:サンプルの取得は内部の一時サンプルバッファが一杯になるまで行います) |
マウスドラッグ(グラフ部分) | 表示サンプルの位置を移動します。 |
マウスドラッグ(下部スクロールバー) | より大きなステップで表示サンプルの位置を移動します。 |
カーソルキー→ ← | サンプルの表示領域を移動させます。 |
カーソルキー↑ ↓ | サンプルの横軸を拡大・縮小(等倍 / 2倍 / 3倍 / 4倍)します。(注:解析サンプル数 256 の場合は2倍まで) |
サンプルレートの推定
サンプリングレートは、パケットの受信時間から計算しています。過去複数サンプルの受信時間を平均して1サンプル分としているため、パケットの飛びなどがある場合は誤差が大きくなります。
また、関連するログ記録のタイムスタンプ(T_SMPL
)も同様に推測値であり、パケット取得時と比較して遅れたタイムスタンプになります。
なお、サンプルレートの推定が終わると、グラフ表示のスクロールをスムーズにします。
CUEグラフモードの起動時に開く
[STAGE 共通設定→起動アプリ指定]にて31
を指定してください。
ログ出力(表示データ保存)
(c)表示データ保存
ボタンを押すことで、画面上の表示位置(右端サンプル)を起点とした最大 512 サンプル分のデータを出力できます。
ログファイル名は {logフォルダ}/acc_snap_{タイムスタンプ}.csv
です。
- データは、画面右端の一番新しいサンプルが 512 番目(ファイルの末尾)です。
- 周波数解析実行時は、最後のサンプルから 周波数解析サンプル数分が対象です。
- 周波数解析対象サンプルが記録されている行に周波数解析結果を追加しています(64 サンプルの場合は 449 番目から 32 行が結果で DC 成分から高周波成分までが並びます)。
ラベル | 項目名 | 説明 |
---|---|---|
# | サンプル番号 | |
T_PKT[ms] | パケット受信時刻 | 1パケットに複数のサンプルが含まれるため、同じタイムスタンプのサンプルが並びます。 |
SEQ | パケット続き番号 | 各パケットに付与されており、連続していればパケットの欠落がないと考えられます。 |
T_SMPL[ms] | サンプル時刻(仮想・推定) | パケットの受信時刻から生成した各サンプルのタイムスタンプです。実際にサンプルが行われた時刻とは一致しません。(注:サンプルレートをパケット受信間隔から推定しているため誤差が大きくなるほか、サンプル周期を都度加算しているため実際のサンプル時刻よりも1パケット周期分遅れたタイムスタンプを記録します) |
X[G] | X軸のサンプル値 | 単位はG です。センサーの値に基づいています。 |
Y[G] | Y軸のサンプル値 | 単位はG です。センサーの値に基づいています。 |
Z[G] | Z軸のサンプル値 | 単位はG です。センサーの値に基づいています。 |
FD# | 周波数解析計算値の番号 | 周波数解析サンプル数が 64 の場合は DC,1,2,...,31 の順で並びます。 |
Hz | 周波数解析計算結果の周波数軸の値 | 推定の周波数です。(FD# / FD_Len) * FD_Freq のように計算しています。 |
X | X軸の周波数解析計算値 | |
Y | Y軸の周波数解析計算値 | |
Z | Z軸の周波数解析計算値 | |
Label | 追加情報名 | 下表参照 |
Info | 追加情報 | 下表参照 |
追加情報
情報名 | 解説 |
---|---|
ModuleSID | 送信側のシリアル番号 |
Tick[ms] | ログファイルを開いたときのシステム時間(注:TWELITE STAGEアプリ側) |
Date | ログファイルを開いたときの日付 |
Time | ログファイルを開いたときの時刻 |
Time_Msec_part | ログファイルを開いたときの秒未満部分 [ms] |
Samples | 有効サンプルデータ |
FD_Len | 周波数解析サンプル数 |
FD_Start# | 周波数解析開始サンプル番号 |
FD_Freq | 周波数解析範囲の周波数推定値[Hz](注:サンプル受信間隔からの推定) |
ログ出力(自動保存)
加速度リアルタイムグラフ画面を開き、データが入力された時点から自動的にログファイルを出力します。
ログファイル名は logフォルダ/accel_{シリアル番号}_{タイムスタンプ}.csv
です。
ラベル | 項目名 | 説明 |
---|---|---|
# | サンプル番号 | |
T_PKT[ms] | パケット受信時刻 | 1パケットに複数のサンプルが含まれるため、同じタイムスタンプのサンプルが並びます。 |
SEQ | パケット続き番号 | 各パケットに付与されており、連続していればパケットの欠落がないと考えられます。 |
T_SMPL[ms] | サンプル時刻(仮想・推定) | パケットの受信時刻から生成した各サンプルのタイムスタンプです。実際にサンプルが行われた時刻とは一致しません。(注:サンプルレートをパケット受信間隔から推定しているため誤差が大きくなるほか、サンプル周期を都度加算しているため実際のサンプル時刻よりも1パケット周期分遅れたタイムスタンプを記録します) |
X[G] | X軸のサンプル値 | 単位はG です。センサーの値に基づいています。 |
Y[G] | Y軸のサンプル値 | 単位はG です。センサーの値に基づいています。 |
Z[G] | Z軸のサンプル値 | 単位はG です。センサーの値に基づいています。 |
Label | 追加情報名 | 下表参照 |
Info | 追加情報 | 下表参照 |
追加情報
情報名 | 解説 |
---|---|
ModuleSID | 送信側のシリアル番号 |
Tick[ms] | ログファイルを開いたときのシステム時間(注:TWELITE STAGEアプリ側) |
Date | ログファイルを開いたときの日付 |
Time | ログファイルを開いたときの時刻 |
Time_Msec_part | ログファイルを開いたときの秒未満部分 [ms] |
1.2.1.2.2.2.1.3.2 - センサーグラフ
Windows macOS Linux RasPi
概要
各種センサーデータを SQLite データベースに記録し、画面上にグラフ形式で表示します。データベースファイルは外部のアプリケーションから参照することも可能です。
同一実行形式名の TWELITE STAGE APP を複数起動して、センサーグラフを同時に使用することはできません。
データベースファイルは {MWSTAGEインストール}/log
フォルダに格納され、TWELITE STAGE APP の実行形式名をもとにファイル名が決まります。同一の実行形式名である場合は、同じデータベースファイルを参照してしまいます。TWELITE STAGE APP の実装では、複数のアプリが同時に同一のデータベースにデータを追加することを想定していません。また、場合によってはデータベースファイルのアクセスエラーとなり、TWELITE STAGE APP がクラッシュすることもあります。
例えば、MONOSTICK を PC に2台接続して、同時に複数の「センサーグラフ」を動作させたい場合には、別の実行形式名 (TWELITE_Stage_a.exe
, TWELITE_Stage_b.exe
) とした TWELITE STAGE アプリを複数実行します。このときのデータベースファイル名はそれぞれ log/TWELITE_Stage_a_WSns.sqlite
, log/TWELITE_Stage_b_WSns.sqlite
です。
- データベースには SQLite (sqlite3) を使用しており、
{MW_STAGE Install}/log/{実行形式名}_WSns.sqlite
というファイルに格納されます。 - 画面遷移は
[一覧(グラフプレビューあり)]
>[24時間データ]
>[ライブビュー]
です。[24時間データ]
から更に[年]
[月]
[日(グラフプレビューあり)]
選択画面に遷移できます。
[ライブ]
表示画面について- 一覧から特定のノードを選択します。
- 1秒おきのリアルタイム表示を行い、過去 450 秒間のデータを表示します。
[24時間データ]
表示画面について- 特定の日のデータを表示します。
- 1秒おきの更新とし、その間に複数のデータがあった場合は間引かれます。
- 最大拡大時(1ピクセル1秒)以外は、各ピクセルの範囲における取得値の平均を表示します。
- 値が画面よりはみ出す場合は、上下端に測定点を表示します。
- 現在時刻が含まれる場合には、新着データで表示を更新します。
- マウスホイールやカーソルキー
↑
↓
の入力:時間軸の拡大・縮小 - マウスポインタの移動:マウスポインタに対応した時間軸にある取得データを簡易表示します。
- カーソルキー
→
←
:隣の取得データに移動します。
- カーソルキー
- マウスクリック&ドラッグ:スクロール(拡大時のみ)
- 拡大時はスクロールバーによる操作も可能です。
[CSV出力]
機能では、データベースに含まれるすべての取得値を表示します。
操作
操作 | 説明 |
---|---|
マウスドラッグ(グラフ部分) | 拡大時に表示サンプルの位置を移動します。 |
マウスドラッグ(下部スクロールバー) | 表示サンプルの位置を移動します。 |
カーソルキー→ ← | サンプルの表示領域を移動させます。 |
カーソルキー↑ ↓ | サンプルの横軸を拡大・縮小します。 |
[ライブ] | 1秒刻みで最新のデータを表示するビューに移動します。 |
[24時間データ] | 1日単位のグラフに移動します。 |
[<<一覧] | 一覧選択画面に移動します。 |
[年] [月] [日] | 年月日で、特定の日を選択します。 |
[最新] | 今日のデータに移動します。 |
[CSV出力] | 1日分のデータをCSVファイルに出力します。 |
一覧で[表示] | リストの表示方式を変更します。 |
一覧で[ソート] | リストの並び順を変更します。 |
一覧で[↑] | リストの並び順を反転します。 |
センサーノードのメモ(補助情報)の編集
v1.3.9+「24時間データ画面」で、画面右上のセンサーノードのメモ部分を左クリックすると、メモを編集するためのプロンプトを使用できます。
キー | 説明 |
---|---|
通常の半角文字 | 通常の半角英数文字列を直接入力した場合は画面上にも表示されます。 |
IME による入力 | IMEからの入力は画面左上部分に入力途上の文字列が表示されます。ENTER キーで入力中の文字列を確定します。 |
BS | 表示されている末尾の文字を削除します。 |
ENTER | 入力した文字列をデータベースに反映します。 |
IME入力時の操作方法は、システム環境に依存する場合があります。
また、IME入力時の操作によっては期待しない文字列が入力される場合があります。不要な文字列が入力エリアに表示された場合は BS
キーで不要部分を削除してください。
画面遷移
基本の画面は一覧、24時間、ライブの3種類に分けられます。
[一覧] <--> [24時間] <--> [ライブ]
↓↑
[年月日選択]
センサーグラフモードの起動時に開く
[STAGE 共通設定 → 起動アプリ指定] にて 32
を指定してください。
DBのテーブルについて
sensor_data
受信したデータを格納します。
カラム名 | 型 | 解説 |
---|---|---|
_uqid | INTEGER | データベースで使用する続き番号 |
sid | INTEGERint32_t | int32_t 型で格納しているシリアル番号です。例えば “8123abcd” というシリアル番号の場合は整数値で -2,128,368,691 の値が格納されます。 |
ts | INTEGERint64_t | システムがパケットを受信した時刻で、int64_t 型で格納されるタイムスタンプ値です。UNIX epoch (エポック、1970年からの経過秒) です。 |
ts_msec | INTEGER | タイムスタンプのミリ秒部分です。 |
year | INTEGER | タイムスタンプよりローカル時間の年部分です。 |
month | INTEGER | タイムスタンプよりローカル時間の月部分です。 |
day | INTEGER | タイムスタンプよりローカル時間の日部分です。 |
hour | INTEGER | タイムスタンプよりローカル時間の時部分です。 |
lid | INTEGER | ユーザにより割り当てられた LID などの識別値です。 |
lqi | INTEGER | 受信強度の目安値です (Link Quality Indicator) 。 |
pkt_seq | INTEGER | パケットの続き番号です。どのような値を取りうるのかはファームウェアによって異なります。 |
pkt_type | INTEGER | 無線パケットの種別です。2 PAL AMB 6 ARIA 1 PAL MAG *3 PAL MOT 5 CUE 0x101 App_Twelite *0x103 App_IO *現時点で非対応 |
value | REAL | 計測値です(パケット種別によって定義が異なります)。pkt_type-> 2,6: 温度[°C] 1: 磁石の判定有無 (00->磁石なし, 01->N極, 02->S極) 3,5: X軸加速度(パケット中に複数サンプル含まれる場合は平均値)[G] 0x101,103: 入力IOのビットマップ(val_dioの下位8ビットと同値) |
value1 | REAL | 計測値です(パケット種別によって定義が異なります)。pkt_type-> 2,6: 湿度[%] 1: 未使用 3,5: Y軸加速度(パケット中に複数サンプル含まれる場合は平均値)[G] 0x101: ADC1[V] 103: 未使用 |
value2 | REAL | 計測値です(パケット種別によって定義が異なります)。pkt_type-> 2: 照度[lx] 6: 未使用 1: 未使用 3,5: Z軸加速度(パケット中に複数サンプル含まれる場合は平均値)[G] 0x101: ADC2[V] 103: 未使用 |
value3 | REAL | 計測値です(パケット種別によって定義が異なります)。pkt_type-> 2: 未使用 6: 未使用 1: 未使用 3,5: 未使用 0x101: ADC3[V] 103: 未使用 |
val_vcc_mv | INTEGER | 電源電圧[mV] |
val_dio | INTEGERint32_t | b0..b7 : DI1..DI8 の値 (1 はLOW, 0 はHIGHレベル)b24..b25 : マグネット値 (b28 が1 の場合) 00 ->磁石なし, 01 ->N極, 10 ->S極b28 : 1 の場合マグネットデータがb24..b25 に格納されるb31 : 定期送信ビット(マグネットのみ) |
val_adc1_mv | INTEGER | pkt_type-> 1,2,3,0x101 : ADC1の計測値 |
val_adc2_mv | INTEGER | pkt_type-> 0x101 : ADC4の計測値 |
val_aux | INTEGER | その他データ格納目的 |
ev_src | INTEGER | イベント発生元 |
ev_id | INTEGER | イベントIDpal_type-> 5: サイコロ(1...6) 16→MOVE他 資料参照 |
ev_param | INTEGER | イベントパラメータ |
sensor_node
センサーノードにテキストメモ(付加情報)を格納します。
カラム名 | 型 | 解説 |
---|---|---|
sid | INTEGER | 上述のSID |
sid_text | TEXT | 可読性のためにSIDを16進数に変換した文字列 |
desc | TEXTUTF-8 | SIDに対応するメモ(補助情報)。一覧などで表示する |
sensor_last
最後に受信したタイムスタンプを管理します。
カラム名 | 型 | 解説 |
---|---|---|
sid | INTEGER | 上述のSID |
ts | INTEGER | 最後の受信したときのタイムスタンプ |
lid | 以下、最後に受信時のデータの抜粋 | |
lqi | ||
pkt_type | ||
value | ||
value1 | ||
value2 | ||
value3 | ||
val_vcc_mv | ||
val_dio | ||
ev_id |
1.2.1.2.2.2.1.4 - 簡易モニタ
- CUEビューア : TWELITE CUE からのパケットを解釈して簡易表示します
- ARIAビューア : TWELITE ARIA からのパケットを解釈して簡易表示します
- Glancer : TWELITE の多くの形式に対応した簡易モニタです
1.2.1.2.2.2.1.4.1 - CUE ビューア
Windows macOS Linux RasPi
概要
TWELITE CUE から受信したメッセージを解釈して表示します。
TWELITE CUE の動作
工場出荷時の TWELITE CUE は、TWELITE CUEモードに設定されています。
TWELITE CUEモードでは、コイン電池で駆動できるように間欠駆動をしながら、いくつかの要因によってスリープから起床して、様々なデータを送信します。
起床要因
TWELITE CUE がスリープから起床するには、以下のうちいずれかの要因を必要とします。
- タイマーによる起床(定期的な起床)
- 加速度の検出による起床
- 磁気センサーによる起床(磁石が近づいたことを検出した場合)
送信するデータの種類
TWELITE CUE は、以下のデータをパケットに収めて送信します。
- 検出イベント(後述)
- モジュール電源電圧
- 磁気センサーの検出値
- 加速度データ
パケットの属性
受信したパケットの属性からは、その基本情報を得ることができます。
属性 | 解説 |
---|---|
#???? | これまでの受信パケット数です。 |
種別 | mwm5 ライブラリにおけるE_PKT の値で、パケット種別です。TWELITE CUEからのパケットは通常PKT_PAL=02 です。 |
ID | 送信元の論理IDです。通常は0..100 の値になります。 |
AD | 送信元のシリアル番号です。 |
LQ | 受信強度の目安値です (Link Quality Indicator) 。 |
SQ | パケットの続き番号です。 |
イベント
TWELITE CUEモードでは、必ず加速度イベントを出力します。 起床要因に関わらず、起床後には一定サンプル数の加速度を計測します。このとき、加速度の計測結果に応じてイベントを判定します。
イベント | 番号 | 解説 |
---|---|---|
ダイス | 1(0x00) .. 6(0x06) | 定期起床と磁気センサー検出起床を起点に判定します。起床後に大きな加速度が検出される場合は、判定不可としたイベント(0xFF )を検出する場合があります。 |
ムーブ | 16(0x10) | 加速度センサーが一定以上の加速度を検出したときに、ムーブまたはシェイクのイベントが発生します。ムーブは、計測した加速度の変化が比較的小さい場合(加速度の変化は検出したが、連続的な加速度の変化がなかった場合)に発生します。 |
シェイク | 0x08 | 加速度センサーが一定以上の加速度を検出したときに、ムーブまたはシェイクのイベントが発生します。シェイクは、計測した加速度の変化が比較的大きい場合(連続的な加速度の変化を検出した場合)に発生します。 |
電圧
モジュールの電源電圧[mV]です。
磁石
検出された磁石の極または未検出を表示します。
加速度
起床後に計測された加速度を表示します。
- サンプル:加速度のサンプル数を表示しています。10サンプル固定です。
- レートID:加速度のサンプルレートです。04固定で100Hzです。
- X,Y,Z:3つの軸の加速度です。8サンプル分の平均値として求めています。単位はミリG (1000mG=1G=9.8m/s2)です。
画面の表示例
1.2.1.2.2.2.1.4.2 - ARIA ビューア
Windows macOS Linux RasPi
概要
TWELITE ARIA から受信したメッセージを解釈して表示します。
TWELITE ARIA の動作
工場出荷時の TWELITE ARIA は、TWELITE ARIAモードに設定されています。
TWELITE ARIAモードでは、コイン電池で駆動できるように間欠駆動をしながら、いくつかの要因によってスリープから起床して、様々なデータを送信します。
起床要因
TWELITE ARIA がスリープから起床するには、以下のうちいずれかの要因を必要とします。
- タイマーによる起床(定期的な起床)
- 磁気センサーによる起床(磁石が近づいたことを検出した場合)
送信するデータの種類
TWELITE ARIA は、以下のデータをパケットに収めて送信します。
- モジュール電源電圧
- 磁気センサーの検出値
- 温湿度データ
パケットの属性
受信したパケットの属性からは、その基本情報を得ることができます。
属性 | 解説 |
---|---|
#???? | これまでの受信パケット数です。 |
種別 | mwm5 ライブラリにおけるE_PKT の値で、パケット種別です。TWELITE ARIAからのパケットは通常PKT_PAL=02 です。 |
ID | 送信元の論理IDです。通常は0..100 の値になります。 |
AD | 送信元のシリアル番号です。 |
LQ | 受信強度の目安値です (Link Quality Indicator) 。 |
SQ | パケットの続き番号です。 |
温湿度データ表
TWELITE ARIAから受信した過去9回分のデータの履歴を表示します。最新のデータが最上部に表示されます。
時間[s]
TWELITE STAGE APPが起動してからデータを受信するまでの時間[秒]です。
ID
モジュールの論理デバイスIDです。
VCC(mV)
モジュールの電源電圧[mV]です。
温度(C)
モジュールが計測した温度(°C)です。
湿度(%)
モジュールが計測した湿度(%)です。
磁石
検出された磁石の極または未検出を表示します。
1.2.1.2.2.2.1.4.3 - グランサー
Windows macOS Linux RasPi
概要
Glancer は、受信メッセージ中の情報を簡易的に表示します。
接続する TWELITE には App_Wings
を書き込んでおくことで、通信相手のTWELITE (App_Twelite
, TWELITE PAL, … アプリケーションIDと周波数チャネルを一致させれば混在も可) から受信した情報を表示できます。
操作
一覧表示の画面と選択表示の画面を切り替えて使用します。
一覧表示
通信相手からの情報を列挙します。
表示内容は(メッセージの種別、論理デバイスID、シリアルID、LQI (Lq)、電源電圧(情報に含まれている場合)、タイムスタンプ)です。
操作 | 説明 |
---|---|
[ A ] | リストの前項目に移動します。 |
[ A ]長押し | この画面を抜けて、前メニューに戻ります。 |
[ B ] | 選択表示に移行します。 |
[ B ]長押し | 項目をソートします。ソートを実行するたびに、ソートキーは順に変わります。 |
[ C ] | リストの次項目に移動します。 |
[ C ]長押し | TWELITE のリセットピンを制御し、リセットします。 |
ESC | この画面を抜けます。 |
選択表示
一覧表示で項目を移動し反転表示になったところで選択操作を行うことで、この画面に遷移します。特定の通信相手に関する情報を到着順に表示します。
選択されてからの受信パケット数と LQI の平均値が表示されます。
操作 | 説明 |
---|---|
[ A ] | 割当なし |
[ A ]長押し | この画面を抜けて、前メニューに戻ります。 |
[ B ] | 割当なし |
[ B ]長押し | 割当なし |
[ C ] | 割当なし |
[ C ]長押し | TWELITE のリセットピンを制御し、リセットします。 |
ESC | 選択画面に戻ります。 |
1.2.1.2.2.2.1.5 - コマンダー
Windows macOS Linux RasPi
概要
コマンダーは、TWELITE にシリアルメッセージを送信する機能です。
操作
コマンダーの最初の画面は留意事項について記載しています。
画面上部にはテキストで表現されたタブがあり、これをマウスでクリックすることでタブ中の画面に移動できます。
操作 | 説明 |
---|---|
[ A ] | タブの移動(左) |
[ A ]長押し | この画面を抜けて、選択画面に戻ります。 |
[ B ] | 割当なし |
[ B ]長押し | 割当なし |
[ C ] | タブの移動(右) |
[ C ]長押し | TWELITE のリセットピンを制御し、リセットします。 |
ESC | この画面を抜けて、選択画面に戻ります。 |
タブ:TWELITE
この画面では、 標準アプリ(App_Twelite) の 0x80コマンドを生成し、送信します。
接続する TWELITE には App_Twelite または 親機・中継機アプリ(App_Wings) を書き込んでおき、アプリケーションID・チャネルを設定した上で、通信相手からメッセージが受信されていることを確認してください。
項目 | 内容 |
---|---|
宛先 | 送信先の TWELITE を指定します。自身が子機の場合は「親機:0」宛を指定してください。自身が親機の場合は「全子機=0x78」または特定の子機ID(1..8まで指定可能)を指定します。 |
DI1..DI4 | DI1からDI4までの設定状態です。■は選択(LOW=GNDレベル)、□は(HIGH=VCCレベル)を意味します。下項目のSELを指定してください。 |
SEL | 各DIの選択ビットです。(0ならDIの指定を無視し、1なら指定を有効化します。) |
PWM1..4 | PWMのデューティ比を設定します。0はGNDレベル相当、1024(100%)はVCCレベル相当です。N.A.にしたPWMポートは変更しません。(注:MW-STA-KIT-0/MW-STA-SOLO-0基板のPWM1はVCCからの吸い込みとなっているため、 LEDは0のときに最も明るく点灯し、100%で消灯します。) |
タブ:NOTICE
この画面では、通知PAL(NOTICE PAL) の LED制御コマンド を生成します。
接続する TWELITE には App_Wings を書き込んでおき、アプリケーションID・チャネルを設定した上で、通信相手からメッセージが受信されていることを確認します。
項目 | 内容 |
---|---|
宛先 | 送信先の TWELITE PAL の ID を指定します。値の範囲は 1..8 です。 |
色 | 点灯色を7色から指定します。白は2種類ありますが、一方はRGBの混色でもう一方は白色LED単体が点灯します。 |
明るさ | 0..15で指定します。0は消灯です。 |
点灯点滅 | 点灯または点滅パターンを選択します。 |
点灯時間 | コマンド発行後、一定時間経過すると自動的に消灯する機能です。 |
消灯(x) | 消灯メッセージを生成し、LEDを消灯させます。 |
点灯(SPACE) | 現在の設定を送信し、LEDを点灯させます。 |
画面下部の表示
画面下部には、コマンドが生成されたタイムスタンプと :で始まるコマンドが表示されます。クリップボードにはこの画面の内容がコピーされます。
1.2.1.2.2.2.2 - アプリ書換
Windows macOS Linux RasPi
アプリ書換機能では、TWELITE のアプリ(ファームウェア)を書き込むことができます。
- ビルド済みの
.BIN
ファイルを書き込む - アクト(act)などのソースファイルからビルドして書き込む
ソースファイルのビルド、ターミナル切断、書き込みユーティリティ起動、ターミナル接続といった煩雑さを解消できます。
- TWELITE を自動で認識する
- 書き込み終了後にリセットしてからインタラクティブモードまたはターミナルに遷移する
- 各プロジェクトのリストから、プロジェクトフォルダまたはVSCode等の環境を起動する (Raspberry Pi版を除く)
- 各プロジェクトのリストから、関連情報のウェブページを開く (Linux版、Raspberry Pi版を除く)
1.2.1.2.2.2.2.1 - BINから選択
Windows macOS Linux RasPi
概要
ビルド済みのアプリ(.BIN
ファイル)を書き込むことができます。
メニューを選択すると、.BIN
ファイルの一覧が表示されます。書き込むファームウェアを選択してください。
あらかじめ用意されている.BIN
ファイルとは別のファイルを使用する際は、メニューを選択する前に書き込むファイルを以下に格納してください。
プラットフォーム | 場所 |
---|---|
Windows, macOS, Linux, Raspberry Pi | {MWSTAGEフォルダ}/BIN |
BIN
フォルダには、ファイル名を変更せずに TWELITE STAGE でビルドした .BIN
ファイル(各プロジェクトのbuild
フォルダ以下に格納されています)を格納してください。
../BIN/App_Wings_MONOSTICK_BLUE_L1304_V1-1-3.bin
App_Wings_MONOSTICK_RED_L1304_V1-1-3.bin
App_Twelite_BLUE_L1304_V1-9-1.bin
App_Twelite_RED_L1304_V1-9-1.bin
...
1.2.1.2.2.2.2.2 - actビルド&書換
Windows macOS Linux RasPi
概要
MWX ライブラリによって記述されたアクト(act)のビルドと書き換えを行うことができます。
この画面では、以下のパスに配置されたアクトによるプロジェクトの一覧を表示します。
{MWSTAGEインストールフォルダ}/MWSTAGE/Act_samples
操作
一覧から書き込むプロジェクトを選択することで、ビルド~書き込みを行えます。
なお、書き込み終了後に ENTER
または[ B ]ボタンを押すことで、TWELITE をリセットしてインタラクティブモード画面(もしくはターミナル画面、要設定)に遷移できます。
操作 | 説明 |
---|---|
[ A ] | メニュー選択↑ |
[ A ]長押し | この画面を抜けて、選択画面に戻ります。 |
[ B ] | 選択 |
[ B ]長押し | 関連ウェブサイトをOS標準のブラウザで開きます。(プロジェクトフォルダの000desc.txt に登録されている場合) |
[ C ] | メニュー選択↓ |
[ C ]長押し | フォルダ(プロジェクト、関連フォルダ)を開きます。設定メニューでVS Codeで開くように設定できます。 |
ESC | この画面を抜けて、アプリ書換メニューに戻ります。 |
マウスクリック[ヘルプ] | 関連ウェブサイトを開きます。 |
マウスクリック[フォルダ] または [VSCode] | 関連フォルダを開きます。 |
マウスクリック [▽] または [△] | 次ページ、前ページに移動します。 |
1.2.1.2.2.2.2.3 - TWELITE APPSビルド&書換
Windows macOS Linux RasPi
概要
TWENET C ライブラリによって記述された TWELITE APPS のビルドと書き換えを行うことができます。
この画面では、以下のパスに配置されたプロジェクトの一覧を表示します。
{MWSTAGEインストールフォルダ}/MWSTAGE/Wks_TweApps
操作
一覧から書き込むプロジェクトを選択することで、ビルド~書き込みを行えます。
なお、書き込み終了後に ENTER
または[ B ]ボタンを押すことで、TWELITE をリセットしてインタラクティブモード画面(もしくはターミナル画面、要設定)に遷移できます。
操作 | 説明 |
---|---|
[ A ] | メニュー選択↑ |
[ A ]長押し | この画面を抜けて、選択画面に戻ります。 |
[ B ] | 選択 |
[ B ]長押し | 関連ウェブサイトをOS標準のブラウザで開きます。(プロジェクトフォルダの000desc.txt に登録されている場合) |
[ C ] | メニュー選択↓ |
[ C ]長押し | フォルダ(プロジェクト、関連フォルダ)を開きます。設定メニューでVS Codeで開くように設定できます。 |
ESC | この画面を抜けて、アプリ書換メニューに戻ります。 |
マウスクリック[ヘルプ] | 関連ウェブサイトを開きます。 |
マウスクリック[フォルダ] または [VSCode] | 関連フォルダを開きます。 |
マウスクリック [▽] または [△] | 次ページ、前ページに移動します。 |
1.2.1.2.2.2.2.4 - Act_extras
Windows macOS Linux RasPi
概要
MWX ライブラリによって記述されたアクト(act)のビルドと書き換えを行うことができます。
この画面では、以下のパスに配置されたアクトによるプロジェクトの一覧を表示します。
{MWSTAGEインストールフォルダ}/MWSTAGE/Act_extras
操作
一覧から書き込むプロジェクトを選択することで、ビルド~書き込みを行えます。
なお、書き込み終了後に ENTER
または[ B ]ボタンを押すことで、TWELITE をリセットしてインタラクティブモード画面(もしくはターミナル画面、要設定)に遷移できます。
操作 | 説明 |
---|---|
[ A ] | メニュー選択↑ |
[ A ]長押し | この画面を抜けて、選択画面に戻ります。 |
[ B ] | 選択 |
[ B ]長押し | 関連ウェブサイトをOS標準のブラウザで開きます。(プロジェクトフォルダの000desc.txt に登録されている場合) |
[ C ] | メニュー選択↓ |
[ C ]長押し | フォルダ(プロジェクト、関連フォルダ)を開きます。設定メニューでVS Codeで開くように設定できます。 |
ESC | この画面を抜けて、アプリ書換メニューに戻ります。 |
マウスクリック[ヘルプ] | 関連ウェブサイトを開きます。 |
マウスクリック[フォルダ] または [VSCode] | 関連フォルダを開きます。 |
マウスクリック [▽] または [△] | 次ページ、前ページに移動します。 |
1.2.1.2.2.2.2.5 - 指定
Windows macOS Linux
フォルダまたは.BIN
ファイルを TWELITE STAGE APP の画面にドラッグ&ドロップすることで、特定のプロジェクトを書き込むことができます。 ドロップした対象のビルドや書き込みを行うときに選択します。
.BIN
ファイルをドロップしたときは、そのファイルが格納されるフォルダをドロップした場合と同様に、そのフォルダにあるファームウェアの一覧を表示します。1.2.1.2.2.2.2.6 - 再書換
Windows macOS Linux RasPi
直前に書き換え・指定したプロジェクトを再選択します。
項目によって、以下のいずれかを行います。
- 選択したプロジェクトの再書換
- 直前に選択したプロジェクト一覧の再表示
1.2.1.2.2.2.2.7 - ビルド・書換画面
Windows macOS Linux RasPi
ビルド中
ビルド(コンパイル)中の画面です。ビルドコマンドの内容は、コンソール画面に出力されます。画面中の ...
はビルドしたファイル数、下部の暗い色の表示はビルドしているファイル名です。
ビルドエラー
ビルドエラーが発生した場合は、上記のような画面を表示します。再ビルドの実行やエラーログの表示を行うことができます。また、一定時間でタイムアウトして直前のメニューに戻ります。
画面上のエラーメッセージは、代表的なものだけが表示されます。ビルドが失敗したとき、エラー内容のメッセージが表示されないこともあります。
操作 | 説明 |
---|---|
[ A ] | 割当なし |
[ A ]長押し | この画面を抜けて、前のメニューに戻ります。 |
[ B ] | エラー時に再ビルドします。 |
[ B ]長押し | 割当なし |
[ C ] | |
[ C ]長押し | エラーログを表示します(Windows/macOS)。保存場所は{プロジェクトフォルダ}/build/builderr.log です。 |
ESC | この画面を抜けて、書換メニューに戻ります。 |
ENTER | エラー時に再ビルドします。 |
書換中
ビルドが成功すると、ファームウェアを書き込む画面を表示します。
書換失敗
書換がエラーの場合は、下記のような画面を表示します。
操作 | 説明 |
---|---|
[ A ]長押し | この画面を抜けて、選択画面に戻ります。 |
[ B ] | 再度書換を行う(直前の書き換えメニューに戻ります。 自動的にメニュー項目が選択されるため、 もう一度[ B ]を押すことで再書換できます) |
ESC | この画面を抜けて、書換メニューに戻ります。 |
書換完了
書換が無事に成功すると、下記のような画面を表示します。
操作 | 説明 |
---|---|
[ A ]長押し | この画面を抜けて、選択画面に戻ります。 |
[ B ] | TWELITE をリセットして、インタラクティブモード画面(または設定によりターミナル)画面に移動します。 |
ESC | この画面を抜けて、書換メニューに戻ります。 |
1.2.1.2.2.2.3 - インタラクティブモード
Windows macOS Linux RasPi
概要
この画面から、接続した TWELITE のインタラクティブモードを利用できます。
この画面はターミナルとほぼ同じ振る舞いをしますが、インタラクティブモードに遷移するための操作と離脱の検出を行うなど、インタラクティブモードに固有の機能を追加しています。
- 接続する TWELITE には、インタラクティブモードに対応したファームウェアをあらかじめ書き込んでおく必要があります。
- TWELITE の入出力を使用するため、シリアル通信に文字化けなどが発生した場合など、期待通りにインタラクティブモードへの遷移や離脱ができない場合もあります。
- マウス操作には対応しておりません。キーボード(カーソル
↑
↓
での操作は可能)操作を行ってください。
ターミナルによるインタラクティブモードへの遷移と操作もできます。
- ターミナルでは、自動的にSETピンの操作を行いません。手動でSETピンをLOに設定する必要があります。
- ターミナルにおいても、
+ + +
入力Alt(⌘)+I
やモジュールリセットAlt(⌘)+R
を行う操作を定義しています。
インタラクティブモード画面の動作フロー
以下に大まかな処理の流れを記載します。
[画面黒背景にする]
↓
[TWELITEのリセット (制御可能ならSET=LO)]
↓
<間欠動作アプリのインタラクティブモードメッセージを検出?> --YES--> [操作画面]へ
↓タイムアウト
['+' を3回入力]
↓
<通常アプリのインタラクティブモードメッセージを検出?> --YES--> [操作画面]へ
↓タイムアウト
[操作画面へ] ※ この状態はインタラクティブモードではない
[操作画面]
↓
<インタラクティブモード脱出メッセージ?> --> [終了]
↓
<画面離脱操作 [ A ] 長押しなど> --> [終了]
↓
-> <入力中判定> --NO-> [終了]
↓ ↓
[入力文字列をTWELITEへ送信]
↓
[操作画面]へ戻る
[終了]
↓
[TWELITEのリセット]
↓
[画面離脱] インタラクティブモード画面を終了し前の画面へ戻る
1.2.1.2.2.2.4 - TWELITE STAGE の設定
Windows macOS Linux RasPi
概要
この画面から、TWELITE STAGE APP の各種設定を行います。
この画面のメニューはマウス操作できません。
また、画面の色を変更した場合に見づらくなる場合があります。
以下の解説のメニュー中には、プラットフォームによっては存在しない項目がありますが、全てを列挙して解説します。
共通メニュー以外の色設定については、解説を省略します。
ルートメニュー
共通設定
ターミナル
標準アプリ ビューア
グラフ表示 (加速度リアルタイム/センサー)
簡易モニター (CUA/ARIA/Glancer)
グランサー(簡易モニタ)
コマンダー
アプリ書換
インタラクティブモード
セーブデータ ユーティリティ(ダンプ/消去)
情報
共通設定
a: ( 0x00) 起動アプリ指定
G: ( 0x00) 画面サイズ・描画方法
F: ( ) シリアルデバイスID
f: (0x00FFFFFF) 文字色
b: (0x005A0032) 背景色
B: ( 115200) ボーレート
設定 | 内容 |
---|---|
起動アプリ指定 | TWELITE STAGE始動時にビューアアプリに移動する設定です。設定値は1..{ビューアアプリメニューで列挙されている数} です。注:シリアルデバイスIDを設定しておかないと、始動時に接続するシリアルデバイス選択画面で入力待ちになります。 |
画面サイズ・描画方法 | (M5Stack版を除く)XY の2桁の文字で指定します(X :画面サイズ Y :描画方法)。X 0 :640x480 1 :1280x720 2 :1280x960 3 :1920x1440 4 :2560x1440 5 :320x240Y 0 :LCD風 1 :CRT風 2 :ぼやけ 3 :ブロック |
シリアルデバイスID | (M5Stack版を除く)設定はシリアルデバイス名または数値の1..9 を指定します。注:数値の場合はデバイス列挙順になります。 |
文字色・背景色 | 文字色、背景色を指定します。共通設定の色設定値は他の画面の設定にも継承されます。他の画面で未設定の場合は共通設定の色設定が採用されます。色はRGB 24bitを16進数で指定しますが、内部的には16bit 565形式に値が丸められます。 |
ボーレート | TWELITE 側のボーレートが 115200 ではない場合に、ターミナルなどの表示が化けないように設定します。 |
アプリ書換
f: (0x00FFFFFF) 文字色
b: (0x005A0032) 背景色
j: ( 0) ビルド時のmakeジョブ数
v: ( 0) codeでフォルダを開く(VSCode)
l: ( 0) LTOを行わない
n: ( 0) 書換完了後の画面
設定 | 内容 |
---|---|
ビルド時のmakeジョブ数 | (M5Stack版を除く)ビルドを行う際の並列ジョブ数です。適切な数を設定することでビルド時間の短縮を期待できます。規定値0 は(物理プロセッサ数-1)でジョブ数を計算しています。目安としては論理プロセッサ数を上限とすると良いでしょう。 |
codeでフォルダを開く (VSCode) | (VSCodeのインストールが必要)1 を設定することでOS標準のフォルダウインドウの代わりにcodeコマンド(VSCode)でフォルダを開きます。実行ファイルTWELITE_Stage_VSCode ではデフォルトで1 に設定されています。 |
書換完了後の画面 | (M5Stack版を除く)1 を設定することでインタラクティブモード画面の代わりにターミナルを開きます。2 を設定することで、書換メニューに戻ります。TWELITE_Stage_VSCode では2 に設定されています。 |
LTOを行わない | (Windowsのみ)1 を設定すると、WindowsのコンパイラでLTOを行いません。LTOは比較的小さなバイナリを生成できる一方でリンクに時間を要します。LTOを省略することでより高速なリンクが実現できます。 |
セーブデータユーティリティ
r: Read sector.
R: Read ALL sectors.
e: Erase sector.
E: Erase ALL sectors.
この画面は、データセーブ領域のメンテナンスを行うユーティリティです。EEPROM(64バイトを1セクタとして最大60セクタ、3840バイト)をエミュレートします。
設定 | 内容 |
---|---|
r | セクタを読み出します。0..59 を入力すると、入力したセクタ番号のセクタの内容を表示します。 |
R | YES を入力すると全セクタの読み出しを行いますが、末尾の部分のみを表示します。 |
e | セクタを消去(0xFF )します。0..59 を入力すると、入力したセクタ番号のセクタが消去されます。 |
E | YES を入力すると全セクタを消去します。 |
{実行形式名}.sav
(デフォルトでは TWELITE_Stage.sav
ファイル)に保存されます。1.2.1.2.2.2.5 - シリアルポートの選択
Windows macOS Linux RasPi
概要
この画面では、シリアルポートを再選択できます。
Alt(⌘)+0
, Alt(⌘)+1,2,..
でシリアルポートを切り替えることもできます。1.2.1.2.3 - ログ機能
Windows macOS Linux RasPi
操作
記録開始
Alt(⌘)+L
を押します。
記録終了
記録中に再度 Alt(⌘)+L
キーを押します。
ログの記録が終了し、その時点のログファイルをOS標準の方法(Windowsはメモ帳、macOSはコンソール.app)で開きます。
仕様
ログの記録
TWELITE から受信した文字列は、そのまま記録されます。
TWELITE に送信した文字列は、1文字ずつ記録されます。
Windowsの場合は 「 」
、 macOS / Linux / RaspBerryPi は « »
で囲われます。
例えば«t»
とある場合は、キーボードからt
を入力したことを意味します。
ログ記録のフォルダとファイル名
{TWELITE STAGE APP の実行形式のあるフォルダ}/log
にログ開始時の日時を元にしたファイル名で保存されます。
Alt(⌘)+Shift+L
を押すことで、そのフォルダを開きます。
1.2.1.3 - 詳細な仕様
1.2.1.3.1 - コマンドライン引数とiniファイルによる詳細設定
コマンドライン引数
コマンドライン引数は、TWELITE STAGE APPのいくつかの細かい設定を行います。
コマンドライン引数 | 内容 |
---|---|
-E 0 | フェードアウトのようなグラフィカルな効果を無効にする。 |
-R {type} | {type} 値でレンダリングタイプを設定します。0: デフォルト1: OpenGL2: DirectX(Windows) Metal(macOS)3: ソフトウェア |
-J | ゲームコントローラーを有効にします。 |
-x {x_pos},-y {y_pos} | 起動時のTWELITE STAGE Appのグラフィカルウィンドウの位置を設定します。{x_pos}と{y_pos}はウィンドウの左上のスクリーン座標です。 |
iniファイル
iniファイルはTWELITE STAGE APPの基本的な設定(MWSDKのフォルダを参照するなど)を行うために使用されます。
iniファイル名は{TWELITE STAGE APPの実行ファイルのベース名} + .ini
です。 通常は TWELITE_Stage.ini
となります。
;;; MWSDKの参照を変更します。
; MWSDK=MWSDK
mwsdk=mwsdk2020_10
;;; インターフェース言語
; LANG=en
;;; ウィンドウのジオメトリ
GEOM_X=200
GEOM_Y=100
シンタックス
- ini ファイルはプレーンテキストファイルとして記述される。
- キーと値は
=
で区切られた1行に格納される (例:KEY=value
)。 - キーと値の文字列は行頭から始まる(キーの前に空白や他の文字は許されない)。
- キーと値の間にスペースを入れてはならない。
- コメント行は
;
または#
を行頭に追加する。
設定
キー | 値 |
---|---|
MWSDK | MWSDKのフォルダを変更する。デフォルトのフォルダは、TWELITE STAGE APPの実行ファイルが置かれているのと同じフォルダにある MWSDK です。古いMWSDKやカスタムMWSDKを使用する必要がある場合は、そのフォルダの名前を指定することができます。 |
LANG | LANG=en は、ユーザーインターフェースの言語をデフォルト(日本語)から英語に変更します。 |
GEOM_X, GEOM_Y | TWELITE STAGEアプリのウィンドウが表示される場所を変更する。 |
異なる設定の TWELITE STAGE APP を実行する
異なる設定の TWELITE STAGE APP が必要な場合は、TWELITE STAGE APPと同じフォルダに実行ファイルをコピーして、同じ名前の .ini
ファイルを作成します。
例えば、英語のインターフェースを使用する場合、TWELITE_Stage.exe
(注: .exe はWindowsの実行ファイルの拡張子)を TWELITE_Stage_en.exe
にコピーして、 LANG=en
の設定を TWELITE_Stage_en.ini
に書き込むことで、英語のインターフェースを有効化した実行ファイルを作成できます。
TWELITE_Stage.exe
TWELITE_Stage.ini | 特別な設定なし
TWELITE_Stage_ja.exe | TWELITE_Stage.exe のコピー
TWELITE_Stage_en.ini | LANG=en が設定されている。
1.2.1.3.2 - 環境変数
内部的に設定される環境変数
環境変数 | 解説 |
---|---|
MWSDK_ROOT | 標準では TWELITE STAGE APP の実行形式が格納されるフォルダにある MWSDK フォルダ(つまり../MWSTAGE/MWSDK )が指定されます。 MWSDK.ini が指定される場合は、指定されたフォルダ名を採用します。 |
MWSDK_TWENET_LIBSRC | サンプルコードやTWELITE APPSのソースコードフォルダには、Microsoft社の Visual Studio Code (VS Code) 用の定義ファイルを予め作成しています。この定義ファイル中にVS Codeエディタ中でコード解釈を行う目的でライブラリソースコードの参照先を指定しますが、この環境変数を用いています。MWSDK_TWENET_LIBSRC 環境変数が適切に指定されると、MWSDK 以下ではないプロジェクトフォルダでもコード解釈が行われ、ライブラリ関数名の補完などが機能します。(参考) |
LANG=C | ツールチェインのメッセージを規定の言語(英語)にするため、明示的に設定しています。 |
PATH | Windowsでは、SDK添付のmsysユーティリティへのPATHを追加します。 |
MWSDK_MAKE_JOBS MWSDK_MAKE_DISABLE_LTO | VS Codeの設定定義で利用します。JOBS : STAGE APPで設定された並列ビルド数を渡しますDISABLE_LTO : LTOを無効化します(
Windows
) |
参考
.vscode/settings.json
の設定例(抜粋)
"C_Cpp.default.includePath": [
"${env:MWSDK_TWENET_LIBSRC}/include/**",
"${env:MWSDK_TWENET_LIBSRC}/src/**"
],
"C_Cpp.default.browse.path": [
"${env:MWSDK_TWENET_LIBSRC}/include/**",
"${env:MWSDK_TWENET_LIBSRC}/src/**"
],
"../../"
で始まる定義は、TWELITE STAGEアプリからプロジェクトを開く場合は不要です。環境変数MWSDK_TWENET_LIBSRC
を設定しない場合に、既定のフォルダ構成の時にソース参照先を指定しています。
1.2.1.3.3 - 000desc.txt によるプロジェクト説明の追加
プロジェクトフォルダに000desc.txt
を作成した場合には、TWELITE STAGE APP が、プロジェクトフォルダの一覧にその内容を表示します。
ファイルは UTF-8 形式のプレーンテキストで記述します。書式は以下の2種類があります。
書式1
スイッチを押した時にLEDを点灯
act4はTWELITE DIPに接続されたスイッチを押した時にLEDを点灯させるactを動作させます。
https://mono-wireless.com/jp/products/act/index.html
- 1行目はタイトル行です。
- 2行目以降は詳細の記述です。
- 最終行が http で始まる場合は、ウェブサイトへのリンクになります。
書式2
[JAPANESE]
TITLE=actのテンプレート
DESC=中身が何もない setup(), loop() のみのファイルです。
新しく act を記述するのに利用してください。
URL=jp/MWX/content/Act_samples/README.html
[ENGLISH]
TITLE=act empty template
DESC=This act file only contains empty setup() and loop(),
which is intended to write a new act.
URL=en/MWX/content/Act_samples/README.html
iniファイルのような書式です。行頭から始まる項目名と=
文字までを項目の定義として=
以降が項目の内容です。
項目定義 | 詳細 |
---|---|
[JAPANESE] , [ENGLISH] | ブロックの区切り |
TITLE= | タイトル行 |
DESC= | 詳細の記述。改行を含めて複数行にすることもできます。 |
URL= | ウェブサイトまたはファイルへのリンク |
URL 指定について
URL= | 詳細 |
---|---|
https: , http: で始まる | そのアドレスを開きます |
それ以外 | {MWSDK_ROOT}/docs/ を起点とした相対フォルダを指定します。a/b/c.html とした場合は {MWSDK_ROOT}/docs/a/b/c.html に変換されます。 |
1.2.1.4 - ライセンス
モノワイヤレス 株式会社が配布するTWELITE_Stageの実行形式は MW-SLA-1J,1E が適用されます。
ソースコードについてはMW-OSSLA-1J,1Eが適用されます。概要はリンク先を参照ください。
お客様がソースコードからビルドした場合は、非商用目的でより制限の緩和されたMW-OSSLA-1J,1Eによる運用が可能です。
一部の配布パッケージ(2020/10/9現在では M5Stack用 0.8.9a パッケージのみ)ではMW-SLA-1J,1E と MW-OSSLA-1J,1E とのデュアルライセンスを適用しているものもあります。パッケージ内のライセンス記述を確認してください。
商用利用ではMW-SLA-1J,1Eを選択いただくことになりますのでご注意ください。
利用したオープンソース成果物
高品質なソースコードを提供いただいたオープンソースプロジェクトに感謝いたします。
名前 | 記述 |
---|---|
SDL2 | Simple DirectMedia Layer Copyright (C) 1997-2020 Sam Lantinga |
getopt | Copyright (c) 1987, 1993, 1994The Regents of the University of California. All rights reserved. |
regex | regex - Regular expression pattern matching and replacementBy: Ozan S. Yigit (oz) Dept. of Computer Science York University |
printf | Copyright (c) 2014 Marco Paland |
東雲フォント | 2001 The Electronic Font Open Laboratory http://openlab.ring.gr.jp/efont/ |
M+ BITMAP FONTS | Copyright 2002-2005 COZ coz@users.sourceforge.jp |
SQLiteC++ | Copyright (c) 2012-2021 Sebastien Rombauts (sebastien.rombauts@gmail.com) |
sqlite3 | All of the code and documentation in SQLite has been dedicated to the public domain by the authors. |
1.2.1.5 - 改訂履歴
ソースコードの変更履歴は https://mwm5.twelite.info/changes および https://github.com/monowireless/mwm5 を参照してください。
プラットフォームによっては、配布中の最新バージョンと改訂履歴の最新バージョンが一致しない場合があります。
1.3.8 MWSTAGE2022_08収録版
メジャーバージョンアップ。
- 内部描画解像度を320x240から640x480ピクセルに変更
- 加速度センサーのリアルタイムグラフの追加
- センサーデータの保存とグラフ表示を行うセンサーグラフを追加
- 英語表示に対応
- 主要マニュアルをローカルhtmlファイルに変更
1.0.8 MWSTAGE2021_09収録版
- [ A ] [ B ] [ C ]ボタンで、ポインタから外れたボタンが残ってしまう場合があった
- STAGE APPでEnter入力の際にTWELITEに対してCRLFを送信するようにした
- MacのFTDIライブラリを更新しApple Silicon(M1)でもシリアル仲介プログラムを利用しなくても、動作できるようになった
- Windowsでmsysツール群のPATHを内部設定し、期待しないmakeが呼び出されないようにした
- TWELITE未接続でも書き込み画面に移動できるようにした(B,Rキーを入力し、対象のTWELITEモデルを指定する)
- VSCodeを利用する設定を行った場合は、actやTweAppsを選択したときに、ビルドを実行せず、build/以下の.binファイルを書き込む画面を開くようにした。(ビルドはVSCodeから実施します)
- いくつかの環境変数を内部的に設定し、TWELITE STAGEから起動したVSCodeにこれらを参照させることで、VSCodeから適切なビルドを実行、VSCodeのコード解釈に対して適切なライブラリソースを参照できるようにした
- MWSDKフォルダ以下にサンプルコードが格納されているが、ビルド対象のフォルダをドロップすることで、MWSDK以外のフォルダでもビルドや書き込み作業をできるようにした(フォルダ名に空白や日本語文字などが含まれてはいけません)
- 始動時のコンソール画面に、内部のフォルダ設定や環境変数の設定内容を表示するようにした
- 終了時は1秒待ってからSTAGE APPを終了するようにした
1.0.7pre2
- Raspberry Pi の対応を強化 (1.0.7pre2)
- serial0 の対応(TWELITE STAGE HAT)
- Zero 向けビルドを追加(対応ライブラリでビルド&描画フェード機能を無効化)
- X11 デスクトップ向けビルドを追加
- 一般のFTDIデバイス(FT232,FT230)でも利用できるようにした。ファームウェア書き込みモードは手動で行う必要があります
- Windowsで、シリアルポート選択画面でcキーを押すことでWindowsで割り当てられているCOMポートを表示する機能を追加した
- ボーレートを115200bpsから変更できるようにした
- 描画フェード機能を無効にするコマンドラインオプション(-E 0)を追加。
1.0.3 MWSTAGE2020_12収録版
- TWELITE CUE対応(パーサー・CUEビューア)
- 書換メニューで、書き込み時にベリファイ(比較)を行うようにした。
- Apple Silicon暫定対応(TWELITE_Stage.command はユニバーサルアプリ、シリアル処理用の外部コマンドsersrv_ftdi.command、Toolsは Rosetta2 で動作可能な intel バイナリを再ビルド、シリアル通信は外部コマンド経由のため遅くなります)
- フォルダ構成で MWSTAGE/MWSDK/Tools を MWSTAGE/Toolsに移動した。(MWSDKをMWSDK_COMMONレポジトリをそのまま利用できるようにするため)
- TWELITE_Stage.ini (起動ファイル名から拡張子を取り除き .ini を付加) を、起動時に読み込みMWSDKフォルダを選択できるようにした。(古い版のライブラリ一式を簡単に切り替えられるようにした)
- 画面描画用のSDL2ライブラリを 2.0.12 に変更した (Windows, MacOS, RaspberryPi)。
- Windows では static ビルドとして DLL ファイル不要とした。
- make -j による並列ビルド数を(物理CPU数 - 1)とした。
- 書換メニューのいくつかの場所で、シリアルポートの再オープンを明示的に行うようにした。デバイスの抜き差しを行ったときなどにUSB接続が切断した場合などに、復帰しやすいようにした。
- Alt(Cmd)+Shift+m, t で mwx, twesettings を開くとき TWENET/usever.mk 記載のフォルダを
- 開くようにした。
- [Raspberry Pi] 初回起動時に /dev/serial0 での書込メニュー遷移が失敗する問題を修正。
既知の問題
- 起動時にAlt(Cmd)押し下げ時のヘルプメッセージが出現しない場合がある。Alt(Cmd)+0を入力することで表示されます。
- 書換メニューでファイル名が長すぎる場合に、行の行事が乱れる場合がある。
- Apple Siliconでの動作については十分な検証を行っていません。
0.9.11 MWSTAGE2020_10, Raspberry Pi 版 (暫定版)
(※包括的な検証を実施しないバージョンです)
- Raspberry Pi での動作
- その他、機能調整
0.9.9 - MWSTAGE2020_10収録版
- 最上位メニューにも [ウェブ] ボタンを追加し、関連リンクをブラウザで開けるようにした。
- Linux版のフォルダ、ウェブ、VS Code で開く機能を実装した。
- TWELITE が頻繁に UART 出力している場合に、書き込みメニューへ遷移しづらいことがあった
0.9.8a
https://github.com/monowireless/TWELITE_STAGE_Bin_M5Stack/releases/tag/0.9.8a
M5Stack版で MW-SLA-1J,E / MW-OSSLA-1J,E のデュアルライセンスとし、readme-j.txt を更新した。
0.9.8
ビューア一覧表示に[ウェブ]ボタンを追加し、関連サイトを開く機能を追加など。
改定内容
- ビューア>コマンダーの追加
- 標準アプリ 0x80 コマンド
- NOTICE PALのLED制御 (App_Wingsにコマンドを送付)
- ビューア>PALビューアのNOTICE PAL対応。
- Act_extrasのメニューを追加
- Act_samplesより高度なもの
- 外部のオープンソースライブラリ(センサー手続きなど)を利用したもの
- マウスによる操作を拡大 (リスト、ボタン、タブ)
- マウス移動でフォーカス、左クリックで確定、右クリックは[ESC]キー入力
- 画面表示負荷の低減
- アプリケーションがバックグラウンドの時はスクリーンセーバーを無効にした
- アプリケーションがバックグラウンドの時は、描画回数を減らして CPU 負荷を減らした
- ビルドプロジェクト(act, TWE_Apps, Act_extras)の一覧の機能強化
- 項目選択時に下部に概要を表示 (000desc.txtを読み込む。TWE_Descクラスにより処理)
- プロジェクトフォルダを開く(またはVSCodeで開く)機能
- 関連ウェブサイトを開く機能
- ALt+Shift+m mwxライブラリ、Alt+Shift+t twesettingsライブラリを開く機能
- ビルドメニュー中で選択中のフォルダやビルドエラーファイルを開けるようにした。
- ログ(シリアルポート入出力)機能の追加
- (Alt/Cmd+L)でログの開始・終了
- ログファイルを {TWELITE_Stage 実行形式のあるフォルダ}/log に格納
- ファイル名は twestage_{日付-時刻}.log
- Shift+Alt/Cmd+L でログファイルフォルダを開く
- その他、変更・修正など
- シリアル(FTDI)デバイス名、IDの表示方法を変更
- App_UARTでインタラクティブモードに遷移しなかった問題を修正
- フォルダドロップ時の挙動を変更した (これまではバイナリ書き込みになる場合があったが、メニュー遷移とした)
- ターミナル長押し時[C]でリセットに加え、画面クリアするようにした。
既知の問題
- M5Stack で設定を保存するときにハングアップし、設定内容が初期化される場合があります。
0.8.9
2020_05 リリース版
- ウインドウアイコンの追加
- BINファイル一覧画面での最大リスト数の制約を緩和 (win/linux/mac)
- Glancerビューアの追加
- 解説文面等の調整
- コンソール画面の描画の調整
- ファーム書き込み後の移動先画面(インタラクティブモードかターミナルか)の設定が動作していなかった
- Alt(or Cmd)+W の割り当てを変更
- その他不具合の修正
0.8.6
Linux 版リリース初版
0.8.5
リリース初版
1.3 - TWELITE APPS
インタラクティブモードとは
インタラクティブモードは、 TWELITE APPS の詳細設定を行うモードです。
複数のグループで通信したい場合や、通信エラーを減らしたい場合等に必要な設定を行うことができます。
PC との接続
TWELITE の場合 | MONOSTICK の場合 |
---|---|
親基板へ用意した7Pインターフェイスに TWELITE R シリーズを装着し、USBケーブルを使ってパソコンと接続してください。 | MONOSTICK をパソコンの USB ポートに接続してください。 TWELITE R シリーズ は必要ありません。 |
TWELITE DIP (BLUE/RED) の場合 | その他の場合 |
---|---|
TWELITE R シリーズ へ装着し、USBケーブルを使ってパソコンと接続してください。 | 7Pインターフェイスを備える TWELITE シリーズには TWELITE R シリーズ を装着し、USBケーブルを使ってパソコンと接続してください。 |
インタラクティブモードの切り替え
TWELITE STAGE を使用する場合
TWELITE STAGE APP は TWELITE のファームウェアの書き込みと設定、および受信したデータの表示機能を統合した開発ツールです。
- TWELITE STAGE APP を起動する
- TWELITE STAGE APP のメニューから「インタラクティブモード」を選択する
ターミナルソフトを使用する場合
一般のターミナルソフトを使用することもできます。
- パソコン側でターミナルソフトを起動する(通信条件:115200bps/8-N-1)
- TWELITEをリセットする。
- パソコンのキーボードの
+
をゆっくり(0.2~1秒間隔)で3回押下する。上手くいかない場合は、繰り返し + を入力する。
インタラクティブモードを終了するには、もう一度+
を3回押下してください。
+
キーを入力すると失敗する場合があります。本体の+
を使用してください。インタラクティブモードの操作
インタラクティブモードでは、以下のような画面を表示します。
--- CONFIG/TWELITE APP V1-00-2/SID=0x81000038/LID=0x78 ---
a: set Application ID (0x67720102)
i: set Device ID (--)
c: set Channels (18)
t: set mode4 sleep dur (1000ms)
y: set mode7 sleep dur (10s)
f: set mode3 fps (32)
---
S: save Configuration
R: reset to Defaults
表示内容は、ファームウェアの種類やバージョンによって異なります。
手順
- 値を選択:先頭のアルファベットを押下
- 値を指定:値を入力
- 値を確定:
Enter
キーを押下 - 値を保存:
S
(大文字)を押下 - 値を適用:TWELITE を再起動
()
内の値は設定値です。
R
(大文字)を押下することで、初期値へリセットできます(S
で適用)。
操作例
アプリケーションIDを 0xBEEFCAFE
へ設定する場合の入力は次のようになります。
Input Application ID (HEX:32bit): BEEFCAFE
S
コマンドで内容を保存したのち、本体を再起動してください。TWELITE APPS に共通する設定
周波数チャネル、アプリケーションID、デバイスID、再送回数と送信出力の設定は、TWELITE APPS に共通しています。
アプリケーションIDと周波数チャネル
同一のアプリケーションIDと周波数チャネルをもつ端末でないと通信できません。
a
:アプリケーションID
通信を行うすべての端末へ同一の値を設定すると、論理的にネットワークを分離できます。
TWELITE は、自身と異なるアプリケーションIDをもつ端末から受信したパケットを破棄します。したがって、同一の周波数チャネル内へ複数のグループを設けることができます。
アプリケーションIDが同一であっても、周波数チャネルが同一であった場合はパケットの干渉を避けることはできません。可能な限り周波数チャネルを分けるようにしてください。
グループ数が16以下の場合は、周波数チャネルとアプリケーションIDの双方をグループごとに分けることを推奨いたします。
0
またはF
が連続する値は設定できません(0xFFFF????
/0x0000????
/0x????FFFF
/0x????0000
)。0x80000001
以上の値を設定する場合は、必ずお客さまのお手元にある TWELITE へ刻印されたシリアル番号を使用してください。
皆さんがこのルールを守る限り、誰もがユニークなアプリケーションIDを得ることができます。
c
:周波数チャネル
通信を行うすべての端末へ同一の値を設定すると、物理的にネットワークを分離できます。
TWELITE は IEEE802.15.4 規格へ準拠しており、2.4GHz帯を16チャネルに分割して使用します。
周波数チャネルを変更する場合は、c
(小文字)を押下してください。
チャネルアジリティーの使用(通常は非推奨)
カンマ区切りで複数のチャネルを指定することで、チャネルアジリティを有効化できます。
チャネルアジリティは、複数の周波数チャネルを一定の間隔で切り替えながら通信することにより、劣悪な通信環境における通信の成功率を改善する仕組みです。
同時に3チャネルまで指定できます。指定されたチャネルを一定の間隔で順番に切り替えて送信します。受信側においても、チャネルを一定の間隔で順番に切り替えて受信します。
なお、チャネルの切り替え中は受信できません。通常の通信環境では、1チャネルを指定するよりも通信の信頼性は低下します。
各 TWELITE APPS の初期値
TWELITE APPS | アプリケーションID | 周波数チャネル |
---|---|---|
超簡単!標準アプリ(App_Twelite) | 0x67720102 | 18 |
リモコンアプリ(App_IO) | 0x67720107 | 16 |
シリアル通信アプリ(App_Uart) | 0x67720103 | 18 |
無線タグアプリ(App_Tag) | 0x67726305 | 15 |
パルアプリ(App_PAL) | 0x67726305 | 15 |
キューアプリ(App_CUE) | 0x67720102 | 18 |
アリアアプリ(App_ARIA) | 0x67720102 | 18 |
親機・中継機アプリ(App_Wings) | 0x67720102 | 18 |
i
:論理デバイスID
論理デバイス ID は各端末を識別するために使用します。各端末に論理的なIDを割り振ることができます。
1つの親機に対して複数の子機を使用する場合は、各子機へ異なる ID(1
~100
)を付与してください。
x
:送信出力と再送回数
送信出力を弱めることで電波の有効伝達範囲を狭くすることができます。ただし消費電力は変わりませんから、通常は最大出力でお使いください。
出力を弱めてしまうと、届いてほしいときに届かないことがあります。
出力を弱めることで到達範囲を狭くしなくてはならないとき、多くの場合はシステムの設計に問題があるといえます。周波数チャネルとアプリケーションIDにより、ネットワークを適切に分離してください。
再送回数は、1回の送信リクエストにつき追加で送信する回数を指します。通信環境が悪い場合は、再送回数を設定するとデータの到達率が向上する場合があります。ただし、通信時間と消費電力は再送に応じて増加します。
インタラクティブモードでは2桁の数値を入力します。
- 十の位:再送回数
1
~9
回0
は各アプリのデフォルト値F
で無効化
- 一の位:送信出力
3
が最強2
/1
/0
と1段階小さくなるたびに-11.5dB
の出力低下
例
32
→ 再送3回、出力1段階弱める93
→ 再送9回、出力最大
6dB
です。設定値を小さくするたびに半分となりますから、1段階小さくした場合の伝達距離は約4分の1になるものと予想されます。ただし、実際の距離はノイズや遮蔽物の有無に依存します。設定の初期化
設定内容によっては、操作へ支障をきたす場合があります(ボーレート変更など)。
次の手順で初期化できます。
- 他のアプリへ書き換え
- インタラクティブモードへ切り替え
R
でリセットS
で保存
- 元のアプリへ書き戻す
各 TWELITE APPS に固有の設定
各アプリによって異なる設定については、以下のページをご覧ください。
1.3.1 - 超簡単!標準アプリ マニュアル
1.3.1.1 - 超簡単!標準アプリ マニュアル
資料の取り扱いについてをご覧ください。
お気付きの点がございましたら、当社サポート窓口へお問い合わせください。
ダウンロード
超簡単!標準アプリ(App_Twelite
)を導入するには TWELITE STAGE SDK をインストールして、TWELITE STAGE アプリを使って書き換えてください。
1.3.1.1.1 - 超簡単!標準アプリのピン配置
ピン配置
ピン名 | 機能 |
---|---|
VCC GND | 電源入力 |
DIx AIx | デジタル・アナログ入力 |
DOx PWMx | デジタル・アナログ出力 |
TX RX | UART |
SCL SDA | I2C |
Mx BPS | 設定入力 |
RST | リセット入力 |
x
は任意の数字を表します。例えば、M1
M2
M3
の総称を Mx
と表しています。電源入力
VCC
/GND
には、3.3V(2.3-3.6V)の電源を接続します。
デジタル・アナログ入出力
DIx
/DOx
, AIx
/PWMx
ピンは、対応する番号のピンが同期して信号伝送を行います。
デジタル | アナログ |
---|---|
DIx の入力→DOx の出力 | AIx の入力→PWMx の出力 |
超簡単!標準アプリでは、アナログ入力の電圧範囲を 0-2V としています。
VCC
へ接続するなど、2V以上の電圧を入力した際は未使用扱いとなります。
シリアル通信
UART
TX
/RX
は、UART 通信の送信と受信に使用します。具体的には、次のような場面で使用します。
- 無線による信号伝送
- UART の信号伝送
- I2C の信号伝送(親機側)
- 外部デバイスとの有線通信
- ファームウェアの管理
- ファームウェアの設定変更(インタラクティブモード)
- ファームウェアの書き換え
I2C
SCL
/SDA
ピンは、I2C のターゲットデバイスを接続する際に使用します。
設定入力
Mx
ピンを未接続またはGND
へ接続することで、親機、子機、中継機といった動作モードを切り替えることができます。
BPS
ピンを未接続またはGND
へ接続することで、UART のボーレート(通信速度)を 115200bps 以外の値へ変更できます。
リセット入力
リセット入力ピン RST
と GND
との間にプッシュボタンを接続することで、リセットボタンを実装できます。RST
は内部プルアップされています。
1.3.1.1.2 - 超簡単!標準アプリの動作モード
動作モードの一覧
各モードは、Mx
ピンを未接続または GND
へ接続することで設定します。
M3 | M2 | M1 | モード | 機能 | 省電力 | LID |
---|---|---|---|---|---|---|
O | O | O | 子機: | 入力状態を親機へ | 120 | |
O | O | G | 親機: | 入力状態を子機へ | 0 | |
O | G | O | 中継機: | 122 | ||
O | G | G | 子機: | 頻繁に入力状態を親機へ | 123 | |
G | O | O | 子機: | 1秒おきに入力状態を親機へ | ✅ | 124 |
G | O | G | 子機: | 1秒おきに入力状態を親機へ | ✅ | 125 |
G | G | O | - | 未使用 | - | - |
G | G | G | 子機: | 10秒おきに入力状態を親機へ | ✅ | 127 |
O:未接続(OPEN)、G:
GND
へ接続
初期状態は子機:連続モードです。
モードによって端末を識別するための論理デバイスID(LID)の初期値は異なります。
親機または中継機モードに限り、インタラクティブモードで切り替えできます。
親機は121
、中継機は122
としてください。
未使用のAIx
ポートの扱い
子機:連続/子機:連続0.03秒/親機:連続 モードでは、未使用の AIx
ポートを VCC
へ接続してください。
未使用の AIx
ポートは不定の値を報告します。これらのモードは入力信号に変化が生じた際にデータ送信を行いますから、不要なデータ送信を引き起こす場合があります。
親機
連続モード
親機:連続モード
信号入力の変化を検知したとき、また1秒おきに、すべての子機へデータを送信します。
また子機から送信されるデータを常時待機しており、反応がよいものの、常に電力を消費します。
- 受信:常に待機
- 送信:入力変化時/1秒おき
定期送信の無効化
0x00000002
を設定することで、1秒おきの定期送信を無効化できます。子機
連続モード
子機:連続モード
信号入力の変化を検知したとき、また1秒おきに、すべての親機へデータを送信します。
また親機から送信されるデータを常時待機しており、反応がよいものの、常に電力を消費します。
- 受信:常に待機
- 送信:入力変化時/1秒おき
定期送信の無効化
0x00000002
を設定することで、1秒おきの定期送信を無効化できます。子機:連続0.03秒モード
子機:連続モードの定期送信の間隔は1秒ですが、これを0.03秒に短縮するモードです。
親機から送信されるデータを常時待機しているものの、子機から親機への通信で帯域を占有してしまうため、親機の入力に対する反応は鈍くなってしまいます。常に電力を消費します。
- 受信:常に待機
- 送信:入力変化時/0.03秒おき
間欠モード
子機:間欠1秒モード
信号入力の変化を検知したとき、また1秒おきに節電モードを解除し、すべての親機へデータを送信します。
受信機能を無効とするため、親機の制御を受けることはできません。省電力性能に優れたモードです。
- 受信:無効
- 送信:入力変化時/1秒おき
子機:間欠10秒モード
信号入力の変化を検知したとき、また10秒おきに節電モードを解除し、すべての親機へデータを送信します。
受信機能を無効とするため、親機の制御を受けることはできません。省電力性能に優れたモードです。
- 受信:無効
- 送信:入力変化時/10秒おき
子機:間欠受信1秒モード
信号入力の変化を検知したとき、また1秒おきに節電モードを解除し、すべての親機へデータを送信します。
1秒おきに受信処理も合わせて行います。省電力性能に優れていますが、子機:間欠1秒モードには劣ります。
- 受信:1秒おき
- 送信:入力変化時/1秒おき
中継機
連続モード
中継機:連続モード
中継機は、受信したパケットを送信します。
親機と子機の間に3つまで設置できますが、中継機を増やすとパケットの数が増大するため、干渉しやすくなることに注意してください。
- 受信:常に待機
- 送信:受信時
0x00008000
を指定してください。1.3.1.1.3 - 超簡単!標準アプリの代替ボーレート設定
代替ボーレート設定の有効化
BPS
ピンを GND
へ接続することで、代替ボーレート設定を有効化できます。
BPS | 内容 | ボーレート | 備考 |
---|---|---|---|
O | デフォルト | 115200bps | |
G | 上書き設定 | 38400bps | 変更可 |
O:未接続(OPEN)、G:
GND
へ接続
BPS
ピンが GND
に接続されていないと、インタラクティブモードの設定値は適用されません。1.3.1.1.4 - 超簡単!標準アプリのUART機能
デジタル・アナログ入出力
0x81
:相手端末からの状態通知
受信した入力信号の状態を出力します。
データ形式
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信元の論理デバイスID | |
1 | uint8 | コマンド番号 | 0x81 のみ |
2 | uint8 | パケット識別子 | アプリケーションIDより生成 |
3 | uint8 | プロトコルバージョン | 0x01 のみ |
4 | uint8 | LQI | 0 -255 |
5 | uint32 | 送信元のシリアルID | 0x8??????? |
9 | uint8 | 送信先の論理デバイスID | |
10 | uint16 | タイムスタンプ | 1秒で64カウント |
12 | uint8 | 中継回数 | |
13 | uint16 | 電源電圧 | 単位はmV |
15 | int8 | - | (未使用) |
16 | uint8 | デジタル信号 | LSBから順にDIx へ対応、0 がHighMSBが 1 なら定期送信 |
17 | uint8 | デジタル信号マスク | LSBから順にDIx へ対応、1 が有効 |
18 | uint8 | AI1 の変換値 | アナログ信号の計算を参照、0xFF で未使用 |
19 | uint8 | AI2 の変換値 | アナログ信号の計算を参照、0xFF で未使用 |
20 | uint8 | AI3 の変換値 | アナログ信号の計算を参照、0xFF で未使用 |
21 | uint8 | AI4 の変換値 | アナログ信号の計算を参照、0xFF で未使用 |
22 | uint8 | AIx の補正値 | LSBから2ビットずつ順にAIx へ対応 |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
アナログ信号の計算
AIx
の入力電圧 \(V\)は、受信した変換値\(e_{r}\)および補正値\(e_{fr}\)を使って次のように表すことができます。
単位は mV
出力データの例
:78811501C98201015A000391000C2E00810301FFFFFFFFFB
上記データの解釈
# | データ | 内容 | 値 | |
---|---|---|---|---|
: | char | ヘッダ | : | |
78 | 0 | uint8 | 送信元の論理デバイスID | 0x78 |
81 | 1 | uint8 | コマンド番号 | 0x81 |
15 | 2 | uint8 | パケット識別子 | 0x15 |
01 | 3 | uint8 | プロトコルバージョン | 0x01 |
C9 | 4 | uint8 | LQI | 201/255 |
8201015A | 5 | uint32 | 送信元のシリアルID | 0x201015A |
00 | 9 | uint8 | 送信先の論理デバイスID | 0x00 |
0391 | 10 | uint16 | タイムスタンプ | 約14.27 秒 |
00 | 12 | uint8 | 中継回数 | 0 |
0C2E | 13 | uint16 | 電源電圧 | 3118 mV |
00 | 15 | int8 | - | |
81 | 16 | uint8 | デジタル信号 | DI1 L DI2 H DI3 H DI4 H (定期送信) |
03 | 17 | uint8 | デジタル信号マスク | DI1 DI2 |
01 | 18 | uint8 | AI1 の変換値 | 16 mV |
FF | 19 | uint8 | AI2 の変換値 | 未使用 |
FF | 20 | uint8 | AI3 の変換値 | 未使用 |
FF | 21 | uint8 | AI4 の変換値 | 未使用 |
FF | 22 | uint8 | AIx の補正値 | AI1 0x03 |
FB | uint8 | チェックサム | 0xFB | |
char | フッタ | \r | ||
char | フッタ | \n |
0x80
:相手端末の出力変更
相手端末の出力信号を制御します。
データ形式
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信先の論理デバイスID | 親機0x00 ,子機0x01 -0x64 ,全子機0x78 |
1 | uint8 | コマンド番号 | 0x80 のみ |
2 | uint8 | 書式バージョン | 0x01 のみ |
3 | uint8 | デジタル信号 | LSBからDOx に対応、0 でHigh |
4 | uint8 | デジタル信号マスク | LSBからDOx に対応、1 で有効 |
5 | uint16 | PWM1 信号 | 0 -1024 ,0xFFFF で無効 |
7 | uint16 | PWM2 信号 | 0 -1024 ,0xFFFF で無効 |
9 | uint16 | PWM3 信号 | 0 -1024 ,0xFFFF で無効 |
11 | uint16 | PWM4 信号 | 0 -1024 ,0xFFFF で無効 |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
UART 入出力
0x01
:任意のデータの送信
データ形式
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信先の論理デバイスID | 親機0x00 ,子機0x01 -0x64 ,全子機0x78 |
1 | uint8 | コマンド番号 | 0x01 のみ |
2 | [uint8] | 任意のデータ | 長さ\(N\)のバイト列(\(N\leqq80\)を推奨) |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
0x01
を指定する場合と同様です。0x01
:任意のデータの受信
データ形式
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信元の論理デバイスID | 親機0x00 ,子機0x01 -0x64 ,未設定子機0x78 |
1 | uint8 | コマンド番号 | 0x01 のみ |
2 | [uint8] | 任意のデータ | 長さ\(N\)のバイト列 |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
0x01
であった場合と同様です。I2C 入出力
0x88
:I2C 入力
データ形式
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信先の論理デバイスID | 親機0x00 ,子機0 -0x7F ,全子機0x78 ,自身0xDB |
1 | uint8 | パケット識別子 | 0x88 のみ |
2 | uint8 | 応答番号 | 応答メッセージへ出力する番号 |
3 | uint8 | コマンド番号 | 書き込み0x1 ,読み出し0x2 ,読み書き0x4 |
4 | uint8 | I2Cアドレス | 7ビット |
5 | uint8 | I2Cコマンド | 最初のコマンドバイト |
6 | uint8 | データサイズ | 0 はなし |
7 | [uint8] | データ | 長さ\(N\)のバイト列 |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
0x4
では、データサイズに読み出すデータのサイズを指定したうえで、データを省略してください。指定されたI2Cコマンドを書き込み、データサイズの分だけ読み出しを行います。0x89
:I2C 出力
データ形式
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信元の論理デバイスID | 親機0x00 ,子機0 -0x7F ,全子機0x78 ,自身0xDB |
1 | uint8 | パケット識別子 | 0x89 のみ |
2 | uint8 | 応答番号 | 応答メッセージへ出力する番号 |
3 | uint8 | コマンド番号 | 書き込み0x1 ,読み出し0x2 ,読み書き0x4 |
4 | uint8 | 結果 | 失敗0 、成功1 |
5 | uint8 | データサイズ | 0 はなし |
6 | [uint8] | データ | 長さ\(N\)のバイト列 |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
1.3.1.1.5 - インタラクティブモード(超簡単!標準アプリ)
ここでは超簡単!標準アプリ(App_Twelite)に固有の機能を説明します。共通機能については、TWELITE APPS マニュアル のトップページを参照してください。
TWELITE がスリープしている間はインタラクティブモードを使用できません。
Mx
ピンの設定を子機連続モードあるいは親機・中継機モードとしてください。
表示例
次のような画面を表示します。
--- CONFIG/TWELITE APP V1-01-1/SID=0x8201001f/LID=0x78 ---
a: set Application ID (0x67720102)
i: set Device ID (--)
c: set Channels (18)
x: set Tx Power (03)
t: set mode4 sleep dur (1000ms)
y: set mode7 sleep dur (10s)
f: set mode3 fps (32)
z: set PWM HZ (1000,1000,1000,1000)
o: set Option Bits (0x00000000)
b: set UART baud (38400)
p: set UART parity (N)
---
S: save Configuration
R: reset to Defaults
コマンド
設定項目 | 初期値 | 備考 | |
---|---|---|---|
a | アプリケーションID | 0x67720102 | 32bit |
i | 論理デバイスID | 自動 | 子機1 -100 ,親機121 ,中継機122 |
c | 周波数チャネル | 18 | 11 -26 |
x | 再送回数と送信出力 | 03 | |
再送回数 | 0 | 1 -9 回、0 は初期値の2回、F は無効 | |
送信出力 | 3 | 0 -3 | |
t | 子機間欠1秒モードの間隔 | 1000 | 100 -10000 ms |
y | 子機間欠10秒モードの間隔 | 10 | 2 -10000 s |
f | 子機連続0.03秒モードのサイクル | 32 | 4 /8 /16 /32 回毎秒 |
z | PWMx の周波数 | 1000 | 1 -64000 Hz、カンマ区切りで個別設定 |
o | オプションビット | 0x00000000 | その他の詳細設定 |
b | UART代替ボーレート | 38400 | BPS ピンで有効化 |
p | UARTパリティ | N | 8-(N /O /E )-1 |
各コマンドの詳細を次に示します。
a
:アプリケーションID
通信を行う端末はすべて同一の値とします。論理的にネットワークを分離します。
i
:論理デバイスID
複数の子機を識別する必要がある場合に設定します。
子機の場合は1
-100
の任意の値へ、親機の場合は121
へ、中継機の場合は122
へ設定してください。
121
または122
へ設定すると、親機または中継機モードへ切り替えできます。このときMx
ピンの設定は必要ありません。超簡単!標準アプリでは、動作モードによって論理デバイスIDの初期値が異なります。
c
:周波数チャネル
通信を行う端末はすべて同一の値とします。物理的にネットワークを分離します。
x
:送信出力と再送回数
電波の送信出力と、パケットを追加で送信する回数を指定します。
t
:子機間欠1秒モードの間隔
子機間欠1秒モードの間欠時間を1秒から他の値へ上書きします。単位はミリ秒です。
0
を設定した場合は、タイマによる定期的な起床を無効化します。このときDIx
の立ち下がりエッジにより起床しますが、立ち上がりエッジでは起床しません。
y
:子機間欠10秒モードの間隔
子機間欠10秒モードの間欠時間を10秒から他の値へ上書きします。単位は秒です。
0
を設定した場合は、タイマによる定期的な起床を無効化します。このときDIx
の立ち下がりエッジにより起床しますが、立ち上がりエッジでは起床しません。
f
:子機連続0.03秒モードのサイクル
毎秒の送信リクエストの数を32回から4
/8
/16
回へ上書きします。再送回数は含みません。
z
:PWMx
の周波数
値を一つ指定した場合は、すべてのPWMポートの周波数を上書きします。カンマ区切りで指定した場合は、PWM1
-PWM4
に個別の値を上書きできます。
o
:オプションビット
32bit の数値を指定します。各ビットに紐付いた設定を有効化できます。
対象ビット | 設定項目 | 初期 | 送信 | 受信 | 連続 | 間欠 |
---|---|---|---|---|---|---|
0x00000001 | 低レイテンシモード | 0️⃣ | ✅ | ✅ | ✅ | |
0x00000002 | 定期送信の無効化 | 0️⃣ | ✅ | ✅ | ||
0x00000004 | 定期送信とUART出力の無効化 | 0️⃣ | ✅ | ✅ | ||
0x00000010 | AIx の変化による送信の無効化 | 0️⃣ | ✅ | ✅ | ||
0x00000020 | AIx の値の無効化 | 0️⃣ | ✅ | ✅ | ✅ | |
0x00000040 | PWMx の計算式を変更 | 0️⃣ | ✅ | ✅ | ✅ | |
0x00000100 | ボタン押下時のみ送信 | 0️⃣ | ✅ | ✅ | ✅ | |
0x00000800 | DIx の内部プルアップを停止 | 0️⃣ | ✅ | ✅ | ✅ | |
0x00008000 | 子機へ中継機能を付与 | 0️⃣ | ✅ | ✅ | ✅ | |
0x00001000 | 子機中継時の最大中継段数を2とする | 0️⃣ | ✅ | ✅ | ✅ | |
0x00002000 | 子機中継時の最大中継段数を3とする | 0️⃣ | ✅ | ✅ | ✅ | |
0x00010000 | PWMx の波形を反転 | 0️⃣ | ✅ | ✅ | ||
0x00020000 | 起動後PWMx を落とす | 0️⃣ | ✅ | ✅ | ||
0x00080000 | 代替ポート割り当て | 0️⃣ | ✅ | ✅ | ✅ | ✅ |
0x00100000 | 起動後2秒間DOx を落とす | 0️⃣ | ✅ | ✅ | ||
0x00400000 | DOx の出力を反転 | 0️⃣ | ✅ | ✅ | ✅ | |
0x00800000 | DOx の内部プルアップを停止 | 0️⃣ | ✅ | ✅ | ✅ |
b
:UART代替ボーレート
BPS
ピンをGND
へ接続して起動した場合に選択される代替ボーレートを38400
bpsから上書きします。
値は9600
/19200
/38400
/57600
/115200
/230400
から選択できます。他の値を指定すると、誤差が生じる可能性があります。
BPS
ピンを開放して起動した場合、この設定は適用されません。115200
bpsに固定されます。
ボーレート変更によってインタラクティブモードが使用できない事態を防ぐための仕様です。
p
:UARTパリティ
N
はパリティ無し、O
は奇数、E
:は偶数を示します。
データビットは8、ストップビットは1で固定されます。ハードウェアフローは設定できません。
オプションビットの詳細
オプションビットの値の各ビットに紐付いた設定を解説します。
00000001
:低レイテンシモード
低レイテンシモードは、DIx
の変化を検知してから速やかに送信を行うことで、受信側の遅延を短縮します。
低レイテンシモードの動作
初期状態ではDIx
がDOx
へ反映されるまでに30-70ms程度の遅延が生じます。低レイテンシモードでは、チャタリングや無線パケットの干渉を避けるための処理を簡略化することで、遅延を3-10ms程度に短縮します。
- 立ち下がりエッジの検出には割り込みを利用します
- 検出後、約100msの間は新たな検出を行いません
- 立ち上がりエッジの検出には定期的な判定を利用します
- 1msおきに5回連続でHighである場合に送信します
- (初期状態では4msおきに5回連続でHighである場合に送信します)
- 検出時は送信および再送の遅延を設定しません。直ちに無線パケットを送信します
- 代表的な遅延は、
DIx
の立ち下がりの場合に約3-5ms、立ち上がりの場合に約10msです - 実際の遅延は送受信の失敗などを理由に変化します
- 間欠モードにおいても、本体の起床から送信までの時間を短縮します
00000002
:定期送信の無効化
連続モードにおける1秒おきの定期送信を無効化します。
00000004
:定期送信とUART出力の無効化
子機:連続モードにおける1秒おきの定期送信を無効化するほか、受信データのUART出力を停止します。
00000010
:AIx
の変化による送信の無効化
子機:連続モードにおいて、AIx
の入力が変化した際の送信を無効化します。
開放されたAIx
ポートは不定の値を報告するため、正気状態でアナログ入力を利用しない場合はVCC
へ接続する必要があります。このオプションを設定すると、VCC
への接続を省略できます。
00000020
:AIx
の値の無効化
ADCの計測値を使用せず、未使用ポート(0xFFFF
)扱いとしてパケットを送信します
00000040
:PWMx
の計算式を変更
初期状態ではボリューム用に調節した出力を PWMx
へ適用します。
このオプションはこれを無効化し、1.8V 以下の入力に対してフルスケールの出力を行います。
デューティ比の計算式
デューティ比 \(duty\)は、入力電圧\(V_{input}\)と電源電圧\(V_{cc}\)を使って、(1) のように表すことができます。
このオプションを有効化すると、代わりに (2) を適用します。
なお、2.0V 以上の入力は未使用扱いとなります。
00000100
:ボタン押下時のみ送信
DIx
の入力が Low であるときにパケットを連続送信します。
例えば、モータを遠隔制御する際に利用します。リモコンのボタンを押している間にモータを回転させ、電波が途切れた場合に停止させることができます。
連続送信の動作
DIx
のいずれかが Low のときは、1秒につき32回送信しますDIx
のすべてが High へ遷移してから1秒間は引き続き32回送信しますDOx
のいずれかが Low へ遷移してから0.5秒間パケットを受信しなかった場合は、DOx
をすべて High へ戻します。PWMx
は保持します
00000800
:DIx
の内部プルアップを停止
DIx
の内部プルアップ(約50kΩ)をすべて停止します。
00008000
:子機へ中継機能を付与
子機:連続モードにおいて中継機能を付与します。最大中継段数は1です。
00001000
:子機中継時の最大中継段数を2とする
00008000
:子機へ中継機能を付与の設定時に、最大中継段数を2へ変更します。
00002000
:子機中継時の最大中継段数を3とする
00008000
:子機へ中継機能を付与の設定時に、最大中継段数を3へ変更します。
00010000
:PWMx
の波形を反転
PWMx
の出力波形を反転します。
AIx
へ最大値を入力すると PWMx
は Low となります。
00020000
:起動後PWMx
を落とす
起動後またはリセット後にPWMx
の出力を Low 状態とします。
00080000
:代替ポート割り当て
代替ポート割り当てを有効化します。
PWM2
/PWM3
へトランジスタ等を接続すると、動作が不安定となる場合があります(詳細)そうした場合に利用してください。
代替ポート割り当ての内容
PWMx
の割り当て変更DI3
→PWM1
DI1
→PWM2
DI2
→PWM3
BPS
→PWM4
DIx
の割り当て変更PWM1
→DI1
PWM4
→DI2
SDA
→DI3
DI4
→DI4
(変更なし)
BPS
の割り当て変更SCL
→BPS
SCL
/SDA
を無効化SCL
:なしSDA
:なし
00100000
:起動後2秒間DOx
を落とす
起動後またはリセット後にDOx
を2秒間 Low 状態とします。
DOx
へ接続した LED を起動時に点灯させることができます。
00400000
:DOx
の出力を反転
DOx
の出力を反転します。
初期状態とは異なり、片方の DI が Low レベルになると、もう片方の DO も Low レベルとなります。
00800000
:DOx
の内部プルアップを停止
DOx
の内部プルアップ(約50kΩ)をすべて停止します。
1.3.2 - 親機・中継機アプリ マニュアル
1.3.2.1 - 親機・中継機アプリ マニュアル
資料の取り扱いについてをご参照ください。
お気付きの点がありましたら、当サポート窓口にご連絡ください。
機能
TWELITE APPSとactの全てのデータパケットを処理することができ、共通の親機または中継機として使用できます。
- 超簡単!標準アプリやパル専用アプリなどの TWELITE APPS や act のデータを1つの MONOSTICK で収集可能
- 16チャンネルで複数システムを個別に運用可能
- アプリケーションIDの設定することで、同一チャネルに複数システムを混在可能
- 中継機能で通信範囲拡大
1.3.2.1.1 - 親機・中継機アプリの動作モード
親機モードと中継機モードの2つのモードがあります。
1.3.2.1.1.1 - 親機・中継機アプリの親機モード
子機から送信されたデータを受信し、シリアルポートから出力します。また、シリアルポートへ入力されたコマンドを子機へ送信します。
1.3.2.1.1.1.1 - 親機・中継機アプリの受信メッセージ
子機から送信されたデータを受信し、既定の書式でシリアルポートから出力します。
1.3.2.1.1.1.1.1 - 超簡単!標準アプリからの出力(親機・中継機アプリ)
0x81
:相手端末からの状態通知
受信した入力信号の状態を出力します。
データ形式
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信元の論理デバイスID | |
1 | uint8 | コマンド番号 | 0x81 のみ |
2 | uint8 | パケット識別子 | アプリケーションIDより生成 |
3 | uint8 | プロトコルバージョン | 0x01 のみ |
4 | uint8 | LQI | 0 -255 |
5 | uint32 | 送信元のシリアルID | 0x8??????? |
9 | uint8 | 送信先の論理デバイスID | |
10 | uint16 | タイムスタンプ | 1秒で64カウント |
12 | uint8 | 中継回数 | |
13 | uint16 | 電源電圧 | 単位はmV |
15 | int8 | - | (未使用) |
16 | uint8 | デジタル信号 | LSBから順にDIx へ対応、0 がHighMSBが 1 なら定期送信 |
17 | uint8 | デジタル信号マスク | LSBから順にDIx へ対応、1 が有効 |
18 | uint8 | AI1 の変換値 | アナログ信号の計算を参照、0xFF で未使用 |
19 | uint8 | AI2 の変換値 | アナログ信号の計算を参照、0xFF で未使用 |
20 | uint8 | AI3 の変換値 | アナログ信号の計算を参照、0xFF で未使用 |
21 | uint8 | AI4 の変換値 | アナログ信号の計算を参照、0xFF で未使用 |
22 | uint8 | AIx の補正値 | LSBから2ビットずつ順にAIx へ対応 |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
アナログ信号の計算
AIx
の入力電圧 \(V\)は、受信した変換値\(e_{r}\)および補正値\(e_{fr}\)を使って次のように表すことができます。
単位は mV
出力データの例
:78811501C98201015A000391000C2E00810301FFFFFFFFFB
# | データ | 内容 | 値 | |
---|---|---|---|---|
: | char | ヘッダ | : | |
78 | 0 | uint8 | 送信元の論理デバイスID | 0x78 |
81 | 1 | uint8 | コマンド番号 | 0x81 |
15 | 2 | uint8 | パケット識別子 | 0x15 |
01 | 3 | uint8 | プロトコルバージョン | 0x01 |
C9 | 4 | uint8 | LQI | 201/255 |
8201015A | 5 | uint32 | 送信元のシリアルID | 0x201015A |
00 | 9 | uint8 | 送信先の論理デバイスID | 0x00 |
0391 | 10 | uint16 | タイムスタンプ | 約14.27 秒 |
00 | 12 | uint8 | 中継回数 | 0 |
0C2E | 13 | uint16 | 電源電圧 | 3118 mV |
00 | 15 | int8 | - | |
81 | 16 | uint8 | デジタル信号 | DI1 L DI2 H DI3 H DI4 H (定期送信) |
03 | 17 | uint8 | デジタル信号マスク | DI1 DI2 |
01 | 18 | uint8 | AI1 の変換値 | 16 mV |
FF | 19 | uint8 | AI2 の変換値 | 未使用 |
FF | 20 | uint8 | AI3 の変換値 | 未使用 |
FF | 21 | uint8 | AI4 の変換値 | 未使用 |
FF | 22 | uint8 | AIx の補正値 | AI1 0x03 |
FB | uint8 | チェックサム | 0xFB | |
char | フッタ | \r | ||
char | フッタ | \n |
データの判別条件
親機・中継機アプリは、さまざまな種類の子機からデータを受信することができます。
出力されたデータが超簡単!標準アプリのものであるかを確認するには、次の箇所を参照してください。
# | データ | 項目 | 条件 |
---|---|---|---|
1 | uint8 | コマンド番号 | 0x81 であること |
3 | uint8 | プロトコルバージョン | 0x01 であること |
5 | uint32 | 送信元のシリアルID | MSBが1であること(0x8??????? ) |
- | - | ペイロードのサイズ | 23バイトであること(: とチェックサムの間) |
パーサの実装例
- Python
- Arduino (C++)
0x01
:任意のデータの受信
データ形式
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信元の論理デバイスID | 親機0x00 ,子機0x01 -0x64 ,未設定子機0x78 |
1 | uint8 | コマンド番号 | 0x01 のみ |
2 | [uint8] | 任意のデータ | 長さ\(N\)のバイト列 |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
0x01
であった場合と同様です。1.3.2.1.1.1.1.2 - リモコンアプリからの出力(親機・中継機アプリ)
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 がLo |
004F | 15 | uint16 | デジタル信号マスク | I7 ,I1 -I4 が有効 |
0040 | 17 | uint16 | デジタル信号フラグ | I7 は割り込みにより変化 |
00 | 19 | uint8 | 未使用 | |
49 | uint8 | チェックサム | 0x49 | |
char | フッタ | \r | ||
char | フッタ | \n |
データの判別条件
親機・中継機アプリは、さまざまな種類の子機からデータを受信することができます。
出力されたデータがリモコンアプリのものであるかを確認するには、次の箇所を参照してください。
# | データ | 項目 | 条件 |
---|---|---|---|
1 | uint8 | コマンド番号 | 0x81 であること |
3 | uint8 | プロトコルバージョン | 0x02 であること |
5 | uint32 | 送信元のシリアルID | MSBが1であること(0x8??????? ) |
- | - | ペイロードのサイズ | 20バイトであること(: とチェックサムの間) |
パーサの実装例
1.3.2.1.1.1.1.3 - シリアル通信アプリからの出力(親機・中継機アプリ)
本アプリでは、書式モードの電文のみ受信できます。
透過モードやチャットモードのパケットを受信した場合の出力は未定義ですから、ご注意ください。
書式モード:簡易形式
データ形式
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信元の論理デバイスID | 親機0x00 ,子機0x01 -0x64 ,未設定子機0x78 |
1 | uint8 | コマンド番号 | 送信側で指定した0x80 未満の値 |
2 | [uint8] | 任意のデータ | 長さ\(N\)のバイト列 |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
出力データの例
:780100112233AABBCCDD13
# | データ | 内容 | 値 | |
---|---|---|---|---|
: | char | ヘッダ | : | |
78 | 0 | uint8 | 送信元の論理デバイスID | ID未設定子機 |
01 | 1 | uint8 | コマンド番号 | 0x01 |
00112233AABBCCDD | 2 | [uint8] | 任意のデータ | そのまま |
13 | uint8 | チェックサム | 0x13 | |
char | フッタ | \r | ||
char | フッタ | \n |
データの判別条件
親機・中継機アプリは、さまざまな種類の子機からデータを受信することができます。
出力されたデータがシリアル通信アプリ(書式モード:簡易形式)のものであるかを確認するには、次の箇所を参照してください。
# | データ | 項目 | 条件 |
---|---|---|---|
0 | uint8 | 送信元の論理デバイスID | 0x64 以下もしくは0x78 であること |
1 | uint8 | コマンド番号 | 0x80 未満であること |
- | - | ペイロードのサイズ | 3バイト以上82バイト以下であること |
パーサの実装例
- Python
- Arduino (C++)
書式モード:拡張書式
データ形式
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信元の論理デバイスID | 親機0x00 ,子機0x01 -0x64 ,未設定子機0x78 |
1 | uint8 | コマンド番号 | 0xA0 のみ |
2 | uint8 | 応答ID | 送信側で指定した値 |
3 | uint32 | 送信元の拡張アドレス | シリアルIDの先頭へ0x8 を加えた値 |
7 | uint32 | 送信先の拡張アドレス | 論理デバイスID使用時は0xFFFFFFFF |
11 | uint8 | LQI | 受信時の電波通信品質 |
12 | uint16 | 続くバイト列の長さ | バイト数\(M\)を表す |
14 | [uint8] | 任意のデータ | 長さ\(M\)のバイト列 |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
出力データの例
:78A0028201015AFFFFFFFFA8000700112233AABBCCC6
# | データ | 内容 | 備考 | |
---|---|---|---|---|
: | char | ヘッダ | : | |
78 | 0 | uint8 | 送信元の論理デバイスID | ID未設定子機 |
A0 | 1 | uint8 | コマンド番号 | 0xA0 |
02 | 2 | uint8 | 応答ID | 0x02 |
8201015A | 3 | uint32 | 送信元の拡張アドレス | 0x201015A |
FFFFFFFF | 7 | uint32 | 送信先の拡張アドレス | 論理デバイスID指定 |
A8 | 11 | uint8 | LQI | 168/255 |
0007 | 12 | uint16 | 続くバイト列の長さ | 7 バイト |
00112233AABBCC | 14 | [uint8] | 任意のデータ | そのまま |
C6 | uint8 | チェックサム | 0xC6 | |
char | フッタ | |||
char | フッタ |
データの判別条件
親機・中継機アプリは、さまざまな種類の子機からデータを受信することができます。
出力されたデータがシリアル通信アプリ(書式モード:拡張形式)のものであるかを確認するには、次の箇所を参照してください。
# | データ | 項目 | 条件 |
---|---|---|---|
0 | uint8 | 送信元の論理デバイスID | 0x64 以下もしくは0x78 であること |
1 | uint8 | コマンド番号 | 0xA0 であること |
2 | uint8 | 応答ID | 0x80 未満であること |
3 | uint32 | 送信元の拡張アドレス | MSBが1であること(0x8??????? ) |
12 | uint16 | 続くバイト列の長さ | ペイロードのサイズ - 14 バイトであること |
パーサの実装例
1.3.2.1.1.1.1.4 - パル/キュー/アリアアプリからの出力(親機・中継機アプリ)
1.3.2.1.1.1.1.4.1 - パルアプリからの出力(親機・中継機アプリ)
全般
パルアプリから受信したデータは、センサ種別とその値からなるセンサーデータの羅列によって表現します。
以降では、製品の種別に応じた具体的な例を取り上げます。
開閉センサーパル
データ形式
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint32 | 中継機のシリアルID | 中継なしの場合80000000 |
4 | uint8 | LQI | 0 -255 |
5 | uint16 | 続き番号 | |
7 | uint32 | 送信元のシリアルID | 0x8??????? |
11 | uint8 | 送信元の論理デバイスID | |
12 | uint8 | センサー種別 | 0x80 のみ |
13 | uint8 | PAL基板バージョンとPAL基板ID | 0x81 のみ |
14 | uint8 | センサーデータの数 | 3 のみ |
センサーデータ1 | |||
15 | uint8 | 情報ビット | 0x11 のみ |
16 | uint8 | データソース | 0x30 のみ |
17 | uint8 | 拡張バイト | 0x08 のみ |
18 | uint8 | データ長 | 2 のみ |
19 | uint16 | データ | 電源電圧(mV) |
センサーデータ2 | |||
21 | uint8 | 情報ビット | 0x11 のみ |
22 | uint8 | データソース | 0x30 のみ |
23 | uint8 | 拡張バイト | 0x01 のみ |
24 | uint8 | データ長 | 2 のみ |
25 | uint16 | データ | ADC1の電圧(mV) |
センサーデータ3 | |||
27 | uint8 | 情報ビット | 0x00 のみ |
28 | uint8 | データソース | 0x00 のみ |
29 | uint8 | 拡張バイト | 0x00 のみ |
30 | uint8 | データ長 | 1 のみ |
31 | uint8 | データ | 磁気データ |
センサーデータの末端 | |||
32 | uint8 | チェックサム1 | 直前までのCRC8 |
uint8 | チェックサム2 | チェックサム1までのLRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
出力データの例
:80000000A8001C82012B1E01808103113008020D0C1130010203E40000000101EC6E
# | データ | 内容 | 値 | |
---|---|---|---|---|
: | char | ヘッダ | : | |
80000000 | 0 | uint32 | 中継機のシリアルID | 中継なし |
A8 | 4 | uint8 | LQI | 168 /255 |
001C | 5 | uint16 | 続き番号 | 28 |
82012B1E | 7 | uint32 | 送信元のシリアルID | 0x2012B1E |
01 | 11 | uint8 | 送信元の論理デバイスID | 0x01 |
80 | 12 | uint8 | センサー種別 | |
81 | 13 | uint8 | PAL基板バージョンとPAL基板ID | 開閉パルV1 |
03 | 14 | uint8 | センサーデータの数 | 3 つ |
センサーデータ1 | ||||
11 | 15 | uint8 | 情報ビット | 拡張バイトありuint16 |
30 | 16 | uint8 | データソース | 電圧 |
08 | 17 | uint8 | 拡張バイト | 電源 |
02 | 18 | uint8 | データ長 | 2 バイト |
0D0C | 19 | uint16 | データ | 3340 mV |
センサーデータ2 | ||||
11 | 21 | uint8 | 情報ビット | 拡張バイトありuint16 |
30 | 22 | uint8 | データソース | 電圧 |
01 | 23 | uint8 | 拡張バイト | ADC1 |
02 | 24 | uint8 | データ長 | 2 バイト |
03E4 | 25 | uint16 | データ | 996 mV |
センサーデータ3 | ||||
00 | 27 | uint8 | 情報ビット | 拡張バイトなしuint8 |
00 | 28 | uint8 | データソース | 磁気 |
00 | 29 | uint8 | 拡張バイト | なし |
01 | 30 | uint8 | データ長 | 1 バイト |
01 | 31 | uint8 | データ | N極が近づいた |
センサーデータの末端 | ||||
EC | 32 | uint8 | チェックサム1 | 0xEC |
6E | uint8 | チェックサム2 | 0x6E | |
char | フッタ | '\r' | ||
char | フッタ | '\n' |
データの判別条件
親機・中継機アプリは、さまざまな種類の子機からデータを受信することができます。
出力されたデータがパルアプリ(開閉センサーパル)のものであるかを確認するには、次の箇所を参照してください。
# | データ | 項目 | 条件 |
---|---|---|---|
0 | uint32 | 中継機のシリアルID | MSBが1であること |
7 | uint32 | 送信元のシリアルID | MSBが1であること |
12 | uint8 | センサー種別 | 0x80 であること |
13 | uint8 | PAL基板バージョンとPAL基板ID | 0x81 であること |
- | - | ペイロードのサイズ | 33バイトであること |
パーサの実装例
- Python
- Arduino (C++)
環境センサーパル
データ形式
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint32 | 中継機のシリアルID | 中継なしの場合80000000 |
4 | uint8 | LQI | 0 -255 |
5 | uint16 | 続き番号 | |
7 | uint32 | 送信元のシリアルID | 0x8??????? |
11 | uint8 | 送信元の論理デバイスID | |
12 | uint8 | センサー種別 | 0x80 のみ |
13 | uint8 | PAL基板バージョンとPAL基板ID | 0x82 のみ |
14 | uint8 | センサーデータの数 | 5 のみ |
センサーデータ1 | |||
15 | uint8 | 情報ビット | 0x11 のみ |
16 | uint8 | データソース | 0x30 のみ |
17 | uint8 | 拡張バイト | 0x08 のみ |
18 | uint8 | データ長 | 2 のみ |
19 | uint16 | データ | 電源電圧(mV) |
センサーデータ2 | |||
21 | uint8 | 情報ビット | 0x11 のみ |
22 | uint8 | データソース | 0x30 のみ |
23 | uint8 | 拡張バイト | 0x01 のみ |
24 | uint8 | データ長 | 2 のみ |
25 | uint16 | データ | ADC1の電圧(mV) |
センサーデータ3 | |||
27 | uint8 | 情報ビット | 0x05 のみ |
28 | uint8 | データソース | 0x01 のみ |
29 | uint8 | 拡張バイト | 0x00 のみ |
30 | uint8 | データ長 | 2 のみ |
31 | int16 | データ | 温度データ |
センサーデータ4 | |||
33 | uint8 | 情報ビット | 0x01 のみ |
34 | uint8 | データソース | 0x02 のみ |
35 | uint8 | 拡張バイト | 0x00 のみ |
36 | uint8 | データ長 | 2 のみ |
37 | uint16 | データ | 湿度データ |
センサーデータ5 | |||
39 | uint8 | 情報ビット | 0x02 のみ |
40 | uint8 | データソース | 0x03 のみ |
41 | uint8 | 拡張バイト | 0x00 のみ |
42 | uint8 | データ長 | 4 のみ |
43 | uint32 | データ | 照度データ |
センサーデータの末端 | |||
47 | uint8 | チェックサム1 | 直前までのCRC8 |
uint8 | チェックサム2 | チェックサム1までのLRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
出力データの例
:8000000084811F810EFF6D04808205113008020AEB11300102035A0501000209E3010200020E3A02030004000001BE6C00
# | データ | 内容 | 値 | |
---|---|---|---|---|
: | char | ヘッダ | : | |
80000000 | 0 | uint32 | 中継機のシリアルID | 中継なし |
84 | 4 | uint8 | LQI | 132 /255 |
811F | 5 | uint16 | 続き番号 | 33055 |
810EFF6D | 7 | uint32 | 送信元のシリアルID | 0x10EFF6D |
04 | 11 | uint8 | 送信元の論理デバイスID | 0x04 |
80 | 12 | uint8 | センサー種別 | |
82 | 13 | uint8 | PAL基板バージョンとPAL基板ID | 環境パルV1 |
05 | 14 | uint8 | センサーデータの数 | 5 つ |
センサーデータ1 | ||||
11 | 15 | uint8 | 情報ビット | 拡張バイトありuint16 |
30 | 16 | uint8 | データソース | 電圧 |
08 | 17 | uint8 | 拡張バイト | 電源 |
02 | 18 | uint8 | データ長 | 2 バイト |
0AEB | 19 | uint16 | データ | 2795 mV |
センサーデータ2 | ||||
11 | 21 | uint8 | 情報ビット | 拡張バイトありuint16 |
30 | 22 | uint8 | データソース | 電圧 |
01 | 23 | uint8 | 拡張バイト | ADC1 |
02 | 24 | uint8 | データ長 | 2 バイト |
035A | 25 | uint16 | データ | 858 mV |
センサーデータ3 | ||||
05 | 27 | uint8 | 情報ビット | 拡張バイトなしint16 |
01 | 28 | uint8 | データソース | 温度 |
00 | 29 | uint8 | 拡張バイト | なし |
02 | 30 | uint8 | データ長 | 2 バイト |
09E3 | 31 | int16 | データ | 25.31°C |
センサーデータ4 | ||||
01 | 33 | uint8 | 情報ビット | 拡張バイトなしuint16 |
02 | 34 | uint8 | データソース | 湿度 |
00 | 35 | uint8 | 拡張バイト | なし |
02 | 36 | uint8 | データ長 | 2 バイト |
0E3A | 37 | uint16 | データ | 36.42% |
センサーデータ5 | ||||
02 | 39 | uint8 | 情報ビット | 拡張バイトなしuint32 |
03 | 40 | uint8 | データソース | 照度 |
00 | 41 | uint8 | 拡張バイト | なし |
04 | 42 | uint8 | データ長 | 4 バイト |
000001BE | 43 | uint32 | データ | 446 lx |
センサーデータの末端 | ||||
6C | 47 | uint8 | チェックサム1 | 0x6C |
00 | uint8 | チェックサム2 | 0x00 | |
char | フッタ | '\r' | ||
char | フッタ | '\n' |
データの判別条件
親機・中継機アプリは、さまざまな種類の子機からデータを受信することができます。
出力されたデータがパルアプリ(環境センサーパル)のものであるかを確認するには、次の箇所を参照してください。
# | データ | 項目 | 条件 |
---|---|---|---|
0 | uint32 | 中継機のシリアルID | MSBが1であること |
7 | uint32 | 送信元のシリアルID | MSBが1であること |
12 | uint8 | センサー種別 | 0x80 であること |
13 | uint8 | PAL基板バージョンとPAL基板ID | 0x82 であること |
- | - | ペイロードのサイズ | 48バイトであること |
パーサの実装例
- Python
- Arduino (C++)
動作センサーパル
データ形式
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint32 | 中継機のシリアルID | 中継なしの場合80000000 |
4 | uint8 | LQI | 0 -255 |
5 | uint16 | 続き番号 | |
7 | uint32 | 送信元のシリアルID | 0x8??????? |
11 | uint8 | 送信元の論理デバイスID | |
12 | uint8 | センサー種別 | 0x80 のみ |
13 | uint8 | PAL基板バージョンとPAL基板ID | 0x83 のみ |
14 | uint8 | センサーデータの数 | 18 のみ |
センサーデータ1 | |||
15 | uint8 | 情報ビット | 0x11 のみ |
16 | uint8 | データソース | 0x30 のみ |
17 | uint8 | 拡張バイト | 0x08 のみ |
18 | uint8 | データ長 | 2 のみ |
19 | uint16 | データ | 電源電圧(mV) |
センサーデータ2 | |||
21 | uint8 | 情報ビット | 0x11 のみ |
22 | uint8 | データソース | 0x30 のみ |
23 | uint8 | 拡張バイト | 0x01 のみ |
24 | uint8 | データ長 | 2 のみ |
25 | uint16 | データ | ADC1の電圧(mV) |
センサーデータ3 | |||
27 | uint8 | 情報ビット | 0x15 のみ |
28 | uint8 | データソース | 0x04 のみ |
29 | uint8 | 拡張バイト | 0x?0 周波数とサンプル番号 |
30 | uint8 | データ長 | 6 のみ |
31 | int16 | データ | 加速度データ |
センサーデータ4 | |||
37 | uint8 | 情報ビット | 0x15 のみ |
38 | uint8 | データソース | 0x04 のみ |
39 | uint8 | 拡張バイト | 0x?1 周波数とサンプル番号 |
40 | uint8 | データ長 | 6 のみ |
41 | int16 | データ | 加速度データ |
センサーデータ5 | |||
<省略> | |||
センサデータ18 | |||
177 | uint8 | 情報ビット | 0x15 のみ |
178 | uint8 | データソース | 0x04 のみ |
179 | uint8 | 拡張バイト | 0x?F 周波数とサンプル番号 |
180 | uint8 | データ長 | 6 のみ |
181 | int16 | データ | 加速度データ |
センサーデータの末端 | |||
187 | uint8 | チェックサム1 | 直前までのCRC8 |
uint8 | チェックサム2 | チェックサム1までのLRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
出力データの例
:80000000BA002382011CEF01808312113008020D0211300102055C1504400600100010045015044106000800100430150442060000001004381504430600080018043015044406000000180458150445060000002004381504460600080018042815044706FFE80010042015044806FFF00010043815044906FFE80018043015044A06FFF80018044015044B06FFF80018041815044C0600000010042015044D0600000028045015044E0600000008043815044F0600000018043828A5
# | データ | 内容 | 値 | |
---|---|---|---|---|
: | char | ヘッダ | : | |
80000000 | 0 | uint32 | 中継機のシリアルID | 中継なし |
BA | 4 | uint8 | LQI | 186 /255 |
0023 | 5 | uint16 | 続き番号 | 35 |
82011CEF | 7 | uint32 | 送信元のシリアルID | 0x2011CEF |
01 | 11 | uint8 | 送信元の論理デバイスID | 0x01 |
80 | 12 | uint8 | センサー種別 | |
83 | 13 | uint8 | PAL基板バージョンとPAL基板ID | 動作パルV1 |
12 | 14 | uint8 | センサーデータの数 | 18 個 |
センサーデータ1 | ||||
11 | 15 | uint8 | 情報ビット | 拡張バイトありuint16 |
30 | 16 | uint8 | データソース | 電圧 |
08 | 17 | uint8 | 拡張バイト | 電源 |
02 | 18 | uint8 | データ長 | 2 バイト |
0D02 | 19 | uint16 | データ | 3330 mV |
センサーデータ2 | ||||
11 | 21 | uint8 | 情報ビット | 拡張バイトありuint16 |
30 | 22 | uint8 | データソース | 電圧 |
01 | 23 | uint8 | 拡張バイト | ADC1 |
02 | 24 | uint8 | データ長 | 2 バイト |
055C | 25 | uint16 | データ | 1372 mV |
センサーデータ3 | ||||
15 | 27 | uint8 | 情報ビット | 拡張バイトありint16 |
04 | 28 | uint8 | データソース | 加速度 |
40 | 29 | uint8 | 拡張バイト | 100Hz, 0番サンプル |
06 | 30 | uint8 | データ長 | 6 バイト |
001000100450 | 31 | int16 | データ | X16 mG/Y16 mG/Z1104 mG |
センサーデータ4 | ||||
15 | 37 | uint8 | 情報ビット | 拡張バイトありint16 |
04 | 38 | uint8 | データソース | 加速度 |
41 | 39 | uint8 | 拡張バイト | 100Hz, 1番サンプル |
06 | 40 | uint8 | データ長 | 6 バイト |
000800100430 | 41 | uint16 | データ | X8 mG/Y16 mG/Z1072 mG |
センサーデータ5 | ||||
<省略> | ||||
センサデータ15 | ||||
15 | 177 | uint8 | 情報ビット | 拡張バイトありint16 |
04 | 178 | uint8 | データソース | 加速度 |
4F | 179 | uint8 | 拡張バイト | 100Hz, 15番サンプル |
06 | 180 | uint8 | データ長 | 6 バイト |
000000180438 | 181 | uint32 | データ | X0 mG/Y24 mG/Z1080 mG |
センサーデータの末端 | ||||
28 | 187 | uint8 | チェックサム1 | 0x28 |
A5 | uint8 | チェックサム2 | 0xA5 | |
char | フッタ | '\r' | ||
char | フッタ | '\n' |
データの判別条件
親機・中継機アプリは、さまざまな種類の子機からデータを受信することができます。
出力されたデータがパルアプリ(動作センサーパル)のものであるかを確認するには、次の箇所を参照してください。
# | データ | 項目 | 条件 |
---|---|---|---|
0 | uint32 | 中継機のシリアルID | MSBが1であること |
7 | uint32 | 送信元のシリアルID | MSBが1であること |
12 | uint8 | センサー種別 | 0x80 であること |
13 | uint8 | PAL基板バージョンとPAL基板ID | 0x83 であること |
- | - | ペイロードのサイズ | 188バイトであること |
パーサの実装例
- Python
- Arduino (C++)
通知パル
データ形式
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint32 | 中継機のシリアルID | 中継なしの場合80000000 |
4 | uint8 | LQI | 0 -255 |
5 | uint16 | 続き番号 | |
7 | uint32 | 送信元のシリアルID | 0x8??????? |
11 | uint8 | 送信元の論理デバイスID | |
12 | uint8 | センサー種別 | 0x80 のみ |
13 | uint8 | PAL基板バージョンとPAL基板ID | 0x84 のみ |
14 | uint8 | センサーデータの数 | 3 のみ |
センサーデータ1 | |||
15 | uint8 | 情報ビット | 0x11 のみ |
16 | uint8 | データソース | 0x30 のみ |
17 | uint8 | 拡張バイト | 0x08 のみ |
18 | uint8 | データ長 | 2 のみ |
19 | uint16 | データ | 電源電圧(mV) |
センサーデータ2 | |||
21 | uint8 | 情報ビット | 0x11 のみ |
22 | uint8 | データソース | 0x30 のみ |
23 | uint8 | 拡張バイト | 0x01 のみ |
24 | uint8 | データ長 | 2 のみ |
25 | uint16 | データ | ADC1の電圧(mV) |
センサーデータ3 | |||
27 | uint8 | 情報ビット | 0x12 のみ |
28 | uint8 | データソース | 0x05 のみ |
29 | uint8 | 拡張バイト | 0x04 のみ |
30 | uint8 | データ長 | 4 のみ |
31 | uint8 | データ | 加速度イベントデータ |
32 | [uint8] | 未使用 | |
センサーデータの末端 | |||
35 | uint8 | チェックサム1 | 直前までのCRC8 |
uint8 | チェックサム2 | チェックサム1までのLRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
出力データの例
:80000000C9BBC082014C3501808403 113008020D0C 1130010203F9 1205040410000000 97C6
# | データ | 内容 | 値 | |
---|---|---|---|---|
: | char | ヘッダ | : | |
80000000 | 0 | uint32 | 中継機のシリアルID | 中継なし |
C9 | 4 | uint8 | LQI | 201 /255 |
BBC0 | 5 | uint16 | 続き番号 | 48064 |
82014C35 | 7 | uint32 | 送信元のシリアルID | 0x2014C35 |
01 | 11 | uint8 | 送信元の論理デバイスID | 0x01 |
80 | 12 | uint8 | センサー種別 | |
84 | 13 | uint8 | PAL基板バージョンとPAL基板ID | 通知パルV1 |
03 | 14 | uint8 | センサーデータの数 | 3 つ |
センサーデータ1 | ||||
11 | 15 | uint8 | 情報ビット | 拡張バイトありuint16 |
30 | 16 | uint8 | データソース | 電圧 |
08 | 17 | uint8 | 拡張バイト | 電源 |
02 | 18 | uint8 | データ長 | 2 バイト |
0D0C | 19 | uint16 | データ | 3340 mV |
センサーデータ2 | ||||
11 | 21 | uint8 | 情報ビット | 拡張バイトありuint16 |
30 | 22 | uint8 | データソース | 電圧 |
01 | 23 | uint8 | 拡張バイト | ADC1 |
02 | 24 | uint8 | データ長 | 2 バイト |
03F9 | 25 | uint16 | データ | 1017 mV |
センサーデータ3 | ||||
12 | 27 | uint8 | 情報ビット | 拡張バイトありuint32 |
05 | 28 | uint8 | データソース | イベント |
04 | 29 | uint8 | 拡張バイト | 加速度イベント |
04 | 30 | uint8 | データ長 | 4 バイト |
10 | 31 | uint8 | データ | ムーブ |
000000 | 32 | [uint8] | ||
センサーデータの末端 | ||||
97 | 35 | uint8 | チェックサム1 | 0x97 |
C6 | uint8 | チェックサム2 | 0xC6 | |
char | フッタ | '\r' | ||
char | フッタ | '\n' |
データの判別条件
親機・中継機アプリは、さまざまな種類の子機からデータを受信することができます。
出力されたデータがパルアプリ(通知パル)のものであるかを確認するには、次の箇所を参照してください。
# | データ | 項目 | 条件 |
---|---|---|---|
0 | uint32 | 中継機のシリアルID | MSBが1であること |
7 | uint32 | 送信元のシリアルID | MSBが1であること |
12 | uint8 | センサー種別 | 0x80 であること |
13 | uint8 | PAL基板バージョンとPAL基板ID | 0x84 であること |
- | - | ペイロードのサイズ | 36バイトであること |
1.3.2.1.1.1.1.4.2 - キューアプリからの出力(親機・中継機アプリ)
TWELITE CUE モード
データ形式
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint32 | 中継機のシリアルID | 中継なしの場合80000000 |
4 | uint8 | LQI | 0 -255 |
5 | uint16 | 続き番号 | |
7 | uint32 | 送信元のシリアルID | 0x8??????? |
11 | uint8 | 送信元の論理デバイスID | |
12 | uint8 | センサー種別 | 0x80 のみ |
13 | uint8 | PAL基板バージョンとPAL基板ID | 0x05 のみ |
14 | uint8 | センサーデータの数 | 15 のみ |
センサーデータ1 | |||
15 | uint8 | 情報ビット | 0x00 のみ |
16 | uint8 | データソース | 0x34 のみ |
17 | uint8 | 拡張バイト | 0x00 のみ |
18 | uint8 | データ長 | 3 のみ |
19 | [uint8] | データ | パケットプロパティデータ |
センサーデータ2 | |||
22 | uint8 | 情報ビット | 0x12 のみ |
23 | uint8 | データソース | 0x05 のみ |
24 | uint8 | 拡張バイト | 0x35 または0x04 または0x00 |
25 | uint8 | データ長 | 4 のみ |
26 | uint32 | データ | イベントデータ |
センサーデータ3 | |||
30 | uint8 | 情報ビット | 0x11 のみ |
31 | uint8 | データソース | 0x30 のみ |
32 | uint8 | 拡張バイト | 0x08 のみ |
33 | uint8 | データ長 | 2 のみ |
34 | uint16 | データ | 電源電圧(mV) |
センサーデータ4 | |||
36 | uint8 | 情報ビット | 0x11 のみ |
37 | uint8 | データソース | 0x30 のみ |
38 | uint8 | 拡張バイト | 0x01 のみ |
39 | uint8 | データ長 | 2 のみ |
40 | uint16 | データ | ADC1の電圧(mV) |
センサーデータ5 | |||
42 | uint8 | 情報ビット | 0x00 のみ |
43 | uint8 | データソース | 0x00 のみ |
44 | uint8 | 拡張バイト | 0x00 のみ |
45 | uint8 | データ長 | 1 のみ |
46 | uint8 | データ | 磁気データ |
センサーデータ6 | |||
47 | uint8 | 情報ビット | 0x15 のみ |
48 | uint8 | データソース | 0x04 のみ |
49 | uint8 | 拡張バイト | 0x?0 周波数とサンプル番号 |
50 | uint8 | データ長 | 6 のみ |
51 | [int16] | データ | 加速度データ |
センサーデータ7 | |||
57 | uint8 | 情報ビット | 0x15 のみ |
58 | uint8 | データソース | 0x04 のみ |
59 | uint8 | 拡張バイト | 0x?1 周波数とサンプル番号 |
60 | uint8 | データ長 | 6 のみ |
61 | [int16] | データ | 加速度データ |
センサーデータ8 | |||
<省略> | |||
センサーデータ15 | |||
137 | uint8 | 情報ビット | 0x15 のみ |
138 | uint8 | データソース | 0x04 のみ |
139 | uint8 | 拡張バイト | 0x?9 周波数とサンプル番号 |
140 | uint8 | データ長 | 6 のみ |
141 | int16 | データ | 加速度データ |
センサーデータの末端 | |||
147 | uint8 | チェックサム1 | 直前までのCRC8 |
uint8 | チェックサム2 | チェックサム1までのLRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
出力データの例
:80000000CF7F7382019E3B0180050F003400038135001205040406000000113008020B8611300102042E000000018015044006FFF00010FC1815044106FFF00018FC1815044206FFF00010FC0015044306FFF80000FC1015044406FFF00010FC1815044506FFE00018FBF815044606FFE80000FC0015044706FFE80010FBF815044806FFE80010FC0815044906FFE80010FC080C0E
# | データ | 内容 | 値 | |
---|---|---|---|---|
: | char | ヘッダ | : | |
80000000 | 0 | uint32 | 中継機のシリアルID | 中継なし |
CF | 4 | uint8 | LQI | 207 /255 |
7F73 | 5 | uint16 | 続き番号 | 32627 |
82019E3B | 7 | uint32 | 送信元のシリアルID | 0x2019E3B |
01 | 11 | uint8 | 送信元の論理デバイスID | 0x01 |
80 | 12 | uint8 | センサー種別 | |
05 | 13 | uint8 | PAL基板バージョンとPAL基板ID | TWELITE CUE |
0F | 14 | uint8 | センサーデータの数 | 15 個 |
センサーデータ1 | ||||
00 | 15 | uint8 | 情報ビット | 拡張バイトなしuint8 |
34 | 16 | uint8 | データソース | パケットプロパティ |
00 | 17 | uint8 | 拡張バイト | なし |
03 | 18 | uint8 | データ長 | 3 バイト |
813500 | 19 | [uint8] | データ | ID129 、タイマイベント発生 |
センサーデータ2 | ||||
12 | 22 | uint8 | 情報ビット | 拡張バイトありuint32 |
05 | 23 | uint8 | データソース | イベント |
04 | 24 | uint8 | 拡張バイト | 加速度イベント |
04 | 25 | uint8 | データ長 | 4 バイト |
06000000 | 26 | uint32 | データ | サイコロ:6 |
センサーデータ3 | ||||
11 | 30 | uint8 | 情報ビット | 拡張バイトありuint16 |
30 | 31 | uint8 | データソース | 電圧 |
08 | 32 | uint8 | 拡張バイト | 電源電圧 |
02 | 33 | uint8 | データ長 | 2 バイト |
0B86 | 34 | uint16 | データ | 2950 mV |
センサーデータ4 | ||||
11 | 36 | uint8 | 情報ビット | 拡張バイトありuint16 |
30 | 37 | uint8 | データソース | 電圧 |
01 | 38 | uint8 | 拡張バイト | ADC1の電圧 |
02 | 39 | uint8 | データ長 | 2 バイト |
042E | 40 | uint16 | データ | 1070 mV |
センサーデータ5 | ||||
00 | 42 | uint8 | 情報ビット | 拡張バイトなしuint8 |
00 | 43 | uint8 | データソース | 磁気 |
00 | 44 | uint8 | 拡張バイト | なし |
01 | 45 | uint8 | データ長 | 1 バイト |
80 | 46 | uint8 | データ | 磁石なし(定期送信) |
センサーデータ6 | ||||
15 | 47 | uint8 | 情報ビット | 拡張バイトありint16 |
04 | 48 | uint8 | データソース | 加速度データ |
40 | 49 | uint8 | 拡張バイト | 100Hz, 0番サンプル |
06 | 50 | uint8 | データ長 | 6 バイト |
FFF00010FC18 | 51 | [int16] | データ | X-16 mG/Y16 mG/Z-1000 mG |
センサーデータ7 | ||||
15 | 57 | uint8 | 情報ビット | 拡張バイトありint16 |
04 | 58 | uint8 | データソース | 加速度データ |
41 | 59 | uint8 | 拡張バイト | 100Hz, 1番サンプル |
06 | 60 | uint8 | データ長 | 6 バイト |
FFF00018FC18 | 61 | [int16] | データ | X-16 mG/Y24 mG/Z-1000 mG |
センサーデータ8 | ||||
<省略> | ||||
センサーデータ15 | ||||
15 | 137 | uint8 | 情報ビット | 拡張バイトありint16 |
04 | 138 | uint8 | データソース | 加速度データ |
49 | 139 | uint8 | 拡張バイト | 100Hz, 9番サンプル |
06 | 140 | uint8 | データ長 | 6 バイト |
FFE80010FC08 | 141 | int16 | データ | X-24 mG/Y16 mG/Z-1016 mG |
センサーデータの末端 | ||||
0C | 147 | uint8 | チェックサム1 | 0x0C |
0E | uint8 | チェックサム2 | 0x0E | |
char | フッタ | '\r' | ||
char | フッタ | '\n' |
データの判別条件
親機・中継機アプリは、さまざまな種類の子機からデータを受信することができます。
出力されたデータがキューアプリ(TWELITE CUEモード)のものであるかを確認するには、次の箇所を参照してください。
# | データ | 項目 | 条件 |
---|---|---|---|
0 | uint32 | 中継機のシリアルID | MSBが1であること |
7 | uint32 | 送信元のシリアルID | MSBが1であること |
12 | uint8 | センサー種別 | 0x80 であること |
13 | uint8 | PAL基板バージョンとPAL基板ID | 0x05 であること |
- | - | ペイロードのサイズ | 148バイトであること |
パーサの実装例
- Python
- Arduino (C++)
開閉センサーパルモード
動作センサーパルモード(加速度計測モード)
動作センサーパルモード(ムーブ/ダイスモード)
データ形式
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint32 | 中継機のシリアルID | 中継なしの場合80000000 |
4 | uint8 | LQI | 0 -255 |
5 | uint16 | 続き番号 | |
7 | uint32 | 送信元のシリアルID | 0x8??????? |
11 | uint8 | 送信元の論理デバイスID | |
12 | uint8 | センサー種別 | 0x80 のみ |
13 | uint8 | PAL基板バージョンとPAL基板ID | 0x03 のみ |
14 | uint8 | センサーデータの数 | 04 のみ |
センサーデータ1 | |||
15 | uint8 | 情報ビット | 0x00 のみ |
16 | uint8 | データソース | 0x34 のみ |
17 | uint8 | 拡張バイト | 0x00 のみ |
18 | uint8 | データ長 | 3 のみ |
19 | [uint8] | データ | パケットプロパティデータ |
センサーデータ2 | |||
22 | uint8 | 情報ビット | 0x12 のみ |
23 | uint8 | データソース | 0x05 のみ |
24 | uint8 | 拡張バイト | 0x04 のみ |
25 | uint8 | データ長 | 4 のみ |
26 | uint32 | データ | イベントデータ |
センサーデータ3 | |||
30 | uint8 | 情報ビット | 0x11 のみ |
31 | uint8 | データソース | 0x30 のみ |
32 | uint8 | 拡張バイト | 0x08 のみ |
33 | uint8 | データ長 | 2 のみ |
34 | uint16 | データ | 電源電圧(mV) |
センサーデータ4 | |||
36 | uint8 | 情報ビット | 0x11 のみ |
37 | uint8 | データソース | 0x30 のみ |
38 | uint8 | 拡張バイト | 0x01 のみ |
39 | uint8 | データ長 | 2 のみ |
40 | uint16 | データ | ADC1の電圧(mV) |
センサーデータの末端 | |||
42 | uint8 | チェックサム1 | 直前までのCRC8 |
uint8 | チェックサム2 | チェックサム1までのLRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
出力データの例
ダイスモードの例を示します。ムーブモードの場合は、センサーデータ2
のイベントが異なります。
:80000000B400048106664801800304003400038035001205040403000000113008020D2011300102052C59B7
# | データ | 内容 | 値 | |
---|---|---|---|---|
: | char | ヘッダ | : | |
80000000 | 0 | uint32 | 中継機のシリアルID | 中継なし |
B1 | 4 | uint8 | LQI | 177 /255 |
0008 | 5 | uint16 | 続き番号 | 8 |
81066648 | 7 | uint32 | 送信元のシリアルID | 0x2019E3B |
01 | 11 | uint8 | 送信元の論理デバイスID | 0x1066648 |
80 | 12 | uint8 | センサー種別 | |
03 | 13 | uint8 | PAL基板バージョンとPAL基板ID | TWELITE CUE ダイス/ムーブ |
04 | 14 | uint8 | センサーデータの数 | 4 つ |
センサーデータ1 | ||||
00 | 15 | uint8 | 情報ビット | 拡張バイトなしuint8 |
34 | 16 | uint8 | データソース | パケットプロパティ |
00 | 17 | uint8 | 拡張バイト | なし |
03 | 18 | uint8 | データ長 | 3 バイト |
803500 | 19 | [uint8] | データ | ID128 、イベント発生(他ADC1と電源のみ) |
センサーデータ2 | ||||
12 | 22 | uint8 | 情報ビット | 拡張バイトありuint32 |
05 | 23 | uint8 | データソース | イベント |
04 | 24 | uint8 | 拡張バイト | 加速度イベント |
04 | 25 | uint8 | データ長 | 4 バイト |
03000000 | 26 | uint32 | データ | ダイスモード、サイコロ:3 |
センサーデータ3 | ||||
11 | 30 | uint8 | 情報ビット | 拡張バイトありuint16 |
30 | 31 | uint8 | データソース | 電圧 |
08 | 32 | uint8 | 拡張バイト | 電源電圧 |
02 | 33 | uint8 | データ長 | 2 バイト |
0D20 | 34 | uint16 | データ | 3360 mV |
センサーデータ4 | ||||
11 | 36 | uint8 | 情報ビット | 拡張バイトありuint16 |
30 | 37 | uint8 | データソース | 電圧 |
01 | 38 | uint8 | 拡張バイト | ADC1の電圧 |
02 | 39 | uint8 | データ長 | 2 バイト |
052C | 40 | uint16 | データ | 1324 mV |
センサーデータの末端 | ||||
59 | 42 | uint8 | チェックサム1 | 0x0C |
B7 | uint8 | チェックサム2 | 0x0E | |
char | フッタ | '\r' | ||
char | フッタ | '\n' |
データの判別条件
親機・中継機アプリは、さまざまな種類の子機からデータを受信することができます。
出力されたデータがキューアプリ(動作センサーパルモードのムーブあるいはダイスモード)のものであるかを確認するには、次の箇所を参照してください。
# | データ | 項目 | 条件 |
---|---|---|---|
0 | uint32 | 中継機のシリアルID | MSBが1であること |
7 | uint32 | 送信元のシリアルID | MSBが1であること |
12 | uint8 | センサー種別 | 0x80 であること |
13 | uint8 | PAL基板バージョンとPAL基板ID | 0x03 であること |
- | - | ペイロードのサイズ | 43バイトであること |
パーサの実装例
1.3.2.1.1.1.1.4.3 - アリアアプリからの出力(親機・中継機アプリ)
TWELITE ARIA モード
データ形式
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint32 | 中継機のシリアルID | 中継なしの場合80000000 |
4 | uint8 | LQI | 0 -255 |
5 | uint16 | 続き番号 | |
7 | uint32 | 送信元のシリアルID | 0x8??????? |
11 | uint8 | 送信元の論理デバイスID | |
12 | uint8 | センサー種別 | 0x80 のみ |
13 | uint8 | PAL基板バージョンとPAL基板ID | 0x06 のみ |
14 | uint8 | センサーデータの数 | 7 のみ |
センサーデータ1 | |||
15 | uint8 | 情報ビット | 0x00 のみ |
16 | uint8 | データソース | 0x34 のみ |
17 | uint8 | 拡張バイト | 0x00 のみ |
18 | uint8 | データ長 | 3 のみ |
19 | [uint8] | データ | パケットプロパティデータ |
センサーデータ2 | |||
22 | uint8 | 情報ビット | 0x12 のみ |
23 | uint8 | データソース | 0x05 のみ |
24 | uint8 | 拡張バイト | 0x35 または0x00 |
25 | uint8 | データ長 | 4 のみ |
26 | uint32 | データ | イベントデータ |
センサーデータ3 | |||
30 | uint8 | 情報ビット | 0x11 のみ |
31 | uint8 | データソース | 0x30 のみ |
32 | uint8 | 拡張バイト | 0x08 のみ |
33 | uint8 | データ長 | 2 のみ |
34 | uint16 | データ | 電源電圧(mV) |
センサーデータ4 | |||
36 | uint8 | 情報ビット | 0x11 のみ |
37 | uint8 | データソース | 0x30 のみ |
38 | uint8 | 拡張バイト | 0x01 のみ |
39 | uint8 | データ長 | 2 のみ |
40 | uint16 | データ | ADC1の電圧(mV) |
センサーデータ5 | |||
42 | uint8 | 情報ビット | 0x00 のみ |
43 | uint8 | データソース | 0x00 のみ |
44 | uint8 | 拡張バイト | 0x00 のみ |
45 | uint8 | データ長 | 1 のみ |
46 | uint8 | データ | 磁気データ |
センサーデータ6 | |||
47 | uint8 | 情報ビット | 0x05 のみ |
48 | uint8 | データソース | 0x01 のみ |
49 | uint8 | 拡張バイト | 0x00 のみ |
50 | uint8 | データ長 | 2 のみ |
51 | int16 | データ | 温度データ |
センサーデータ7 | |||
53 | uint8 | 情報ビット | 0x01 のみ |
54 | uint8 | データソース | 0x02 のみ |
55 | uint8 | 拡張バイト | 0x00 のみ |
56 | uint8 | データ長 | 2 のみ |
57 | uint16 | データ | 湿度データ |
センサーデータの末端 | |||
59 | uint8 | チェックサム1 | 直前までのCRC8 |
uint8 | チェックサム2 | チェックサム1までのLRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
出力データの例
:80000000CF00028201BAA201800607003400038135001205350401000000113008020D201130010204ED00000001800501000209D0010200020F347934[CR][LF]
# | データ | 内容 | 値 | |
---|---|---|---|---|
: | char | ヘッダ | : | |
80000000 | 0 | uint32 | 中継機のシリアルID | 中継なし |
CF | 4 | uint8 | LQI | 207 /255 |
0002 | 5 | uint16 | 続き番号 | 2 |
8201BAA2 | 7 | uint32 | 送信元のシリアルID | 0x201BAA2 |
01 | 11 | uint8 | 送信元の論理デバイスID | 0x01 |
80 | 12 | uint8 | センサー種別 | |
06 | 13 | uint8 | PAL基板バージョンとPAL基板ID | TWELITE ARIA |
07 | 14 | uint8 | センサーデータの数 | 7 つ |
センサーデータ1 | ||||
00 | 15 | uint8 | 情報ビット | 拡張バイトなしuint8 |
34 | 16 | uint8 | データソース | パケットプロパティ |
00 | 17 | uint8 | 拡張バイト | なし |
03 | 18 | uint8 | データ長 | 3 バイト |
813500 | 19 | [uint8] | データ | ID129 、タイマイベント発生 |
センサーデータ2 | ||||
12 | 22 | uint8 | 情報ビット | 拡張バイトありuint32 |
05 | 23 | uint8 | データソース | イベント |
35 | 24 | uint8 | 拡張バイト | タイマイベント |
04 | 25 | uint8 | データ長 | 4 バイト |
01000000 | 26 | uint32 | データ | タイマによる起床 |
センサーデータ3 | ||||
11 | 30 | uint8 | 情報ビット | 拡張バイトありuint16 |
30 | 31 | uint8 | データソース | 電圧 |
08 | 32 | uint8 | 拡張バイト | 電源電圧 |
02 | 33 | uint8 | データ長 | 2 バイト |
0D20 | 34 | uint16 | データ | 3360 mV |
センサーデータ4 | ||||
11 | 36 | uint8 | 情報ビット | 拡張バイトありuint16 |
30 | 37 | uint8 | データソース | 電圧 |
01 | 38 | uint8 | 拡張バイト | ADC1の電圧 |
02 | 39 | uint8 | データ長 | 2 バイト |
04ED | 40 | uint16 | データ | 1261 mV |
センサーデータ5 | ||||
00 | 42 | uint8 | 情報ビット | 拡張バイトなしuint8 |
00 | 43 | uint8 | データソース | 磁気 |
00 | 44 | uint8 | 拡張バイト | なし |
01 | 45 | uint8 | データ長 | 1 バイト |
80 | 46 | uint8 | データ | 磁石なし(定期送信) |
センサーデータ6 | ||||
05 | 47 | uint8 | 情報ビット | 拡張バイトなしint16 |
01 | 48 | uint8 | データソース | 温度 |
00 | 49 | uint8 | 拡張バイト | なし |
02 | 50 | uint8 | データ長 | 2 バイト |
09D0 | 51 | int16 | データ | 25.12 °C |
センサーデータ7 | ||||
01 | 53 | uint8 | 情報ビット | 拡張バイトなしuint16 |
02 | 54 | uint8 | データソース | 湿度 |
00 | 55 | uint8 | 拡張バイト | なし |
02 | 56 | uint8 | データ長 | 2 バイト |
0F34 | 57 | uint16 | データ | 38.92 % |
センサーデータの末端 | ||||
79 | 59 | uint8 | チェックサム1 | 0x79 |
34 | uint8 | チェックサム2 | 0x34 | |
char | フッタ | '\r' | ||
char | フッタ | '\n' |
データの判別条件
親機・中継機アプリは、さまざまな種類の子機からデータを受信することができます。
出力されたデータがアリアアプリ(TWELITE ARIAモード)のものであるかを確認するには、次の箇所を参照してください。
# | データ | 項目 | 条件 |
---|---|---|---|
0 | uint32 | 中継機のシリアルID | MSBが1であること |
7 | uint32 | 送信元のシリアルID | MSBが1であること |
12 | uint8 | センサー種別 | 0x80 であること |
13 | uint8 | PAL基板バージョンとPAL基板ID | 0x06 であること |
- | - | ペイロードのサイズ | 60バイトであること |
パーサの実装例
- Python
- Arduino (C++)
開閉センサーパルモード
1.3.2.1.1.1.1.4.4 - パル・キュー・アリアアプリからの出力の詳細(親機・中継機アプリ)
全体
データ形式
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint32 | 中継機のシリアルID | 中継なしの場合80000000 |
4 | uint8 | LQI | 0 -255 |
5 | uint16 | 続き番号 | |
7 | uint32 | 送信元のシリアルID | 0x8??????? |
11 | uint8 | 送信元の論理デバイスID | |
12 | uint8 | センサー種別 | 0x80 のみ |
13 | uint8 | PAL基板バージョンとPAL基板ID | 0x81 など |
14 | uint8 | センサーデータの数 | |
15 | [uint8] | センサーデータの羅列 | 長さ\(N\)のバイト列 |
15+\(N\) | uint8 | チェックサム1 | 直前までのCRC8 |
uint8 | チェックサム2 | チェックサム1までのLRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
出力データの例
:80000000A8001C82012B1E01808103113008020D0C1130010203E40000000101EC6E
# | データ | 内容 | 値 | |
---|---|---|---|---|
: | char | ヘッダ | : | |
80000000 | 0 | uint32 | 中継機のシリアルID | 中継なし |
A8 | 4 | uint8 | LQI | 168/255 |
001C | 5 | uint16 | 続き番号 | 28 |
82012B1E | 7 | uint32 | 送信元のシリアルID | 0x2012B1E |
01 | 11 | uint8 | 送信元の論理デバイスID | 0x01 |
80 | 12 | uint8 | センサー種別 | - |
81 | 13 | uint8 | PAL基板バージョンとPAL基板ID | 0x81 |
03 | 14 | uint8 | センサーデータの数 | 3 つ |
1130...0101 | 15 | [uint8] | センサーデータの羅列 | 長さ17のバイト列 |
EC | 15+17 | uint8 | チェックサム1 | 0xEC |
6E | uint8 | チェックサム2 | 0x6E | |
char | フッタ | '\r' | ||
char | フッタ | '\n' |
センサーデータ
データ形式
# | データ | 内容 | 備考 |
---|---|---|---|
0 | uint8 | 情報ビット | データの型や拡張バイトの有無 |
1 | uint8 | データソース | センサー値の種類 |
2 | uint8 | 拡張バイト | センサー値の付加情報 |
3 | uint8 | データ長 | センサー値の長さ |
4 | [uint8] | データ | センサー値 |
出力データの例
113008020D0C
# | データ | 内容 | 値 | |
---|---|---|---|---|
11 | 0 | uint8 | 情報ビット | 拡張バイトあり、uint16 |
30 | 1 | uint8 | データソース | 電圧 |
08 | 2 | uint8 | 拡張バイト | 電源電圧 |
02 | 3 | uint8 | データ長 | 2 バイト |
0D0C | 4 | [uint8] | データ | 3340 mV |
情報ビット
センサー値のデータ型や拡張バイトの有無、読み込みエラーの有無を示します。
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
機能 | ERR | - | - | EXT | - | TYP:2 | TYP:1 | TYP:0 |
各機能は次の内容を示します。
機能 | 説明 | 値 | 内容 |
---|---|---|---|
ERR | 読み込みエラーの有無 | 0 | 正常 |
1 | エラーあり | ||
EXT | 拡張バイトの有無 | 0 | 拡張バイトなし |
1 | 拡張バイトあり | ||
TYP | データ型 | 000 | uint8 |
001 | uint16 | ||
010 | uint32 | ||
011 | N/A | ||
100 | int8 | ||
101 | int16 | ||
110 | int32 | ||
111 | [uint8] |
データソース
センサー値の種類を示します。
値 | 内容 |
---|---|
0x00 | 磁気 |
0x01 | 温度 |
0x02 | 湿度 |
0x03 | 照度 |
0x04 | 加速度 |
0x05 | イベント |
0x30 | 電圧 |
0x34 | パケットプロパティ |
拡張バイト
連続データのインデックスなど、センサー値の付加情報を示します。
データソースが磁気/温度/湿度/照度/パケットプロパティの場合
なし
データソースが加速度の場合
加速度サンプルデータの属性を示します。
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
機能 | SFQ:2 | SFQ:1 | SFQ:0 | SNM:4 | SNM:3 | SNM:2 | SNM:1 | SNM:0 |
各機能は次の内容を示します。
機能 | 説明 | 値 | 内容 |
---|---|---|---|
SFQ | サンプリング周波数 | 000 (0x00|SNM ) | 25Hz |
001 (0x20|SNM ) | 50Hz | ||
010 (0x40|SNM ) | 100Hz | ||
011 (0x60|SNM ) | 190Hz | ||
100 以上 | 未定義 | ||
SNM | サンプル番号 | 0 -31 | 古い順 |
データソースがイベントの場合
イベントの発生要因を示します。
値 | 内容 |
---|---|
0x00 | 磁気 |
0x01 | 温度 |
0x02 | 湿度 |
0x03 | 照度 |
0x04 | 加速度 |
0x31 | デジタル入力 |
0x35 | タイマ |
データソースが電圧の場合
対象を示します。
値 | 内容 |
---|---|
0x01 | ADC1 |
0x02 | ADC2 |
0x03 | ADC3 |
0x04 | ADC4 |
0x08 | 電源 |
データ長
続くデータのバイト数を示します。
データ
センサー値を表します。
データソースが磁気の場合
データ型はuint8
です。
値 | 内容 |
---|---|
0x00 | 磁石なし |
0x01 | N極が近づいた |
0x02 | S極が近づいた |
0x80 | 磁石なし(定期送信) |
0x81 | N極が近くにある(定期送信) |
0x82 | S極が近くにある(定期送信) |
データソースが温度の場合
データ型はint16
です。
100倍されたセ氏の温度を表します。
データソースが湿度の場合
データ型はuint16
です。
100倍された相対湿度を表します。
データソースが照度の場合
データ型はuint32
です。
ルクスの値を表します。
データソースが加速度の場合
int16
のデータが3つ続きます。
X,Y,Z軸の値(mG)の合計は6バイトです。
byte | 0 | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|---|
内容 | X:15-8 | X:7-0 | Y:15-8 | Y:7-0 | Z:15-8 | Z:7-0 |
データソースがイベントの場合
uint8
のデータが4つ続きます。
先頭のデータがイベントの内容を表し、残りは未使用です。
byte | 0 | 1 | 2 | 3 |
---|---|---|---|---|
内容 | 使用 | 未使用 | 未使用 | 未使用 |
拡張バイトが磁気の場合
先頭の値 | 内容 |
---|---|
0x00 | 磁石なし |
0x01 | N極が近くにある |
0x02 | S極が近くにある |
拡張バイトが加速度の場合
先頭の値 | 内容 |
---|---|
0x01 | サイコロ:1 |
0x02 | サイコロ:2 |
0x03 | サイコロ:3 |
0x04 | サイコロ:4 |
0x05 | サイコロ:5 |
0x06 | サイコロ:6 |
0x08 | シェイク |
0x10 | ムーブ |
拡張バイトがタイマの場合
先頭の値 | 内容 |
---|---|
0x01 | タイマによる起床 |
データソースが電圧の場合
データ型はuint16
です。
mV単位の電圧を表します。
データソースがパケットプロパティの場合
uint8
のデータが3つ続きます。
byte | 0 | 1 | 2 |
---|---|---|---|
データ | パケットID | 起床要因の根源 | 起床要因の条件 |
各データは次の内容を表します。
データ | 値 | 内容 |
---|---|---|
パケットID | 0 | イベントなし、ADC1と電源の電圧のみ |
1 -127 | イベントなし、その他のデータあり | |
128 | イベントあり、ADC1と電源の電圧のみ | |
129 -255 | イベントあり、その他のデータあり | |
起床要因の根源 | 0x00 | 磁気 |
0x01 | 温度 | |
0x02 | 湿度 | |
0x03 | 照度 | |
0x04 | 加速度 | |
0x31 | デジタル入力 | |
0x35 | タイマ | |
起床要因の条件 | 0x00 | イベントが発生した |
0x01 | 値が変化した | |
0x02 | 値がしきい値を上回った | |
0x03 | 値がしきい値を下回った | |
0x04 | 値が範囲を満たした |
1.3.2.1.1.1.1.5 - actからの出力(親機・中継機アプリ)
act から受信したデータ
データ形式
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信元の論理デバイスID | |
1 | uint8 | コマンド種別 | 0xAA のみ |
2 | uint8 | 応答ID | 0x00 -0x7F |
3 | uint32 | 送信元のシリアルID | |
7 | uint32 | 送信先のシリアルID | 論理デバイスID指定時は00000000 |
11 | uint8 | LQI | 0 -255 |
12 | uint16 | データのバイト数 | |
14 | [uint8] | 任意のデータ | 長さ\(N\)のバイト列 |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
出力データの例
:FEAA008201015A00000000B7000F424154310F0CEE000B03FF03FF03FF92
# | データ | 内容 | 値 | |
---|---|---|---|---|
: | char | ヘッダ | : | |
FE | 0 | uint8 | 送信元の論理デバイスID | 0xFE |
AA | 1 | uint8 | コマンド種別 | 0xAA |
00 | 2 | uint8 | 応答ID | 0x00 |
8201015A | 3 | uint32 | 送信元のシリアルID | 0x201015A |
00000000 | 7 | uint32 | 送信先のシリアルID | 論理デバイスID指定 |
B7 | 11 | uint8 | LQI | 183/255 |
000F | 12 | uint16 | データのバイト数 | 15 バイト |
424154310F0CEE000B03FF03FF03FF | 14 | [uint8] | 任意のデータ | そのまま |
92 | uint8 | チェックサム | 0x92 | |
char | フッタ | \r | ||
char | フッタ | \n |
1.3.2.1.1.1.1.6 - 無線タグアプリからの出力(親機・中継機アプリ)
アナログセンサー
データ形式
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint32 | 中継機のシリアルID | 中継なしは80000000 |
4 | uint8 | LQI | 0 -255 |
5 | uint16 | 続き番号 | |
7 | uint32 | 送信元のシリアルID | |
11 | uint8 | 送信元の論理デバイスID | |
12 | uint8 | センサー種別 | |
13 | uint8 | 電源電圧(mV) | 電源電圧の計算を参照 |
14 | uint16 | ADC1の電圧 | |
16 | uint16 | ADC2の電圧 | |
18 | uint32 | 未使用 | |
22 | uint8 | チェックサム |
出力データの例
:80000000B700628201015A0010DF08FD09A300000000E9
# | データ | 内容 | 値 | |
---|---|---|---|---|
: | char | ヘッダ | : | |
80000000 | 0 | uint32 | 中継機のシリアルID | 中継なし |
B7 | 4 | uint8 | LQI | 183/255 |
0062 | 5 | uint16 | 続き番号 | 98 |
8201015A | 7 | uint32 | 送信元のシリアルID | 0x201015A |
00 | 11 | uint8 | 送信元の論理デバイスID | 0x00 |
10 | 12 | uint8 | センサー種別 | アナログセンサー |
DF | 13 | uint8 | 電源電圧(mV) | 3330 mV |
08FD | 14 | uint16 | ADC1の電圧 | 2301 mV |
09A3 | 16 | uint16 | ADC2の電圧 | 2467 mV |
00000000 | 18 | uint32 | 未使用 | |
E9 | 22 | uint8 | チェックサム | 0xE9 |
char | フッタ | \r | ||
char | フッタ | \n |
加速度センサー(ADXL34x / TWELITE 2525A)
データ形式
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint32 | 中継機のシリアルID | 中継なしは80000000 |
4 | uint8 | LQI | 0 -255 |
5 | uint16 | 続き番号 | |
7 | uint32 | 送信元のシリアルID | |
11 | uint8 | 送信元の論理デバイスID | |
12 | uint8 | センサー種別 | |
13 | uint8 | 電源電圧(mV) | 電源電圧の計算を参照 |
14 | uint16 | ADC1の電圧 | |
16 | uint16 | ADC2の電圧 | |
18 | uint8 | センサーモード番号 | |
19 | int16 | X軸の加速度 | 単位はmG*10 |
21 | int16 | Y軸の加速度 | 単位はmG*10 |
23 | int16 | Z軸の加速度 | 単位はmG*10 |
25 | uint8 | チェックサム |
出力データの例
:8000000063001781013C850035DF057702F2000000FF96FFF0BB
# | データ | 内容 | 値 | |
---|---|---|---|---|
: | char | ヘッダ | : | |
80000000 | 0 | uint32 | 中継機のシリアルID | 中継なし |
63 | 4 | uint8 | LQI | 99/255 |
0017 | 5 | uint16 | 続き番号 | 23 |
81013C85 | 7 | uint32 | 送信元のシリアルID | 0x1013C85 |
00 | 11 | uint8 | 送信元の論理デバイスID | 0x00 |
35 | 12 | uint8 | センサー種別 | 加速度センサー(ADXL34x) |
DF | 13 | uint8 | 電源電圧(mV) | 3330 mV |
0577 | 14 | uint16 | ADC1の電圧 | 1399 mV |
02F2 | 16 | uint16 | ADC2の電圧 | 754 mV |
00 | 18 | uint8 | センサーモード番号 | 通常 |
0000 | 19 | int16 | X軸の加速度 | 0 mG |
FF96 | 21 | int16 | Y軸の加速度 | -1060 mG |
FFF0 | 23 | int16 | Z軸の加速度 | -160 mG |
BB | 25 | uint8 | チェックサム | 0xBB |
char | フッタ | \r | ||
char | フッタ | \n |
スイッチ
データ形式
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint32 | 中継機のシリアルID | 中継なしは80000000 |
4 | uint8 | LQI | 0 -255 |
5 | uint16 | 続き番号 | |
7 | uint32 | 送信元のシリアルID | |
11 | uint8 | 送信元の論理デバイスID | |
12 | uint8 | センサー種別 | |
13 | uint8 | 電源電圧(mV) | 電源電圧の計算を参照 |
14 | uint16 | ADC1の電圧 | |
16 | uint16 | ADC2の電圧 | |
18 | uint8 | センサーモード番号 | 0 がHi→Lo、1 がLo→Hi |
19 | uint8 | DI1 の状態 | 1 がLo |
20 | uint8 | 未使用 | |
21 | uint8 | チェックサム |
出力データの例
:800000009C00118201015A00FEDF000709A300010064
# | データ | 内容 | 値 | |
---|---|---|---|---|
: | char | ヘッダ | ||
80000000 | 0 | uint32 | 中継機のシリアルID | 中継なし |
9C | 4 | uint8 | LQI | 156/255 |
0062 | 5 | uint16 | 続き番号 | 98 |
8201015A | 7 | uint32 | 送信元のシリアルID | 0x201015A |
00 | 11 | uint8 | 送信元の論理デバイスID | 0x00 |
FE | 12 | uint8 | センサー種別 | スイッチ |
DF | 13 | uint8 | 電源電圧(mV) | 3330 mV |
0007 | 14 | uint16 | ADC1の電圧 | 7 mV |
09A3 | 16 | uint16 | ADC2の電圧 | 2467 mV |
00 | 18 | uint8 | センサーモード番号 | Hi→Lo |
01 | 19 | uint8 | DI1 の状態 | Lo |
00 | 20 | uint8 | 未使用 | |
64 | 21 | uint8 | チェックサム | 0x64 |
char | フッタ | \r | ||
char | フッタ | \n |
電源電圧の計算
電源電圧 \(V_{cc}\) は、受信した値 \(e_{cc}\) を使って次のように表すことができます。
単位は mV
1.3.2.1.1.1.2 - 親機・中継機アプリの送信コマンド
既定の書式でシリアルポートから入力されたコマンドを子機へ送信します。
1.3.2.1.1.1.2.1 - 超簡単!標準アプリへの入力(親機・中継機アプリ)
デジタル・アナログ入出力
0x80
:相手端末の出力変更
相手端末の出力信号を制御します。
データ形式
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信先の論理デバイスID | 親機0x00 ,子機0x01 -0x64 ,全子機0x78 |
1 | uint8 | コマンド番号 | 0x80 のみ |
2 | uint8 | 書式バージョン | 0x01 のみ |
3 | uint8 | デジタル信号 | LSBからDOx に対応、0 でHigh |
4 | uint8 | デジタル信号マスク | LSBからDOx に対応、1 で有効 |
5 | uint16 | PWM1 信号 | 0 -1024 ,0xFFFF で無効 |
7 | uint16 | PWM2 信号 | 0 -1024 ,0xFFFF で無効 |
9 | uint16 | PWM3 信号 | 0 -1024 ,0xFFFF で無効 |
11 | uint16 | PWM4 信号 | 0 -1024 ,0xFFFF で無効 |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
1.3.2.1.1.1.2.2 - シリアル通信アプリへの入力(親機・中継機アプリ)
UART
書式モード:アスキー・簡易形式
App_Wings v1.3 以降では、書式モード(A)の簡易形式に対応しています。
2024年9月現在、公開中の SDK に App_Wings v1.3 は含まれていません。
次のリンクから App_Wings v1.3 をダウンロードし、ファイルを指定して書き込むことで使用できます。
- BLUE版:
App_Wings_BLUE_L1305_V1-3-2.bin
- RED版:
App_Wings_RED_L1305_V1-3-2.bin
- MONOSTICK BLUE版:
App_Wings_MONOSTICK_BLUE_L1305_V1-3-2.bin
- MONOSTICK RED版:
App_Wings_MONOSTICK_RED_L1305_V1-3-2.bin
データ形式
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信先の論理デバイスID | 親機0x00 ,子機0x01 -0x64 ,全子機0x78 |
1 | uint8 | コマンド番号 | 0x80 未満の任意の値 |
2 | [uint8] | 任意のデータ | 長さ\(N\)のバイト列(\(N\leqq80\)を推奨) |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
1.3.2.1.1.1.2.3 - パルアプリ(通知パル)への入力(親機・中継機アプリ)
:0190010004000169[CR][LF]
^1^2^3^^^^^^^4^5
番号 | バイト数 | 意味 | データ例 | 備考 |
---|---|---|---|---|
1 | 1 | 送信先の論理デバイスID | 01 | 送信先のTWELITE PALの論理デバイスIDを指定します。 |
2 | 1 | コマンド種別 | 90 | |
3 | 1 | コマンドパラメータ数 | 01 | コマンドパラメータの数を指定します。例えば、コマンドパラメータを1つだけ指定するなら1に、2つ指定するには2にします。 |
4 | コマンド数x4 | コマンドパラメータ | 00040001 | イベントやLEDの色などを指定するためのパラメータを指定します。 |
5 | 1 | チェックサム | 69 | 1~4の各バイトの和を8ビット幅で計算し2の補数をとります。つまりデータ部の各バイトの総和+チェックサムバイトを8ビット幅で計算すると0になります。 |
6 | 2 | フッター | [CR][LF] | [CR] (0x0D) [LF] (0x0A) を指定します。ただし、チェックサムをXで省略する場合はフッターも省略可能です。 |
コマンドパラメータ
4バイトのコマンドパラメータを組み合わせてコマンドを指定します。
0x00:イベントIDを送信する
TWELITE PALは受信したイベントIDごとの振る舞いが設定されております。 本パラメータでは送信先のTWELITE PALにイベントIDを送信し、設定した動作を行います。
番号 | バイト数 | 内容 | 備考 |
---|---|---|---|
1 | 1 | コマンドパラメータID | 0x00 |
2 | 1 | 送信先PAL ID | 送信先のPAL IDを指定します。 |
3 | 1 | 未使用領域 | 0x00固定 |
4 | 1 | イベントID | 0~16までのイベントIDを指定します。 |
0x01 : LEDの色、点滅パターン、明るさを送信する
送信先の通知パルにLEDの色、点滅パターン、明るさを送信します。
番号 | バイト数 | 内容 | 備考 |
---|---|---|---|
1 | 1 | コマンドパラメータID | 0x01 |
2 | 1 | 色 | 0:赤 |
3 | 1 | 点滅パターン | 0:常時点灯 |
4 | 1 | 明るさ | 0:消灯 |
0x02 : 点灯時間を送信する
通知パルのLEDの点灯時間を送信します。
番号 | バイト数 | 内容 | 備考 |
---|---|---|---|
1 | 1 | コマンドパラメータID | 0x02 |
2 | 1 | 未使用領域 | 0xFF固定 |
3 | 1 | 未使用領域 | 0x00固定 |
4 | 1 | 点灯時間 | 秒で指定(0は常時点灯) |
0x03:LEDの色をRGBWで指定する
通知パルのLEDの点灯色をRGBWで送信します。
番号 | バイト数 | 内容 | 備考 |
---|---|---|---|
1 | 1 | コマンドパラメータID | 0x03 |
2 | 1 | 未使用領域 | 0xFF固定 |
3 | 2 | LEDの点灯色 | LSBからRGBWの順番で4ビットずつ指定する。 数値が大きいほど明るい |
0x04:点滅パラメータを指定する。
通知パルのLEDの点滅周期と点滅Dutyを送信します。
番号 | バイト数 | 内容 | 備考 |
---|---|---|---|
1 | 1 | コマンドパラメータID | 0x04 |
2 | 1 | 未使用領域 | 0xFF固定 |
3 | 1 | 点滅時間の割合 | 0x00~0xFFで指定する。 数値が大きいほど1周期当たりの点灯時間が長くなる。 1周期の半分だけ点灯させるには0x7Fを指定する。 |
4 | 1 | 点滅周期 | 0x00~0xFFで指定する。 設定値が1大きくなるごとに点滅の周期が約0.04sずつ増える。 1周期1秒にするには0x17を指定する。 |
コマンド例
例1:イベントを送信する
論理デバイスIDが1のNOTICE PALに対してイベント1を送信するコマンド例です。
:0190010004000169
^1^2^3^4^5^6^7^8
番号 | バイト数 | 意味 | データ例 | データ例の内容 | 備考 |
---|---|---|---|---|---|
1 | 1 | 送信先の論理デバイスID | 01 | 送信先の論理デバイスIDは0x01 | |
2 | 1 | コマンド種別 | 90 | 0x90コマンド | 90固定 |
3 | 1 | コマンド数 | 01 | コマンドは1個 | |
4 | 1 | コマンドID | 00 | コマンド00 | |
5 | 1 | 送信先PAL ID | 04 | 通知パルに対して送信する | |
6 | 1 | 未使用領域 | 00 | ||
7 | 1 | イベントID | 01 | イベント1 | 0x00~0x10まで |
8 | 1 | チェックサム | 69 |
例2:通知パルのLEDの点灯色を送信する
論理デバイスIDが1のNOTICE PALに対して明るさ8で白色にゆっくり点滅させるためのコマンドです。
:019001010601085E
^1^2^3^4^5^6^7^8
番号 | バイト数 | 意味 | データ例 | データ例の内容 | 備考 |
---|---|---|---|---|---|
1 | 1 | 送信先の論理デバイスID | 01 | 送信先の論理デバイスIDは0x01 | |
2 | 1 | コマンド種別 | 90 | 0x90コマンド | 90固定 |
3 | 1 | コマンド数 | 01 | コマンドは1個 | |
4 | 1 | コマンドパラメータID | 01 | コマンドパラメータID 0x01 | |
5 | 1 | 色 | 06 | 白 | |
6 | 1 | 点滅パターン | 01 | 点滅 | |
7 | 1 | 明るさ | 08 | 明るさ8 | 0x00~0x0Fまで |
8 | 1 | チェックサム | 5E |
例3:通知パルのLEDの点灯色と点灯時間を送信する
論理デバイスIDが1のNOTICE PALに対して紫に点灯させ、点灯後1秒で消灯させるコマンドです。
:0190020104000802FF00015E
^1^2^3^4^5^6^7^8^9^a^b^c
番号 | バイト数 | 意味 | データ例 | データ例の内容 | 備考 |
---|---|---|---|---|---|
1 | 1 | 送信先の論理デバイスID | 01 | 送信先の論理デバイスIDは0x01 | |
2 | 1 | コマンド種別 | 90 | 0x90コマンド | 90固定 |
3 | 1 | コマンド数 | 02 | コマンドは2個 | |
4 | 1 | コマンドパラメータID | 01 | コマンドパラメータID 0x01 | |
5 | 1 | 色 | 04 | 紫 | |
6 | 1 | 点滅パターン | 00 | 点灯 | |
7 | 1 | 明るさ | 08 | 明るさ8 | 0x00~0x0Fまで |
8 | 1 | コマンドパラメータID | 02 | コマンドパラメータID 0x02 | |
9 | 1 | 未使用領域 | FF | ||
a | 1 | 未使用領域 | 00 | ||
b | 1 | 点灯時間 | 01 | 点灯後1秒で消える | |
c | 1 | チェックサム | 5E |
例4:通知パルに詳細な点灯色を送信する
論理デバイスIDが1のNOTICE PALに対して紫に点灯させるコマンドです。
:01900103FF0F0459
^1^2^3^4^5^^^6^7
番号 | バイト数 | 意味 | データ例 | データ例の内容 | 備考 |
---|---|---|---|---|---|
1 | 1 | 送信先の論理デバイスID | 01 | 送信先の論理デバイスIDは0x01 | |
2 | 1 | コマンド種別 | 90 | 0x90コマンド | 90固定 |
3 | 1 | コマンド数 | 01 | コマンドは2個 | |
4 | 1 | コマンドパラメータID | 03 | コマンドパラメータID 0x03 | |
5 | 1 | 未使用 | FF | ||
6 | 2 | LEDの点灯色 | 0F04 | 青:15、赤4の明るさで点灯させる。 | LSBからRGBWの順番で各色4bitずつ(0~15)で指定する。 数値が大きいほど明るい |
7 | 1 | チェックサム | 59 |
例5:通知パルのLEDの点灯色と点灯時間を送信する
論理デバイスIDが1のNOTICE PALに対して紫に点灯させ、点灯後1秒で消灯させるコマンドです。
:0190020104000802FF00015E
^1^2^3^4^5^6^7^8^9^a^b^c
番号 | バイト数 | 意味 | データ例 | データ例の内容 | 備考 |
---|---|---|---|---|---|
1 | 1 | 送信先の論理デバイスID | 01 | 送信先の論理デバイスIDは0x01 | |
2 | 1 | コマンド種別 | 90 | 0x90コマンド | 90固定 |
3 | 1 | コマンド数 | 02 | コマンドは2個 | |
4 | 1 | コマンドパラメータID | 01 | コマンドパラメータID 0x01 | |
5 | 1 | 色 | 04 | 紫 | |
6 | 1 | 点滅パターン | 00 | 点灯 | |
7 | 1 | 明るさ | 08 | 明るさ8 | 0x00~0x0Fまで |
8 | 1 | コマンドパラメータID | 02 | コマンドパラメータID 0x02 | |
9 | 1 | 未使用領域 | FF | ||
a | 1 | 未使用領域 | 00 | ||
b | 1 | 点灯時間 | 01 | 点灯後1秒で消える | |
c | 1 | チェックサム | 5E |
1.3.2.1.1.2 - 親機・中継機アプリの中継機モード
設定例
中継機として使用するには、インタラクティブモードの動作モードを1
以上としてください。
中継方式
TWELITE NETでは無線パケットの中継配送について、大きく分けて下表で示す2つの方式を用意しており、アプリケーションごとに異なります。本アプリでは下表で示すアプリケーションのパケットを識別し、中継することができます。
中継方式 | 対応アプリ |
---|---|
単純ネット | 超簡単!標準アプリ、リモコンアプリ、シリアル通信アプリ、アクト |
中継ネット | 無線タグアプリ、パルアプリ、キューアプリ |
単純ネットを使用した中継
単純ネットを使用するアプリの中継を行う場合、動作モードの値を1以上に設定することで3回まで中継することができます。
例えば、1. のように親機と子機の間に中継機が3台以内であれば親機にデータが届きますが、2. ように中継機が4台以上ある場合は親機にデータが届きません。
1. 子機 ---> 中継機 ---> 中継機 ---> 中継機 ---> 親機
→ 親機が子機のデータを3回中継して受信できる。
2. 子機 ---> 中継機 ---> 中継機 ---> 中継機 ---> 中継機 -x-> 親機\
→ 中継4回目で中継することをやめる。
単純ネットによる中継は、基本的に同報通信を使用して通信を行い、受信したパケットをすべて中継を行います。そのため、中継ネットワークを形成、維持するための通信が必要ないという利点がありますが、中継機が増えるほど爆発的に通信量が多くなることがあるという欠点もあります。
詳しくは こちら を参照ください。
中継ネットを使用した中継
中継ネットを使用するアプリのデータを1段の中継を行う場合、動作モードの値を1に設定してしてください。
複数回の中継を行う場合は、親機から遠くなるにつれて動作モードの設定値を大きくしてください。(設定値が昇順になっていれば設定値が飛んでもかまいません。)
本方式の最大中継回数は63回までです。
例1:1回の中継を行う場合\
子機 ---> 中継機(動作モード:1) ---> 親機
例2:2回の中継を行う場合\
子機 ---> 中継機(動作モード:2) ---> 中継機(動作モード:**1**) ---> 親機
例3:3回の中継を行う場合\
子機 ---> 中継機(動作モード:6) ---> 中継機(動作モード:3) ---> 中継機(動作モード:1) ---> 親機
中継ネットは上り方向の配送を効率的に実施する目的を持って設計されたツリー型ネットワークで、中継機は上位レイヤ(より動作モードの設定値が小さい親機もしくは中継機)を探索し、発見した上位レイヤ1台に対して中継を行います。
そのため、中継機の台数が増えても単純ネットほどは通信量が多くなりにくいですが、接続先を探索、維持するための通信が発生します。
詳しくは こちら をご覧ください。
静的ルーティング(中継先を直接指定)をする場合
中継ネットでの中継を行うときに、下図のような配置を考えた場合、中継機2の接続先は親機もしくは中継機1のどちらかを自動的に選択します。
基本的には、中継する回数が少ない方が親機への配送率が高くなる場合が多いですが、中継機2の接続先として親機が選択されてしまった場合、親機と中継機2の間に障害物があるため、通信品質が悪くなり、親機への配送率が中継機1を経由するときより低くなる可能性が高くなります。
そのため、本アプリには中継機の接続先を TWELITE のシリアル番号で指定する機能 (静的ルーティング機能) があります。
静的ルーティングを行う場合は、中継機2→中継機1への経路を静的にする、または全ての経路を静的に設定します。
すべての経路の設定にはその分だけ設定が多くなり、また、中継機の故障や電波状況の変化といった状況を想定した冗長化に対応できない点がありますが、上位通信先を確定するまでの時間をなくし、速やかに中継動作に移行できる利点があります。
静的ルーティングをするには下表のように中継機1には親機のSID、中継機2には中継機1のSIDになるように接続先を設定してください。
例: 2段中継の場合 (親機 ← 中継機1 ← 中継機2 ← 子機)
TWELITEのSID例 | 接続先(A: Access Point Address)の設定例 | 動作モード(l:Mode)の設定例 | |
---|---|---|---|
親機 | 810F155E | - | 0 |
中継機1 | 810E18E8 | 810F155E (親機のSID)※ | 1 |
中継機2 | 810F17FF | 810E18E8 (中継機1のSID) | 2 |
※上図の壁による影響のみに対処したい場合は設定不要です。
1.3.2.1.2 - インタラクティブモード(親機・中継機アプリ)
ここでは親機・中継機アプリ(App_Wings)に固有の機能を説明します。共通機能については、TWELITE APPS マニュアル のトップページを参照してください。
表示例
次のような画面を表示します。
[CONFIG MENU/App_Wings:0/v1-02-1/SID=820163B2]
a: (0x67720102) Application ID [HEX:32bit]
c: (18 ) Channels Set
x: ( 0x03) RF Power/Retry [HEX:8bit]
b: (38400,8N1 ) UART Baud [9600-230400]
o: (0x00000000) Option Bits [HEX:32bit]
k: (0xA5A5A5A5) Encryption Key [HEX:32bit]
m: ( 0) Mode (Parent or Router)
A: (0x00000000) Access point address [HEX:32bit]
[ESC]:Back [!]:Reset System [M]:Extr Menu
コマンド
項目 | 初期値 | 備考 | |
---|---|---|---|
a | アプリケーションID | 0x67720102 | 32bit |
c | 周波数チャネル | 18 | 11 -26 |
x | 再送回数と送信出力 | 03 | |
再送回数 | 0 | 1 -9 回、0 は初期値の0回 | |
送信出力 | 3 | 0 -3 | |
b | UART代替設定 | 38400,8N1 | オプションビットで有効化 |
o | オプションビット | 0x00000000 | その他の詳細設定 |
k | 暗号化鍵 | 0xA5A5A5A5 | 32bit |
m | 動作モード | 0 | 親機0 中継機1 中継ネット1 -63 |
A | 中継先 | 0x00000000 | 中継機モードのみ |
各コマンドの詳細を次に示します。
a
:アプリケーションID
通信を行う端末はすべて同一の値とします。論理的にネットワークを分離します。
c
:周波数チャネル
通信を行う端末はすべて同一の値とします。物理的にネットワークを分離します。
x
:送信出力と再送回数
電波の送信出力と、パケットを追加で送信する回数を指定します。
b
:UART代替設定
オプションビットのUART代替設定の有効化を設定した場合のUARTオプションを指定します。
値にはボーレートとパリティの設定をカンマで区切って指定します。
ボーレートは、9600
/19200
/38400
/57600
/115200
/230400
から選択できます。他の値を指定すると、誤差が生じる可能性があります。
パリティはN
: 無し、O
: Odd(奇数)、E
: Even(偶数)を設定します。ハードウェアフローは設定できません。8N1, 7E2 などと設定できますが、8N1 以外の設定は未検証です。事前に動作をご確認ください。
115200,8N1
を適用します。o
:オプションビット
32bit の数値を指定します。各ビットに紐付いた設定を有効化できます。
対象ビット | 設定項目 | 初期 |
---|---|---|
0x00000200 | UART代替設定の有効化 | 0️⃣ |
0x00000400 | 定期送信パケットの出力を停止 | 0️⃣ |
0x00001000 | 暗号化通信の有効化 | 0️⃣ |
0x00002000 | 暗号化通信時の平文受信を有効化 | 0️⃣ |
k
:暗号化鍵
オプションビットの暗号化通信の有効化を設定した場合の暗号化鍵を32bitの16進数で指定します。
m
:動作モード
0
は親機モード、1
は中継機モードへ設定します。
中継機モードで多段中継を行うときには、2
-63
とすることで中継機のレイヤを指定できます。
A
:中継先
中継機モードで静的ルーティングを行うときに接続する上位段の端末のシリアルID(0x8???????
)を指定します。このとき、0x00000000
とした場合は自動検索します。
オプションビットの詳細
オプションビットの値の各ビットに紐付いた設定を解説します。
00000200
:UART代替設定の有効化
b
:UART代替設定を有効とします。
00000400
:定期送信パケットの出力を停止
超簡単!標準アプリとリモコンアプリの1秒毎の定期送信と連続モード時のUART出力を停止します。
00001000
:暗号化通信の有効化
暗号化通信を有効にします。相手側の暗号化通信も有効化する必要があります。
00002000
:暗号化通信時の平文受信を有効化
暗号化通信を有効とした際に、暗号化していないパケットも受信するようにします。
1.3.3 - リモコンアプリ マニュアル
1.3.3.1 - リモコンアプリ マニュアル
資料の取り扱いについてをご覧ください。
お気付きの点がございましたら、当社サポート窓口へお問い合わせください。
導入方法
リモコンアプリ(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.3.3.1.1 - リモコンアプリのピン配置
TWELITE / TWELITE DIP
リモコンアプリが使用するピンの機能を、下図の超簡単!標準アプリのピン名を使って表します。
DIP # | IO | 標準 | リモコン | 機能 |
---|---|---|---|---|
1 | GND | GND | GND | 電源入力 |
2 | DIO14 | SCL | I9 /O9 | デジタル入出力 |
3 | DIO7 | RX | RX | シリアル入出力 |
4 | DIO5 | PWM | I11 /O11 | デジタル入出力 |
5 | DIO18 | DO1 | I5 /O1 | デジタル入出力 |
6 | DO0 | PWM | LED | ステータスLED出力 |
7 | DO1 | M3 | ||
8 | DIO19 | DO2 | I6 /O2 | デジタル入出力 |
9 | DIO4 | DO3 | I7 /O3 | デジタル入出力 |
10 | DIO6 | TX | TX | シリアル入出力 |
11 | DIO8 | PWM | I12 /O12 | デジタル入出力 |
12 | DIO9 | DO4 | I8 /O4 | デジタル入出力 |
13 | DIO10 | M1 | M1 | モード設定入力 |
14 | GND | GND | GND | 電源入力 |
28 | VCC | VCC | VCC | 電源入力 |
27 | DIO3 | M3 | M3 | モード設定入力 |
26 | DIO2 | M2 | M2 | モード設定入力 |
25 | DIO1 | AI4 | C2 | チャネル設定入力 |
24 | ADC2 | AI3 | ||
23 | DIO0 | AI2 | C1 | チャネル設定入力 |
22 | ADC1 | AI1 | ||
21 | RESETN | RST | RST | リセット入力 |
22 | DIO17 | BPS | BPS | 代替ボーレート設定入力 |
19 | DIO15 | SDA | I10 /O10 | デジタル入出力 |
18 | DIO16 | DI4 | I4 /O8 | デジタル入出力 |
17 | DIO11 | DI3 | I3 /O7 | デジタル入出力 |
16 | DIO13 | DI2 | I2 /O6 | デジタル入出力 |
15 | DIO12 | DI1 | I1 /O5 | デジタル入出力 |
電源入力
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)の送信と受信に使用します。
ステータスLED出力
アプリケーションID自動設定時のステータス出力を行う際に使用します。
出力が Lo のとき光るようにしてください(吸い込み方式)。
設定入力
モード設定入力
Mx
ピンを未接続またはGND
へ接続することで、親機、子機、中継機といった動作モードを切り替えることができます。
代替ボーレート設定入力
BPS
ピンを未接続またはGND
へ接続することで、UART のボーレート(通信速度)を 115200bps 以外の値へ変更できます。
チャネル設定入力
一時的に周波数チャネルを上書きします。
C2 | C1 | 周波数チャネル |
---|---|---|
未接続 | 未接続 | 既定値(初期値は16) |
未接続 | GND | 12 |
GND | 未接続 | 21 |
GND | GND | 25 |
リセット入力
RST
とGND
との間にプッシュボタンを接続することで、リセットボタンを実装できます。RST
は内部プルアップされています。
1.3.3.1.2 - リモコンアプリの動作モード
動作モードの一覧
各モードは、Mx
ピンを未接続または GND
へ接続することで設定します。
M3 | M2 | M1 | モード | 機能 | 省電力 | LID |
---|---|---|---|---|---|---|
O | O | O | 子機: | 入力状態を親機へ | 120 | |
O | O | G | 親機: | 入力状態を子機へ | 0 | |
O | G | O | 中継機: | 122 | ||
O | G | G | 子機: | 頻繁に入力状態を親機へ | 123 | |
G | O | O | 子機: | 1秒おきに入力状態を親機へ | ✅ | 124 |
G | G | O | (ペアリングモード) | 詳細 | ||
G | G | G | 子機: | 10秒おきに入力状態を親機へ | ✅ | 127 |
O:未接続(OPEN)、G:
GND
へ接続
初期状態は子機:連続モードです。
モードによって端末を識別するための論理デバイスID(LID)の初期値は異なります。
親機または中継機モードに限り、インタラクティブモードで切り替えできます。
親機は121
、中継機は122
としてください。
親機
連続モード
親機:連続モード
信号入力の変化を検知したとき、また1秒おきに、すべての子機へデータを送信します。
また子機から送信されるデータを常時待機しており、反応がよいものの、常に電力を消費します。
- 受信:常に待機
- 送信:入力変化時/1秒おき
子機
連続モード
子機:連続モード
信号入力の変化を検知したとき、また1秒おきに、すべての親機へデータを送信します。
また親機から送信されるデータを常時待機しており、反応がよいものの、常に電力を消費します。
- 受信:常に待機
- 送信:入力変化時/1秒おき
定期送信の無効化
0x00000020
を設定することで、1秒おきの定期送信を無効化できます。子機:連続0.03秒モード
子機:連続モードの定期送信の間隔は1秒ですが、これを0.03秒に短縮するモードです。
親機から送信されるデータを常時待機しているものの、子機から親機への通信で帯域を占有してしまうため、親機の入力に対する反応は鈍くなってしまいます。常に電力を消費します。
- 受信:常に待機
- 送信:入力変化時/0.03秒おき
間欠モード
子機:間欠1秒モード
信号入力の変化を検知したとき、また1秒おきに節電モードを解除し、すべての親機へデータを送信します。
受信機能を無効とするため、親機の制御を受けることはできません。省電力性能に優れたモードです。
- 受信:無効
- 送信:入力変化時/1秒おき
子機:間欠10秒モード
信号入力の変化を検知したとき、また10秒おきに節電モードを解除し、すべての親機へデータを送信します。
受信機能を無効とするため、親機の制御を受けることはできません。省電力性能に優れたモードです。
- 受信:無効
- 送信:入力変化時/10秒おき
中継機
連続モード
中継機:連続モード
中継機は、受信したパケットを送信します。
親機と子機の間に3つまで設置できますが、中継機を増やすとパケットの数が増大するため、干渉しやすくなることに注意してください。
- 受信:常に待機
- 送信:受信時
1.3.3.1.3 - リモコンアプリの代替ボーレート設定
代替ボーレート設定の有効化
BPS
ピンを GND
へ接続することで、代替ボーレート設定を有効化できます。
BPS | 内容 | ボーレート | 備考 |
---|---|---|---|
O | デフォルト | 115200bps | |
G | 上書き設定 | 38400bps | 変更可 |
O:未接続(OPEN)、G:
GND
へ接続
BPS
ピンが GND
に接続されていないと、インタラクティブモードの設定値は適用されません。1.3.3.1.4 - リモコンアプリの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 がLo |
004F | 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 入出力
- オプションビット
0x00010000
子機の受信を強制的に有効化 を有効として、子機の受信機能を有効化する必要があります - オプションビット
0x00020000
入出力変化時のUART出力の停止 を有効とすれば、入力変化時のメッセージを無視できます - 子機間で通信できます。子機を特定するには、子機へユニークな論理デバイスIDを割り当てます
1.3.3.1.5 - リモコンアプリのカスタムデフォルト機能
例えば、ボーレートを 115200bps から 9600bps へ変更したファームウェアを作成しておけば、最初から 9600bps で使用できます。
設定手順
1. 設定を適用
インタラクティブモードの設定を変更し、S
を押下して保存します。
2. 設定内容をダウンロード
xmodem プロトコルのデータをダウンロードできるソフトウェアを用意します。
再度インタラクティブモードへ入った状態(項目を選ぶ前の状態)として、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 ---
1.3.3.1.6 - リモコンアプリのペアリング機能
「ペアリング」といっても、Bluetooth のペアリングとは異なります。
あくまでもアプリケーションIDを共有するだけであり、同報通信の仕組みは変わりません。
設定方法
親機のシリアルIDに基づいたアプリケーションIDを生成し、それを子機へ流し込むことでグループを作成します。LED
ピンへ LED を接続すると、設定の成否を確認できます。
- 親機と子機の
LED
へ LED と 電流制限抵抗(680Ω)を接続する(吸い込み) M1
を開放したまま、M2
とM3
をGND
へ接続する- 親機の電源を入れて、LED の点滅を確認する
- 5秒以内に親機の近くで子機の電源を入れ、LED が消灯することを確認する(失敗すると点灯)
1.3.3.1.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 | 0x67720107 | 32bit |
i | 論理デバイスID | 120 | 親機121 ,子機1 -100 ,IDなし子機120 ,未設定0 |
c | 周波数チャネル | 16 | 11 -26 |
x | 再送回数と送信出力 | 3 | |
再送回数 | 0 | 1 -9 回、0 はデフォルト:2回 | |
送信出力 | 3 | 0 -3 | |
t | 子機間欠1秒モードの間隔 | 1000 | 100 -64000 ms |
y | 子機間欠10秒モードの間隔 | 0 | 2 -10000 s, 無効0 |
f | 子機連続0.03秒モードのサイクル | 32 | 4 /8 /16 /32 回毎秒 |
d | ホールド/長押しモードの対象 | 000000000000 | 右からI1 -I2 , 有効1 |
D | ホールド/長押しモードの時間 | 1000 | 20 -64000 ms |
o | オプションビット | 0x00000000 | その他の詳細設定 |
b | UART代替ボーレート | 38400 | BPS ピンで有効化 |
p | UARTパリティ | 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
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 の数値を指定します。各ビットに紐付いた設定を有効化できます。
対象ビット | 設定項目 | 初期 | 送信 | 受信 | 連続 | 間欠 |
---|---|---|---|---|---|---|
0x00000001 | 低レイテンシモード | 0️⃣ | ✅ | ✅ | ✅ | |
0x00000002 | 低レイテンシモード(スリープ割り込み) | 0️⃣ | ✅ | ✅ | ||
0x00000010 | ACKつき送信の有効化 | 0️⃣ | ✅ | ✅ | ✅ | |
0x00000020 | 定期送信の無効化 | 0️⃣ | ✅ | ✅ | ||
0x00000100 | リモコン長押しモードの有効化 | 0️⃣ | ✅ | ✅ | ✅ | ✅ |
0x00000200 | C1 /C2 チャネル切り替えの無効化 | 0️⃣ | ✅ | ✅ | ✅ | ✅ |
0x00000400 | Ix の入力を反転 | 0️⃣ | ✅ | ✅ | ✅ | |
0x00000800 | Ix の内部プルアップを停止 | 0️⃣ | ✅ | ✅ | ✅ | |
0x00001000 | 子機:8入力4出力/親機:8出力4入力 | 0️⃣ | ✅ | ✅ | ✅ | ✅ |
0x00002000 | 子機:6入力6出力/親機:6出力6入力 | 0️⃣ | ✅ | ✅ | ✅ | ✅ |
0x00003000 | 子機:0入力12出力/親機:0出力12入力 | 0️⃣ | ✅ | ✅ | ✅ | ✅ |
0x00010000 | 子機の受信を強制的に有効化 | 0️⃣ | ✅ | ✅ | ||
0x00020000 | 入出力変化時のUART出力の停止 | 0️⃣ | ✅ | ✅ | ||
0x00040000 | C2 のウォッチドッグ出力を有効化 | 0️⃣ | ✅ | ✅ | ✅ | |
0x00400000 | Ox の出力を反転 | 0️⃣ | ✅ | ✅ | ✅ |
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秒モードにおいて、定期起床を無効としたとき、ボタンの押し下げを検出するためにホールドモードと合わせて利用します。
子機のみ有効です。
0x00000001
の設定を使用してください。0x00000010
:ACKつき送信の有効化
子機から ACK を有効とした通信を行います。親機が ACK を返した時点で送信は終了します。
複数台の親機やすべての中継機は利用できませんが、親機と安定して通信できる環境では効率のよい通信を実現できます。
子機間欠10秒モードの場合、BPS
ピンが出力ピンとして設定されるため、子機側のボーレートの上書きはできません。
0x00000020
:定期送信の無効化
子機連続モードにおける1秒おきの定期送信を無効化します。
0x00000100
:リモコン長押しモードの有効化
ホールドモードの代わりに、リモコン長押しモードを適用します。
0x00000200
:C1
/C2
チャネル切り替えの無効化
C1
/C2
ピンによるチャネル切り替え機能を停止します。
0x00000400
:Ix
の入力を反転
入力が Hi のとき1
を、Lo のとき0
を送信します。
0
を、 Lo のとき1
を送信します。0x00000800
:Ix
の内部プルアップを停止
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出力の停止
入出力変化時のメッセージ出力を停止します
0x00040000
:C2
のウォッチドッグ出力を有効化
C2
ポートからウォッチドッグ出力を行います。
アプリケーションループでIOを制御し、約32Hzの矩形波を出力します。
モジュールのハングアップに備えて、自動復帰のために外部のリセット回路を接続し、モジュールを強制的にリセットする際に使用します。
0x00400000
:Ox
の出力を反転
受信した入力ポートの状態が 0
のとき Lo を、1
のとき Hi を出力します。
0
のとき Hi を、1
のとき Lo を出力します。1.3.4 - シリアル通信アプリ マニュアル
1.3.4.1 - シリアル通信アプリ マニュアル
資料の取り扱いについてをご覧ください。
お気付きの点がございましたら、当社サポート窓口へお問い合わせください。
ダウンロード
シリアル通信アプリ(App_Uart
)を導入するには TWELITE STAGE SDK をインストールして、TWELITE STAGE アプリを使って書き換えてください。
1.3.4.1.1 - シリアル通信アプリのピン配置
TWELITE / TWELITE DIP
シリアル通信アプリが使用するピンの機能を、下図の超簡単!標準アプリのピン名を使って表します。
シリアル通信 | 超簡単!標準 | 機能 |
---|---|---|
VCC GND | VCC GND | 電源入力 |
TX RX | TX RX | シリアル入出力 |
TX_SUB RX_SUB | SCL SDA | シリアル副入出力 |
RTS | PWM1 | シリアル入力許可 |
M1 | M1 | 親機/子機の選択 |
M2 | M2 | 子機へ中継機能を付与 |
M3 | M3 | スリープ |
EX1 | AI2 | 動作モードの上書き |
BPS | BPS | 代替ボーレート設定の有効化 |
RST | RST | リセット入力 |
電源入力
VCC
/GND
には、3.3V(2.0-3.6V)の電源を接続します。
シリアル入出力
TX
/RX
は、シリアル通信(UART)の送信と受信に使用します。
シリアル副入出力
TX_SUB
(SCL
)/RX_SUB
(SDA
)は、シリアル入出力の副ポートとして利用できます。
シリアル入力許可
RTS
(PWM1
)が Low レベルのときは、RX
へのシリアル入力を受け付けていることを示します。
RX
への入力を抑制することで、取りこぼしを防ぐことが期待されます。親機/子機の選択
M1
をGND
へ接続すると親機、開放またはVCC
へ接続すると子機として使用できます。
インタラクティブモードによる設定
この接続を省略し、インタラクティブモードから設定することもできます。
i set Device ID
:0
子機へ中継機能を付与
M2
を子機設定のときにGND
へ接続することで、中継機能を付与できます。
インタラクティブモードによる設定
この接続を省略し、インタラクティブモードから設定することもできます。
r set Role
:1
または0x12
スリープ
M3
をGND
へ接続すると、本体をスリープさせることができます。
動作モードの上書き
EX1
を起動時に GND
へ接続しておくことで、動作モードを書式モード(バイナリ)へ上書きできます。
代替ボーレート設定の有効化
BPS
をGND
へ接続することで、インタラクティブモードで指定した代替ボーレート設定を有効化できます。
リセット入力
RST
とGND
との間にプッシュボタンを接続することで、リセットボタンを実装できます。RST
は内部プルアップされています。
TWELITE UART
シリアル通信アプリが使用するピンの機能を、基板に記載された7Pインタフェース(下図の②)のピン名を使って表します。
シルク | 機能 |
---|---|
VCC GND | 電源入力 |
TXD RXD | シリアル入出力 |
SET | 動作モードの上書き |
RST | リセット入力 |
電源入力
VCC
/GND
には、3.3V(2.0-3.6V)の電源を接続します。
シリアル入出力
TX
/RX
は、シリアル通信(UART)の送信と受信に使用します。
動作モードの上書き
SET
を起動時に GND
へ接続することで、動作モードを書式モード(アスキー)へ上書きできます。
リセット入力
RST
とGND
との間にプッシュボタンを接続することで、リセットボタンを実装できます。RST
は内部プルアップされています。
1.3.4.1.2 - シリアル通信アプリの通信モード
通信モードの一覧
各モードは、インタラクティブモードによって切り替えます(一部のモードはピン入力にて設定可能)。
ID | モード |
---|---|
A | 書式モード(アスキー) |
B | 書式モード(バイナリ) |
C | チャットモード |
D | 透過モード |
E | ヘッダ付き透過モード |
初期状態はヘッダ付き透過モードです。
モードに関わらず、送信データは80バイト以内としてください
パケットサイズの制約から、一度に送るデータはバイナリ換算で80バイト以内に収めてください。
TWELITE が採用する IEEE 802.15.4 のパケットの最大長は128バイトであり、オーバーヘッドを考慮するとシリアル通信アプリのペイロードに使用できる領域は80バイトに限られます。
大量のデータを送信する場合は、Wi-Fi などを利用した他社製品をご検討ください。TWELITE は少ないデータを効率よく送る用途に適しています。
A
:書式モード(アスキー)
送信側の端末へ特定の書式に従ったデータを入力すると、受信側の端末も特定の書式に従ったデータを出力します。
16進数で表すデータはアスキー文字列で表現します。
送信側の入力 | 受信側の出力 | |
---|---|---|
簡易形式/拡張形式のデータ | → | 簡易形式/拡張形式のデータ |
TWELITE UART では、SET
ピンを GND
へ接続して起動すると本モードが有効となります。
データを表現する形式は2種類あります。
- 簡易形式:論理デバイスIDだけを使用。超簡単!標準アプリのUART伝送機能と互換性あり
- 拡張形式:論理デバイスIDに加えて、シリアルIDや再送回数などの送信オプションを使用できる
例えば、5バイトのバイナリデータ 0x48 0x45 0x4C 0x4C 0x4F
は、簡易形式を使って次のように送信できます。
【送信側】
:000148454C4C4F8B <- 入力
:DBA1800103 <- 出力
【受信側】
:780148454C4C4F13 <- 出力
書式モードでは、アプリケーションIDなどの設定をインタラクティブモードだけでなく UART によるコマンド(アスキー形式)によって動的に適用できます。
B
:書式モード(バイナリ)
送信側の端末へ特定の書式に従ったデータを入力すると、受信側の端末も特定の書式に従ったデータを出力します。
16進数で表すデータはそのままバイナリ形式で表現します。
送信側の入力 | 受信側の出力 | |
---|---|---|
簡易形式/拡張形式のデータ | → | 簡易形式/拡張形式のデータ |
TWELITE / TWELITE DIP では、EX1
ピンを GND
へ接続して起動すると本モードが有効となります。
書式モード(アスキー)と同様に、データを表現する形式は2種類あります。
例えば、5バイトのバイナリデータ 0x48 0x45 0x4C 0x4C 0x4F
は、簡易形式を使って次のように送信できます。
【送信側】
0xA5 0x5A 0x00 0x07 0x00 0x01 0x48 0x45 0x4C 0x4C 0x4F 0x43 0x04 <- 入力
0xA5 0x5A 0x00 0x04 0xDB 0xA1 0x80 0x01 0xFB 0x04 <- 出力
【受信側】
0xA5 0x5A 0x00 0x07 0x78 0x01 0x48 0x45 0x4C 0x4C 0x4F 0x3B 0x04 <- 出力
書式モードでは、アプリケーションIDなどの設定をインタラクティブモードだけでなく UART によるコマンド(バイナリ形式)によって動的に適用できます。
C
:チャットモード
テキストチャットを実現します。
送信側の入力 | 受信側の出力 | |
---|---|---|
任意の文字列 | → | 補助情報+任意の文字列 |
プロンプトの表示とエコーバック(入力した文字の出力)を行います。すべての端末は子機として、同報通信を行います。
例えば、ある端末から他の端末へ Hello
という文字列を送信する場合は、次のように振る舞います。
【送信側】
810A4778:0> Hello <- 入力
810A4778:1> <- 出力
【受信側】
[810A4778:0] Hello <- 出力
82018CA0:0> <- 出力
上記の例ではプロンプトにシリアルIDを表示していますが、任意のハンドル名を使用することもできます。
D
:透過モード
送信側の端末へ任意のデータを入力すると、受信側の端末は受信したデータをそのまま出力します。
送信側の入力 | 受信側の出力 | |
---|---|---|
任意のデータ | → | 任意のデータ |
書式を必要としないため、既存の UART 通信を簡単に無線化できます。
一方で、データの区切りがあいまいになってしまうほか、受信側の出力から送信元を判別できないといった欠点があります。
初期状態では、送信側へ入力されたデータをCRLFで区切り、CRLF よりも前のデータを送信します。
例えば、送信側の端末へ Hello<Enter>
と入力すると、受信側の端末はそのまま Hello
を出力します。
【送信側】
Hello <- 入力
【受信側】
Hello <- 出力
E
:ヘッダ付き透過モード
送信側の端末へ任意のデータを入力すると、受信側の端末は受信した内容に特定の書式で補助情報を付加したデータを出力します。
送信側の入力 | 受信側の出力 | |
---|---|---|
任意のデータ | → | 任意のデータ+補助情報 |
初期状態では、送信側へ入力されたデータをCRLFで区切り、CRLF よりも前のデータを送信します。
例えば、送信側の端末へ Hello<Enter>
と入力すると、受信側の端末は補助情報を含んだ書式で Hello
を出力します。送信側の端末も送信完了といったメッセージを伝える書式を出力します。
【送信側】
Hello <- 入力
;U;00004;219;0x820163B2;000;000;0,1,Hel...;6E; <- 出力
【受信側】
;U;00003;000;0x820163B2;255;000;Hello;42; <- 出力
受信側が出力する補助情報は、送信元のアドレスや受信時の電波強度、チェックサム等を含みます。補助情報の書式はカスタマイズできます。
1.3.4.1.2.1 - シリアル通信アプリの書式モード(アスキー形式)
概要
送信側の端末へ特定の書式に従ったデータを入力すると、受信側の端末も特定の書式に従ったデータを出力します。
データは16進数のアスキー文字列で表現します。
送信側の入力 | 受信側の出力 | |
---|---|---|
簡易形式/拡張形式のデータ | → | 簡易形式/拡張形式のデータ |
- TWELITE UART では、
SET
ピンをGND
へ接続して起動すると書式モード(アスキー)が有効となります。 - TWELITE / TWELITE DIP では、
EX1
ピンをGND
へ接続して起動すると書式モード(バイナリ)が有効となります。
扱うことのできる書式の形式は2種類あります。
- 簡易形式:論理デバイスIDだけを使用する。超簡単!標準アプリのUART伝送機能と互換性あり
- 拡張形式:論理デバイスIDに加えて、シリアルIDや再送回数などの送信オプションを使用できる
例えば、5バイトのバイナリデータ 0x48 0x45 0x4C 0x4C 0x4F
は、簡易形式を使って次のように送信できます。
【送信側】
:000148454C4C4F8B <- 入力
:DBA1800103 <- 出力
【受信側】
:780148454C4C4F13 <- 出力
基本の書式
基本形式や拡張形式で表現したデータ列を送信するときは、アスキー文字列(0-9,A-F)へ変換します。
書式は超簡単!標準アプリ(App_Twelite)や親機・中継機アプリ(App_Wings)の親機の出力と同様に、:
で始まりCRLFで終わります。
ヘッダ | ペイロード | チェックサム | フッタ |
---|---|---|---|
: | 00 -FF の繰り返し | ペイロードのLRC8 | CRLF |
- すべて ASCII 文字
- 先頭は
:
(0x3A
) - チェックサムはペイロードの合計の2の補数
- 末端は CRLF (
\r\n
/0x0D 0x0A
) - ビッグエンディアン
例えば、バイナリデータ 0x00 0x11 0x22 0x33 0xAA 0xBB 0xCC
は次のように表現します。
:00112233AABBCC69<CR><LF>
親機と子機の区別
書式モードは、親機と子機を区別します。
親子間では、アプリケーションIDと周波数チャネルを合わせる必要があります。
送信元の判別
書式モードでは、受信したデータから送信元を判別できます。
簡易形式の書式では論理デバイスIDを、拡張形式の書式では論理デバイスIDに加えて拡張アドレスを利用します。
0x8
を付加したものです。簡易形式の書式
書式モードの簡易形式を利用する場合は、次の書式に従います。
送信側の入力
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信先の論理デバイスID | 親機0x00 ,子機0x01 -0x64 ,全子機0x78 |
1 | uint8 | コマンド番号 | 0x80 未満の任意の値 |
2 | [uint8] | 任意のデータ | 長さ\(N\)のバイト列(\(N\leqq80\)を推奨) |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
0x01
コマンドの上位互換です。受信側の出力
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信元の論理デバイスID | 親機0x00 ,子機0x01 -0x64 ,未設定子機0x78 |
1 | uint8 | コマンド番号 | 送信側で指定した0x80 未満の値 |
2 | [uint8] | 任意のデータ | 長さ\(N\)のバイト列 |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
0x01
コマンドの上位互換です。送信側の出力(応答メッセージ)
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信元の論理デバイスID | 0xDB のみ:自身を示す |
1 | uint8 | コマンド番号 | 0xA1 のみ |
2 | uint8 | 応答ID | 128 -255 (0x80 -0xFF )の範囲で続き番号を示す |
3 | uint8 | 処理結果 | 成功1 ,失敗0 |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
使用例
親機から全子機に対してバイト列 0x11 0x22 0x33 0xAA 0xBB 0xCC
を送信する例を示します。
【送信側:親機】
:7801112233AABBCCF0<CR><LF> <- 入力
:DBA1800103<CR><LF> <- 出力
末尾の
0xF0
はチェックサム:0x78
から0xCC
までの合計の2の補数のLSBから8ビット。
【受信側:全子機】
:0001112233AABBCC68<CR><LF> <- 出力
末尾の
0x68
はチェックサム:0x00
から0xCC
までの合計の2の補数のLSBから8ビット。
拡張形式の書式
書式モードの拡張形式を利用する場合は、次の書式に従います。
送信側の入力
送信先の指定に論理デバイスIDを使用する場合
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信先の論理デバイスID | 親機0x00 ,子機0x01 -0x64 ,全子機0x78 |
1 | uint8 | コマンド番号 | 0xA0 のみ |
2 | uint8 | 応答ID | 任意の値 |
3 | [uint8] | オプション | 長さ\(N\)のオプション列 |
3+\(N\) | [uint8] | 任意のデータ | 長さ\(M\)のバイト列(\(M\leqq80\)を推奨) |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
送信先の指定に拡張アドレスを使用する場合
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 拡張アドレスの指定 | 0x80 のみ |
1 | uint8 | コマンド番号 | 0xA0 のみ |
2 | uint8 | 応答ID | 任意の値 |
3 | uint32 | 送信先の拡張アドレス | シリアルIDの先頭へ0x8 を加えた値 |
7 | [uint8] | オプション | 長さ\(N\)のオプション列 |
7+\(N\) | [uint8] | 任意のデータ | 長さ\(M\)のバイト列(\(M\leqq80\)を推奨) |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
オプション列の詳細
拡張形式では、オプション列を指定することで細かな設定を行うことができます。
オプション列は、オプションのIDと引数の繰り返しで表現します。終端は 0xFF
とします。
0xFF
の1バイトだけを指定します。ID | 引数 | 初期値 | 内容 |
---|---|---|---|
0x01 | なし | 無効 | MAC ACKの有効化 |
0x02 | uint8 | 0x00 | アプリケーション再送の有効化 |
0x03 | uint16 | 0x0000 | 初回送信の遅延の最小値 |
0x04 | uint16 | 0x0000 | 初回送信の遅延の最大値 |
0x05 | uint16 | 10 | アプリケーション再送の間隔 |
0x06 | なし | 無効 | 平行要求の許可 |
0x07 | なし | 無効 | 応答メッセージの無効化 |
0x08 | なし | 無効 | 送信後スリープ |
0x01
:MAC ACKの有効化
MAC層のACK(確認応答)を有効化します。
頻繁にデータを送信する場合には適しませんが、信頼性を向上できる場合があります。
0x78
)とするときは利用できません。0x02
:アプリケーション再送の有効化
MAC ACK を使用するときは、0x00
-0x0F
を指定します。送信に成功するまで、それぞれ0-16回の再送を行います。
MAC ACK を使用しないときは、0x81
-0x8F
を指定します。必ず1-16回の再送を行います。
応答メッセージは、すべての再送が終了してから出力します。
0x03
:初回送信の遅延の最小値
初回送信までの遅延の最小値をミリ秒で指定できます。
0x04
:初回送信の遅延の最大値
初回送信までの遅延の最大値をミリ秒で指定できます。
0x05
:アプリケーション再送の間隔
アプリケーション再送を有効化した際の再送間隔をミリ秒で指定します。
0x06
:平行要求の許可
平行要求を許可します。
平行要求を許可すると、要求を完了するまでブロックせず、次の要求処理を受け付けることができるようになります。
例えば 0.5 秒の遅延を設定した要求を3回連続して入力した場合、初期状態では 0.5 秒後、1.0秒後、1.5秒後と順番に処理します。ところが、平行要求を許可した場合は、0.5秒後に順不同で送信要求を処理します。なおパケット分割を必要とする場合は使用できません。
0x07
:応答メッセージの無効化
送信側へデータを入力した際に出力される応答メッセージを無効とします。
0x08
:送信後スリープ
送信後、速やかに本体をスリープさせます。
RX
が立ち上がりエッジを検知すると、スリープから復帰します。何か1バイトのデータを入力してください。
スリープ復帰後、UART の初期化が終わると入力を受け付けます。
受信側の出力
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信元の論理デバイスID | 親機0x00 ,子機0x01 -0x64 ,未設定子機0x78 |
1 | uint8 | コマンド番号 | 0xA0 のみ |
2 | uint8 | 応答ID | 送信側で指定した値 |
3 | uint32 | 送信元の拡張アドレス | シリアルIDの先頭へ0x8 を加えた値 |
7 | uint32 | 送信先の拡張アドレス | 論理デバイスID使用時は0xFFFFFFFF |
11 | uint8 | LQI | 受信時の電波通信品質 |
12 | uint16 | 続くバイト列の長さ | バイト数\(M\)を表す |
14 | [uint8] | 任意のデータ | 長さ\(M\)のバイト列 |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
送信側の出力(応答メッセージ)
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信元の論理デバイスID | 0xDB のみ:自身を示す |
1 | uint8 | コマンド番号 | 0xA1 のみ |
2 | uint8 | 応答ID | 入力時に指定した値 |
3 | uint8 | 処理結果 | 成功1 ,失敗0 |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
使用例
親機から子機に対してバイト列 0x11 0x22 0x33 0xAA 0xBB 0xCC
を送信する例を示します。
論理デバイスIDを指定する例
親機から論理デバイスID0x42
の子機へ送信する例を示します。
- 応答IDは
0x01
- オプションなし
- 親機の拡張アドレスは
0x81000000
(シリアルID0x1000000
)
【送信側:親機】
:42A001FF112233AABBCC87<CR><LF> <- 入力
:DBA1010182<CR><LF> <- 出力
末尾の
0x87
はチェックサム:0x42
から0xCC
までの合計の2の補数のLSBから8ビット。
【受信側:子機】
:00A00181000000FFFFFFFFC80006112233AABBCC7D<CR><LF> <- 出力
末尾の
0x7D
はチェックサム:最初の0x00
から0xCC
までの合計の2の補数のLSBから8ビット。
拡張アドレスを指定する例
親機から拡張アドレス0x81000001
(シリアルID0x1000001
)の子機へ送信する例を示します。
- 応答IDは
0x01
- オプションなし
- 親機の拡張アドレスは
0x81000000
(シリアルID0x1000000
)
【送信側:親機】
:80A00181000001FF112233AABBCCC7<CR><LF> <- 入力
:DBA1010182<CR><LF> <- 出力
末尾の
0xC7
はチェックサム:0x80
から0xCC
までの合計の2の補数のLSBから8ビット。
【受信側:子機】
:00A0018100000081000001C80006112233AABBCCF7<CR><LF> <- 出力
末尾の
0xF7
はチェックサム:最初の0x00
から0xCC
までの合計の2の補数のLSBから8ビット。
MAC ACKを使用する例
親機から論理デバイスID0x42
の子機へ MAC ACK を使用して送信する例を示します。
- 応答IDは
0x01
- オプションは
0x01
:MAC ACKの有効化を指定 - 親機の拡張アドレスは
0x81000000
(シリアルID0x1000000
)
【送信側:親機】
:42A00101FF112233AABBCC86<CR><LF> <- 入力
:DBA1010182<CR><LF> <- 出力
末尾の
0x86
はチェックサム:0x42
から0xCC
までの合計の2の補数のLSBから8ビット。
【受信側:子機】
:00A00181000000FFFFFFFFC80006112233AABBCC7D<CR><LF> <- 出力
末尾の
0x7D
はチェックサム:0x00
から0xCC
までの合計の2の補数のLSBから8ビット。
遅延を設ける例
親機から論理デバイスID0x42
の子機へ 768ms の遅延を設けて送信する例を示します。
- 応答IDは
0x01
- オプションは
0x03
:初回送信の遅延の最小値を指定 - 親機の拡張アドレスは
0x81000000
(シリアルID0x1000000
)
【送信側:親機】
:42A001030300FF112233AABBCC81<CR><LF> <- 入力
:DBA1010182<CR><LF> <- 出力
末尾の
0x81
はチェックサム:0x42
から0xCC
までの合計の2の補数のLSBから8ビット。
【受信側:子機】
:00A00181000000FFFFFFFFC80006112233AABBCC7D<CR><LF> <- 出力
末尾の
0x7D
はチェックサム:0x00
から0xCC
までの合計の2の補数のLSBから8ビット。
0xDB
コマンド
インタラクティブモードの設定を行う代わりに、UART から 0xDB
コマンドを入力することでモジュールの操作や設定を行うことができます。
1.3.4.1.2.1.1 - シリアル通信アプリ 書式モード(アスキー)の 0xDB コマンド
0xDB
コマンドを使うことで、UART接続されたデバイスから動的に設定を行えます。入力の書式
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信先の論理デバイスID | 自身を示す0xDB のみ |
1 | uint8 | コマンド番号 | 後述の値から選択 |
2 | [uint8] | パラメータ | 設定値を示す長さ\(N\)のバイト列(オプション) |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
コマンド番号の一覧
機能 | |
---|---|
0xF0 | ACKの有効化 |
0xF1 | 端末情報の取得 |
0xF2 | 端末設定の適用 |
0xF3 | 端末設定の取得 |
0xF8 | 端末の制御 |
0xFD | 端末設定の消去 |
0xFE | 端末設定の保存 |
0xFF | 端末のリセット |
0xF0
:ACKの有効化
ACK 応答の要求を行います。
パラメータはありません。
応答の書式
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信先の論理デバイスID | 0xDB のみ |
1 | uint8 | コマンド番号 | 0xF0 のみ |
2 | uint8 | データ | 0x01 のみ |
uint8 | チェックサム | 0x34 :LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
0xF1
:端末情報の取得
アドレス等の情報を表示します。起動時にも出力されます。
パラメータはありません。
応答の書式
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信先の論理デバイスID | 0xDB のみ |
1 | uint8 | コマンド番号 | 0xF1 のみ |
2 | uint32 | アプリケーションID | |
6 | uint32 | バージョン番号 | 1.4.7 なら00010407 |
10 | uint8 | 論理デバイスID | |
11 | uint32 | シリアルID | |
15 | uint8 | サイレントモードの状態 | 有効1 , 無効0 |
16 | uint8 | ネットワークの状態 | UP1 , DOWN0 |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
0xF2
:端末設定の適用
設定を適用します。
応答の書式
成功した場合
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信先の論理デバイスID | 0xDB のみ |
1 | uint8 | コマンド番号 | 0xF3 のみ |
2 | [uint8] | 設定内容 | 長さ\(N\)の識別子とデータの繰り返し |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
失敗した場合
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信先の論理デバイスID | 0xDB のみ |
1 | uint8 | コマンド番号 | 0xF3 のみ |
2 | uint8 | エラー | 0xFF のみ |
uint8 | チェックサム | 0x33 :LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
0xF3
:端末設定の取得
設定を取得します。
応答の書式
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信先の論理デバイスID | 0xDB のみ |
1 | uint8 | コマンド番号 | 0xF3 のみ |
2 | [uint8] | 設定内容 | 識別子とデータの繰り返し |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
0xF8
:端末の制御
起動時にサイレントモードを有効としていた場合に、これを解除します。
0x10
を指定してください。応答の書式
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信先の論理デバイスID | 0xDB のみ |
1 | uint8 | コマンド番号 | 0xF8 のみ |
2 | uint8 | データ | 0x11 のみ |
3 | uint8 | 状態 | 解除済み1 , 未解除0 |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
0xFD
:端末設定の消去
設定を初期化し、本体をリセットします。
パラメータおよび応答はありません。
0xFE
:端末設定の保存
適用した設定を保存し、本体をリセットします。
パラメータおよび応答はありません。
0xFF
:端末のリセット
適用した設定を破棄し、本体をリセットします。
パラメータおよび応答はありません。
パラメータの一覧(0xF2
/0xF3
)
0xF2
:端末設定の適用 および 0xF3
:端末設定の取得 のパラメータは、識別子とデータ(ビッグエンディアン)の繰り返しで表現します。
識別子 | データ | 内容 |
---|---|---|
0x00 | uint32 | アプリケーションID |
0x01 | uint32 | 周波数チャネルマスク |
0x02 | uint16 | 再送回数と出力 |
0x03 | uint8 | 論理デバイスID |
0x04 | uint8 | 役割 |
0x05 | uint8 | 中継レイヤ |
0x06 | uint8 | 通信モード |
0x07 | uint32 | ボーレート |
0x08 | uint8 | パリティ |
0x09 | uint8 | 暗号化機能 |
0x0A | [uint8] | 暗号化キー |
0x0C | uint16 | 区切り文字 |
0xFF | uint8 | エラー |
0x00
:アプリケーションID
アプリケーションIDを指定します。
0x01
:周波数チャネルマスク
周波数チャネルのビットマスクを指定します。
使用するチャネルのビットを立てます。例えば、11チャネルを使う場合は1<<11
です。
0x02
:再送回数と出力
電波の送信出力と、透過モードおよびヘッダ付き透過モードにおいてパケットを追加で送信する回数を指定します。
下位の1バイトのみを使用します。そのうち上位の4ビットが再送回数(0
-9
)、下位の4ビットが送信出力(0
-3
)です。例えば、8回再送/出力3 であれば 0x0083
です。
0x03
:論理デバイスID
論理デバイスIDを指定します。
0x04
:役割
子機のみ有効です。以下の値を指定します。通常はネットワーク層を利用しない配送方式を選択してください。
ネットワーク層を利用しない配送方式
0
:通常の指定(親機または子機)1
-3
:中継子機(論理デバイスIDを1
-100
または120
とします)1
-3
の数値は最大中継段数を指します。最大中継段数まで再送を繰り返す方式のため、中継機の配置や数によっては重複したパケットを中継します。
ネットワーク層を利用する配送方式
11
:親機12
:中継機13
:子機
80
を足してください。例えば 93
は「ネットワーク層利用かつサイレントモード」です。0x05
:中継レイヤ
中継レイヤの番号です。中継機は中継レイヤ数の上位(より小さい値)の中継機・親機への接続を試みます。役割を12
としているときにだけ有効です。
0x06
:通信モード
0
:透過モード1
:書式モード(アスキー)2
:書式モード(バイナリ)3
:チャットモード4
:ヘッダ付き透過モード
0x07
:ボーレート
UART ボーレートを指定します。
0x08
:パリティ
以下の設定の組み合わせにおいて、設定値の総和を指定します。
- Bit
0
:8Bit8
:7Bit
- Parity
0
:None1
:Odd2
:Even
- Stop
0
:STOP 14
:STOP 2
例えば、7-E-1 なら 8+2+0=10(0xA)
を指定します。
0x09
:暗号化機能
暗号化機能の有無を指定します。
0
:無効1
:AES128bit の暗号化を有効
0x0A
:暗号化キー
16バイトの暗号化キーを指定します。
インタラクティブモードでは設定できないバイナリ列を格納できます。この場合、インタラクティブモードの表示が崩れる場合があります。
0x0C
:区切り文字
区切り文字列の指定を行います(0x00
-0xFF
)。
サイレントモード
0xDB
コマンドによる設定を完了してから受信を始める際に利用します。設定方法
インタラクティブモードで以下の設定を行います。
r: Role
に80
を足しておく。例えば、通常の親機や子機なら80
とする。m: UART mode
を書式モード(A
/B
)としておく。
動作確認
起動直後に出力される DB F1 応答の内容を確認します。
解除方法
DB F8 要求を行います(アスキー形式::DBF8101D<CR><LF>
)。
注意点
- サイレントモードの再設定はできません。
- サイレントモードが有効のときに送信コマンドを入力した場合の動作は未定義です。
1.3.4.1.2.2 - シリアル通信アプリの書式モード(バイナリ形式)
概要
送信側の端末へ特定の書式に従ったデータを入力すると、受信側の端末も特定の書式に従ったデータを出力します。
16進数で表すデータは、バイナリデータのまま表現します。
送信側の入力 | 受信側の出力 | |
---|---|---|
簡易形式/拡張形式のデータ | → | 簡易形式/拡張形式のデータ |
- TWELITE UART では、
SET
ピンをGND
へ接続して起動すると書式モード(アスキー)が有効となります。 - TWELITE / TWELITE DIP では、
EX1
ピンをGND
へ接続して起動すると書式モード(バイナリ)が有効となります。
扱うことのできる書式の形式は2種類あります。
- 簡易形式:論理デバイスIDだけを使用。超簡単!標準アプリのUART伝送機能と互換性あり
- 拡張形式:論理デバイスIDに加えて、シリアルIDや再送回数などの送信オプションを使用できる
例えば、5バイトのバイナリデータ 0x48 0x45 0x4C 0x4C 0x4F
は、簡易形式を使って次のように送信できます。
以降、バイナリデータ表現の 0x
を省略します。
例えば、0x48 0x45 0x4C 0x4C 0x4F
は 48 45 4C 4C 4F
と表します。
【送信側】
A5 5A 80 07 00 01 48 45 4C 4C 4F 43 04 <- 入力
A5 5A 80 04 DB A1 80 01 FB 04 <- 出力
【受信側】
A5 5A 80 07 78 01 48 45 4C 4C 4F 3B 04 <- 出力
基本の書式
基本形式や拡張形式で表現したデータ列を送信するときは、バイナリデータのまま扱います。
ヘッダ | 長さ | ペイロード | チェックサム | フッタ |
---|---|---|---|---|
A5 5A | ペイロード長 | 00 -FF の繰り返し | ペイロードのXOR | EOT |
- すべてバイナリ
- 先頭は
A5 5A
の2バイト - ペイロード長はバイト数を2バイトで表現、
0x8000
とORをとる - チェックサムはペイロードのXOR
- 末端は EOT を表す
0x04
(入力時は省略可) - ビッグエンディアン
例えば、バイナリデータ 00 11 22 33 AA BB CC
は次のように表現します。
A5 5A 80 07 00 11 22 33 AA BB CC DD 04
デバッグが面倒ですが、マイコン間の通信では高い効率を誇ります。
親機と子機の区別
書式モードは、親機と子機を区別します。
親子間では、アプリケーションIDと周波数チャネルを合わせる必要があります。
送信元の判別
書式モードでは、受信したデータから送信元を判別できます。
簡易形式の書式では論理デバイスIDを、拡張形式の書式では論理デバイスIDに加えて拡張アドレスを利用します。
0x8
を付加したものです。簡易形式の書式
書式モードの簡易形式を利用する場合は、次の書式に従います。
送信側の入力
# | データ | 内容 | 備考 |
---|---|---|---|
uint8 | ヘッダ | 0xA5 のみ | |
uint8 | ヘッダ | 0x5A のみ | |
uint16 | データ長 | \(N\)+2 | |
0 | uint8 | 送信先の論理デバイスID | 親機0x00 ,子機0x01 -0x64 ,全子機0x78 |
1 | uint8 | コマンド番号 | 0x80 未満の任意の値 |
2 | [uint8] | 任意のデータ | 長さ\(N\)のバイト列(\(N\leqq80\)を推奨) |
uint8 | チェックサム | XOR | |
uint8 | フッタ | EOT (0x04 ) |
受信側の出力
# | データ | 内容 | 備考 |
---|---|---|---|
uint8 | ヘッダ | 0xA5 のみ | |
uint8 | ヘッダ | 0x5A のみ | |
uint16 | データ長 | \(N\)+2 | |
0 | uint8 | 送信元の論理デバイスID | 親機0x00 ,子機0x01 -0x64 ,未設定子機0x78 |
1 | uint8 | コマンド番号 | 送信側で指定した0x80 未満の値 |
2 | [uint8] | 任意のデータ | 長さ\(N\)のバイト列 |
uint8 | チェックサム | XOR | |
uint8 | フッタ | EOT (0x04 ) |
送信側の出力(応答メッセージ)
# | データ | 内容 | 備考 |
---|---|---|---|
uint8 | ヘッダ | 0xA5 のみ | |
uint8 | ヘッダ | 0x5A のみ | |
uint16 | データ長 | 4 | |
0 | uint8 | 送信元の論理デバイスID | 0xDB のみ:自身を示す |
1 | uint8 | コマンド番号 | 0xA1 のみ |
2 | uint8 | 応答ID | 128 -255 (0x80 -0xFF )の範囲で続き番号を示す |
3 | uint8 | 処理結果 | 成功1 ,失敗0 |
uint8 | チェックサム | XOR | |
uint8 | フッタ | EOT (0x04 ) |
使用例
親機から全子機に対してバイト列 11 22 33 AA BB CC
を送信する例を示します。
【送信側:親機】
A5 5A 80 08 78 01 11 22 33 AA BB CC A4 04 <- 入力
A5 5A 80 04 DB A1 80 01 FB 04 <- 出力
末尾の
0xA4
はチェックサム:0x78
から0xCC
までのXOR。
【受信側:全子機】
A5 5A 80 08 00 01 11 22 33 AA BB CC DC 04 <- 出力
末尾の
0xDC
はチェックサム:0x00
から0xCC
までのXOR。
拡張形式の書式
書式モードの拡張形式を利用する場合は、次の書式に従います。
送信側の入力
送信先の指定に論理デバイスIDを使用する場合
# | データ | 内容 | 備考 |
---|---|---|---|
uint8 | ヘッダ | 0xA5 のみ | |
uint8 | ヘッダ | 0x5A のみ | |
uint16 | データ長 | \(N\)+\(M\)+3 | |
0 | uint8 | 送信先の論理デバイスID | 親機0x00 ,子機0x01 -0x64 ,全子機0x78 |
1 | uint8 | コマンド番号 | 0xA0 のみ |
2 | uint8 | 応答ID | 任意の値 |
3 | [uint8] | オプション | 長さ\(N\)のオプション列 |
3+\(N\) | [uint8] | 任意のデータ | 長さ\(M\)のバイト列(\(M\leqq80\)を推奨) |
uint8 | チェックサム | XOR | |
uint8 | フッタ | EOT (0x04 ) |
送信先の指定に拡張アドレスを使用する場合
# | データ | 内容 | 備考 |
---|---|---|---|
uint8 | ヘッダ | 0xA5 のみ | |
uint8 | ヘッダ | 0x5A のみ | |
uint16 | データ長 | \(N\)+\(M\)+7 | |
0 | uint8 | 拡張アドレスの指定 | 0x80 のみ |
1 | uint8 | コマンド番号 | 0xA0 のみ |
2 | uint8 | 応答ID | 任意の値 |
3 | uint32 | 送信先の拡張アドレス | シリアルIDの先頭へ0x8 を加えた値 |
7 | [uint8] | オプション | 長さ\(N\)のオプション列 |
7+\(N\) | [uint8] | 任意のデータ | 長さ\(M\)のバイト列(\(M\leqq80\)を推奨) |
uint8 | チェックサム | XOR | |
uint8 | フッタ | EOT (0x04 ) |
オプション列の詳細
拡張形式では、オプション列を指定することで細かな設定を行うことができます。
オプション列は、オプションのIDと引数の繰り返しで表現します。終端は 0xFF
とします。
0xFF
の1バイトだけを指定します。ID | 引数 | 初期値 | 内容 |
---|---|---|---|
0x01 | なし | 無効 | MAC ACKの有効化 |
0x02 | uint8 | 0x00 | アプリケーション再送の有効化 |
0x03 | uint16 | 0x0000 | 初回送信の遅延の最小値 |
0x04 | uint16 | 0x0000 | 初回送信の遅延の最大値 |
0x05 | uint16 | 10 | アプリケーション再送の間隔 |
0x06 | なし | 無効 | 平行要求の許可 |
0x07 | なし | 無効 | 応答メッセージの無効化 |
0x08 | なし | 無効 | 送信後スリープ |
0x01
:MAC ACKの有効化
MAC層のACK(確認応答)を有効化します。
頻繁にデータを送信する場合には適しませんが、信頼性を向上できる場合があります。
0x78
)とするときは利用できません。0x02
:アプリケーション再送の有効化
MAC ACK を使用するときは、0x00
-0x0F
を指定します。送信に成功するまで、それぞれ0-16回の再送を行います。
MAC ACK を使用しないときは、0x81
-0x8F
を指定します。必ず1-16回の再送を行います。
応答メッセージは、すべての再送が終了してから出力します。
0x03
:初回送信の遅延の最小値
初回送信までの遅延の最小値をミリ秒で指定できます。
0x04
:初回送信の遅延の最大値
初回送信までの遅延の最大値をミリ秒で指定できます。
0x05
:アプリケーション再送の間隔
アプリケーション再送を有効化した際の再送間隔をミリ秒で指定します。
0x06
:平行要求の許可
平行要求を許可します。
平行要求を許可すると、要求を完了するまでブロックせず、次の要求処理を受け付けることができるようになります。
例えば 0.5 秒の遅延を設定した要求を3回連続して入力した場合、初期状態では 0.5 秒後、1.0秒後、1.5秒後と順番に処理します。ところが、平行要求を許可した場合は、0.5秒後に順不同で送信要求を処理します。なおパケット分割を必要とする場合は使用できません。
0x07
:応答メッセージの無効化
送信側へデータを入力した際に出力される応答メッセージを無効とします。
0x08
:送信後スリープ
送信後、速やかに本体をスリープさせます。
RX
が立ち上がりエッジを検知すると、スリープから復帰します。何か1バイトのデータを入力してください。
スリープ復帰後、UART の初期化が終わると入力を受け付けます。
受信側の出力
# | データ | 内容 | 備考 |
---|---|---|---|
uint8 | ヘッダ | 0xA5 のみ | |
uint8 | ヘッダ | 0x5A のみ | |
uint16 | データ長 | \(M\)+14 | |
0 | uint8 | 送信元の論理デバイスID | 親機0x00 ,子機0x01 -0x64 ,未設定子機0x78 |
1 | uint8 | コマンド番号 | 0xA0 のみ |
2 | uint8 | 応答ID | 送信側で指定した値 |
3 | uint32 | 送信元の拡張アドレス | シリアルIDの先頭へ0x8 を加えた値 |
7 | uint32 | 送信先の拡張アドレス | 論理デバイスID使用時は0xFFFFFFFF |
11 | uint8 | LQI | 受信時の電波通信品質 |
12 | uint16 | 続くバイト列の長さ | バイト数\(M\)を表す |
14 | [uint8] | 任意のデータ | 長さ\(M\)のバイト列 |
uint8 | チェックサム | XOR | |
uint8 | フッタ | EOT (0x04 ) |
送信側の出力(応答メッセージ)
# | データ | 内容 | 備考 |
---|---|---|---|
uint8 | ヘッダ | 0xA5 のみ | |
uint8 | ヘッダ | 0x5A のみ | |
uint16 | データ長 | 4 | |
0 | uint8 | 送信元の論理デバイスID | 0xDB のみ:自身を示す |
1 | uint8 | コマンド番号 | 0xA1 のみ |
2 | uint8 | 応答ID | 入力時に指定した値 |
3 | uint8 | 処理結果 | 成功1 ,失敗0 |
uint8 | チェックサム | XOR | |
uint8 | フッタ | EOT (0x04 ) |
使用例
親機から子機に対してバイト列 11 22 33 AA BB CC
を送信する例を示します。
論理デバイスIDを指定する例
親機から論理デバイスID0x01
の子機へ送信する例を示します。
- 応答IDは
0x01
- オプションなし
【送信側:親機】
A5 5A 80 0A 01 A0 01 FF 11 22 33 AA BB CC 82 04 <- 入力
A5 5A 80 04 DB A1 01 01 7A 04 <- 出力
末尾の
0xC1
はチェックサム:0x42
から0xCC
までのXOR。
【受信側:子機】
A5 5A 80 14 00 A0 01 82 03 68 41 FF FF FF FF FF 00 06 11 22 33 AA BB CC 2D 04 <- 出力
末尾の
0x2D
はチェックサム:0x00
から0xCC
までのXOR。
拡張アドレスを指定する例
親機から拡張アドレス0x820163B2
(シリアルID0x20163B2
)の子機へ送信する例を示します。
- 応答IDは
0x01
- オプションなし
【送信側:親機】
A5 5A 80 0E 80 A0 01 82 01 63 B2 FF 11 22 33 AA BB CC 51 04 <- 入力
A5 5A 80 04 DB A1 01 01 7A 04 <- 出力
末尾の
0x51
はチェックサム:0x80
から0xCC
までのXOR。
【受信側:子機】
A5 5A 80 14 00 A0 01 82 03 68 41 82 01 63 B2 FF 00 06 11 22 33 AA BB CC 7F 04 <- 出力
末尾の
0x7F
はチェックサム:0x00
から0xCC
までのXOR。
MAC ACKを使用する例
親機から論理デバイスID0x01
の子機へ MAC ACK を使用して送信する例を示します。
- 応答IDは
0x01
- オプションは
0x01
:MAC ACKの有効化を指定
【送信側:親機】
A5 5A 80 0B 01 A0 01 01 FF 11 22 33 AA BB CC 83 04 <- 入力
A5 5A 80 04 DB A1 01 01 7A 04 <- 出力
末尾の
0x83
はチェックサム:0x01
から0xCC
までのXOR。
【受信側:子機】
A5 5A 80 14 00 A0 01 82 03 68 41 00 00 01 01 FF 00 06 11 22 33 AA BB CC 2D 04 <- 出力
末尾の
0x2D
はチェックサム:0x00
から0xCC
までのXOR。
遅延を設ける例
親機から論理デバイスID0x01
の子機へ 768ms の遅延を設けて送信する例を示します。
- 応答IDは
0x01
- オプションは
0x03
:初回送信の遅延の最小値を指定
【送信側:親機】
A5 5A 80 0D 01 A0 01 03 03 00 FF 11 22 33 AA BB CC 82 04 <- 入力
A5 5A 80 04 DB A1 01 01 7A 04 <- 出力
末尾の
0x82
はチェックサム:0x01
から0xCC
までのXOR。
【受信側:子機】
A5 5A 80 14 00 A0 01 82 03 68 41 FF FF FF FF FF 00 06 11 22 33 AA BB CC 2D 04 <- 出力
末尾の
0x2D
はチェックサム:0x00
から0xCC
までのXOR。
0xDB
コマンド
インタラクティブモードの設定を行う代わりに、UART から 0xDB
コマンドを入力することでモジュールの操作や設定を行うことができます。
1.3.4.1.2.2.1 - シリアル通信アプリ 書式モード(バイナリ)の 0xDB コマンド
0xDB
コマンドを使うことで、UART接続されたデバイスから動的に設定を行えます。入力の書式
# | データ | 内容 | 備考 |
---|---|---|---|
uint8 | ヘッダ | 0xA5 のみ | |
uint8 | ヘッダ | 0x5A のみ | |
uint16 | データ長 | \(N\)+2 | |
0 | uint8 | 送信先の論理デバイスID | 自身を示す0xDB のみ |
1 | uint8 | コマンド番号 | 後述の値から選択 |
2 | [uint8] | パラメータ | 設定値を示す長さ\(N\)のバイト列(オプション) |
uint8 | チェックサム | XOR | |
uint8 | フッタ | EOT (0x04 ) |
コマンド番号の一覧
機能 | |
---|---|
0xF0 | ACKの有効化 |
0xF1 | 端末情報の取得 |
0xF2 | 端末設定の適用 |
0xF3 | 端末設定の取得 |
0xF8 | 端末の制御 |
0xFD | 端末設定の消去 |
0xFE | 端末設定の保存 |
0xFF | 端末のリセット |
0xF0
:ACKの有効化
ACK 応答の要求を行います。
パラメータはありません。
応答の書式
# | データ | 内容 | 備考 |
---|---|---|---|
uint8 | ヘッダ | 0xA5 のみ | |
uint8 | ヘッダ | 0x5A のみ | |
uint16 | データ長 | 3 | |
0 | uint8 | 送信先の論理デバイスID | 0xDB のみ |
1 | uint8 | コマンド番号 | 0xF0 のみ |
2 | uint8 | データ | 0x01 のみ |
uint8 | チェックサム | XOR | |
uint8 | フッタ | EOT (0x04 ) |
0xF1
:端末情報の取得
アドレス等の情報を表示します。起動時にも出力されます。
パラメータはありません。
応答の書式
# | データ | 内容 | 備考 |
---|---|---|---|
uint8 | ヘッダ | 0xA5 のみ | |
uint8 | ヘッダ | 0x5A のみ | |
uint16 | データ長 | 17 | |
0 | uint8 | 送信先の論理デバイスID | 0xDB のみ |
1 | uint8 | コマンド番号 | 0xF1 のみ |
2 | uint32 | アプリケーションID | |
6 | uint32 | バージョン番号 | 1.4.7 なら00010407 |
10 | uint8 | 論理デバイスID | |
11 | uint32 | シリアルID | |
15 | uint8 | サイレントモードの状態 | 有効1 , 無効0 |
16 | uint8 | ネットワークの状態 | UP1 , DOWN0 |
uint8 | チェックサム | XOR | |
uint8 | フッタ | EOT (0x04 ) |
0xF2
:端末設定の適用
設定を適用します。
応答の書式
成功した場合
# | データ | 内容 | 備考 |
---|---|---|---|
uint8 | ヘッダ | 0xA5 のみ | |
uint8 | ヘッダ | 0x5A のみ | |
uint16 | データ長 | \(N\)+2 | |
0 | uint8 | 送信先の論理デバイスID | 0xDB のみ |
1 | uint8 | コマンド番号 | 0xF3 のみ |
2 | [uint8] | 設定内容 | 長さ\(N\)の識別子とデータの繰り返し |
uint8 | チェックサム | XOR | |
uint8 | フッタ | EOT (0x04 ) |
失敗した場合
# | データ | 内容 | 備考 |
---|---|---|---|
uint8 | ヘッダ | 0xA5 のみ | |
uint8 | ヘッダ | 0x5A のみ | |
uint16 | データ長 | 3 | |
0 | uint8 | 送信先の論理デバイスID | 0xDB のみ |
1 | uint8 | コマンド番号 | 0xF3 のみ |
2 | uint8 | エラー | 0xFF のみ |
uint8 | チェックサム | XOR | |
uint8 | フッタ | EOT (0x04 ) |
0xF3
:端末設定の取得
設定を取得します。
応答の書式
# | データ | 内容 | 備考 |
---|---|---|---|
uint8 | ヘッダ | 0xA5 のみ | |
uint8 | ヘッダ | 0x5A のみ | |
uint16 | データ長 | \(N\)+2 | |
0 | uint8 | 送信先の論理デバイスID | 0xDB のみ |
1 | uint8 | コマンド番号 | 0xF3 のみ |
2 | [uint8] | 設定内容 | 長さ\(N\)の識別子とデータの繰り返し |
uint8 | チェックサム | XOR | |
uint8 | フッタ | EOT (0x04 ) |
0xF8
:端末の制御
起動時にサイレントモードを有効としていた場合に、これを解除します。
0x10
を指定してください。応答の書式
# | データ | 内容 | 備考 |
---|---|---|---|
uint8 | ヘッダ | 0xA5 のみ | |
uint8 | ヘッダ | 0x5A のみ | |
uint16 | データ長 | 4 | |
0 | uint8 | 送信先の論理デバイスID | 0xDB のみ |
1 | uint8 | コマンド番号 | 0xF8 のみ |
2 | uint8 | データ | 0x11 のみ |
3 | uint8 | 状態 | 解除済み1 , 未解除0 |
uint8 | チェックサム | XOR | |
uint8 | フッタ | EOT (0x04 ) |
0xFD
:端末設定の消去
設定を初期化し、本体をリセットします。
パラメータおよび応答はありません。
0xFE
:端末設定の保存
適用した設定を保存し、本体をリセットします。
パラメータおよび応答はありません。
0xFF
:端末のリセット
適用した設定を破棄し、本体をリセットします。
パラメータおよび応答はありません。
パラメータの一覧(0xF2
/0xF3
)
0xF2
:端末設定の適用 および 0xF3
:端末設定の取得 のパラメータは、識別子とデータ(ビッグエンディアン)の繰り返しで表現します。
識別子 | データ | 内容 |
---|---|---|
0x00 | uint32 | アプリケーションID |
0x01 | uint32 | 周波数チャネルマスク |
0x02 | uint16 | 再送回数と出力 |
0x03 | uint8 | 論理デバイスID |
0x04 | uint8 | 役割 |
0x05 | uint8 | 中継レイヤ |
0x06 | uint8 | 通信モード |
0x07 | uint32 | ボーレート |
0x08 | uint8 | パリティ |
0x09 | uint8 | 暗号化機能 |
0x0A | [uint8] | 暗号化キー |
0x0C | uint16 | 区切り文字 |
0xFF | uint8 | エラー |
0x00
:アプリケーションID
アプリケーションIDを指定します。
0x01
:周波数チャネルマスク
周波数チャネルのビットマスクを指定します。
使用するチャネルのビットを立てます。例えば、11チャネルを使う場合は1<<11
です。
0x02
:再送回数と出力
電波の送信出力と、透過モードおよびヘッダ付き透過モードにおいてパケットを追加で送信する回数を指定します。
下位の1バイトのみを使用します。そのうち上位の4ビットが再送回数(0
-9
)、下位の4ビットが送信出力(0
-3
)です。例えば、8回再送/出力3 であれば 0x0083
です。
0x03
:論理デバイスID
論理デバイスIDを指定します。
0x04
:役割
子機のみ有効です。以下の値を指定します。通常はネットワーク層を利用しない配送方式を選択してください。
ネットワーク層を利用しない配送方式
0
:通常の指定(親機または子機)1
-3
:中継子機(論理デバイスIDを1
-100
または120
とします)1
-3
の数値は最大中継段数を指します。最大中継段数まで再送を繰り返す方式のため、中継機の配置や数によっては重複したパケットを中継します。
ネットワーク層を利用する配送方式
11
:親機12
:中継機13
:子機
80
を足してください。例えば 93
は「ネットワーク層利用かつサイレントモード」です。0x05
:中継レイヤ
中継レイヤの番号です。中継機は中継レイヤ数の上位(より小さい値)の中継機・親機への接続を試みます。役割を12
としているときにだけ有効です。
0x06
:通信モード
0
:透過モード1
:書式モード(バイナリ)2
:書式モード(バイナリ)3
:チャットモード4
:ヘッダ付き透過モード
0x07
:ボーレート
UART ボーレートを指定します。
0x08
:パリティ
以下の設定の組み合わせにおいて、設定値の総和を指定します。
- Bit
0
:8Bit8
:7Bit
- Parity
0
:None1
:Odd2
:Even
- Stop
0
:STOP 14
:STOP 2
例えば、7-E-1 なら 8+2+0=10(0xA)
を指定します。
0x09
:暗号化機能
暗号化機能の有無を指定します。
0
:無効1
:AES128bit の暗号化を有効
0x0A
:暗号化キー
16バイトの暗号化キーを指定します。
インタラクティブモードでは設定できないバイナリ列を格納できます。この場合、インタラクティブモードの表示が崩れる場合があります。
0x0C
:区切り文字
区切り文字列の指定を行います(0x00
-0xFF
)。
サイレントモード
0xDB
コマンドによる設定を完了してから受信を始める際に利用します。設定方法
インタラクティブモードで以下の設定を行います。
r: Role
に80
を足しておく。例えば、通常の親機や子機なら80
とする。m: UART mode
を書式モード(A
/B
)としておく。
動作確認
起動直後に出力される DB F1 応答の内容を確認します。
解除方法
DB F8 要求を行います(バイナリ形式:A5 5A 80 03 DB F8 10 33 04
)。
注意点
- サイレントモードの再設定はできません。
- サイレントモードが有効のときに送信コマンドを入力した場合の動作は未定義です。
1.3.4.1.2.3 - シリアル通信アプリのチャットモード
MONOSTICK を PC 等へ接続することで、複数の端末同士のチャットを行うことができます。
概要
テキストチャットを実現します。
送信側の入力 | 受信側の出力 | |
---|---|---|
任意の文字列 | → | 任意の文字列+補助情報 |
プロンプトの表示とエコーバック(入力した文字の出力)を行います。すべての端末は子機として、同報通信を行います。
例えば、ある端末から他の端末へ Hello
という文字列を送信する場合は、次のように振る舞います。
【送信側】
810A4778:0> Hello <- 入力
810A4778:1> <- 出力
【受信側】
[810A4778:0] Hello <- 出力
82018CA0:0> <- 出力
チャットモードは、プロンプトの表示とエコーバック(自身へ入力された文字の出力)を行います。
全ての端末は子機としたうえで、送信内容はブロードキャストします。すべての端末と通信できますが宛て先は指定できません。またバイナリデータは送れません。文字列のみ対応しています(0x00
-0x1F
, 0x7F
は送信不可)。
中継は3段(3ホップ)まで対応しています。初期設定では中継しません。
親機と子機の区別
チャットモードは、親機と子機を区別しません。
アプリケーションIDと周波数チャネルが同一であれば、どの端末へ入力したデータもほかの端末へと送信されます。
送信元の判別
受信側に出力される補助情報の識別情報から送信元を判別できます。
インタラクティブモードのh: Header format
を空欄としたときは、7桁のシリアルIDの先頭へ0x8
を付与した拡張アドレスを使用します。例えば、以下の出力では送信元のシリアルIDが0x10A4778
であったと分かります。
[810A4778:0] Hello
インタラクティブモードのh: Header format
へ任意の文字列を設定したときは、それをハンドル名として利用します。ただし、ハンドル名は無線パケットに格納するデータを消費します。
送信側の入力書式
プロンプトに続けて、メッセージと改行文字を入力します。
データ | 内容 | 備考 |
---|---|---|
[char] | メッセージ | 0x00 -0x1F , 0x7F は不可 |
char | CR (0x0D /'\r' ) | 単体でも可 |
char | LF (0x0A /'\n' ) | 単体でも可 |
810A4778:0> Hello
受信側の出力書式
補助情報に続けて、受信したメッセージを出力します。
補助情報は、モジュールの拡張アドレスまたはハンドル名と、続き番号を含みます。
データ | 内容 | 備考 |
---|---|---|
char | 補助情報のヘッダ | [ のみ |
[char] | 識別情報 | 8桁の拡張アドレスまたはハンドル名 |
char | 補助情報の区切り文字 | : のみ |
[char] | 続き番号 | 0 から開始 |
char | 補助情報のフッタ | ] のみ |
char | 区切り文字 | 半角スペースのみ |
[char] | メッセージ | |
char | フッタ | CR (0x0D /'\r' ) |
char | フッタ | LF (0x0A /'\n' ) |
(err)
(canceled)
といった ()
書きのメッセージを出力します。
[810A4778:0] Hello
その他の入力
エスケープシーケンスに対応したターミナルでは、以下の制御コマンドを使用できます。
Ctrl-L
:画面のクリアCtrl-C
:入力のキャンセルBS
/DEL
:カーソルを戻す
1.3.4.1.2.4 - シリアル通信アプリの透過モード
外部マイコン同士を簡単に接続できますが、書式を用いて通信を最適化するには書式モード(アスキー/バイナリ)が適しています。
概要
純粋にUARTを無線化します。
送信側の入力 | 受信側の出力 | |
---|---|---|
任意のデータ | → | 任意のデータ |
書式を必要としないため、既存の UART 通信を簡単に無線化できます。
一方で、データの区切りがあいまいになってしまうほか、受信側の出力から送信元を判別できないといった欠点があります。
初期状態では、送信トリガ文字にCRLFを指定しています。したがって、送信側へ入力されたデータをCRLFで区切り、CRLF よりも前のデータを送信します。
例えば、送信側の端末へ Hello<Enter>
と入力すると、受信側の端末はそのまま Hello
を出力します。
【送信側】
Hello <- 入力
【受信側】
Hello <- 出力
連続して入力された文字列を80バイトごとに分割して送信します。トリガ文字までのデータは通常80バイト以下としてください。
全ての端末は子機としたうえで、送信内容はブロードキャストします。すべての端末と通信できますが宛て先は指定できません。アスキー文字だけでなく、バイナリデータも送信できます。
中継は3段(3ホップ)まで対応しています。初期設定では中継しません。
親機と子機の区別
透過モードは、親機と子機を区別しません。
アプリケーションIDと周波数チャネルが同一であれば、どの端末へ入力したデータもほかの端末へと送信されます。
送信元の判別
透過モードでは、送信元を判別できません。
送信元を判別するには、送信側へ入力するデータそのものに送信元の情報を含める必要があります。
送信トリガ
送信側の入力に書式はありませんが、データはある時点で分割されたのち、パケットごとに無線で送信されます。
したがって、次に挙げる送信トリガを意識しなくてはなりません。
- データ入力後のタイムアウトを迎えたとき
- 入力データが最小データサイズを満たしたとき
- 送信トリガ文字を受け取ったとき
送信トリガの優先順位
送信トリガの設定は、インタラクティブモードのk
:送信トリガ項目から指定します。
設定例
送信トリガ文字をLF、最小データサイズを8バイト、タイムアウトを30msとする場合は次のように設定します。
m: set UART mode (D)
k: set Tx Trigger (sep=0x0a, min_bytes=8 dly=30[ms])
o: set option bits (0x00000100)
1.3.4.1.2.5 - シリアル通信アプリのヘッダ付き透過モード
概要
初期状態で有効となっています。
送信側の端末へ任意のデータを入力すると、受信側の端末は受信した内容に特定の書式で補助情報を付加したデータを出力します。
送信側の入力 | 受信側の出力 | |
---|---|---|
任意のデータ | → | 任意のデータ+補助情報 |
初期状態では、送信側へ入力されたデータをCRLFで区切り、CRLF よりも前のデータを送信します。
例えば、送信側の端末へ Hello<Enter>
と入力すると、受信側の端末は補助情報を含んだ書式で Hello
を出力します。送信側の端末も送信完了といったメッセージを伝える書式を出力します。
【送信側】
Hello <- 入力
;U;00004;219;0x820163B2;000;000;0,1,Hel...;6E; <- 出力
【受信側】
;U;00003;000;0x820163B2;255;000;Hello;42; <- 出力
受信側が出力する補助情報は、送信元のアドレスや受信時の電波強度、チェックサム等を含みます。補助情報の書式はカスタマイズできます。
親機と子機の区別
ヘッダ付き透過モードは、親機と子機を区別しません。
アプリケーションIDと周波数チャネルが同一であれば、どの端末へ入力したデータもほかの端末へと送信されます。
送信元の判別
ヘッダ付き透過モードで受信したデータからは、送信元を判別できます。
受信側が出力する補助情報を表すヘッダに含むことのできる論理デバイスIDやシリアルIDのデータを利用します。
受信側の出力書式
出力書式はセミコロン(;
)区切りとして表現されます。
【初期状態における出力例】
;U;00777;120;0x81025A17;120;013;HELLO;79;
この出力例は、次のように解釈できます。
データ | 内容 | 値 | |
---|---|---|---|
U | char | 固定値 | U |
00777 | uint16 | 出力時のタイムスタンプ | 777 秒 |
120 | uint8 | 送信元の論理デバイスID | 120 IDなし子機 |
0x81025A17 | uint32 | 送信元の拡張アドレス | 81025A17 |
120 | uint8 | LQI(電波通信品質) | 120/255 |
013 | uint8 | 送信元の続き番号 | 13 |
HELLO | [uint8] | 入力データ | HELLO |
79 | uint8 | XORチェックサム | 0x79 |
送信元の論理デバイスIDは、自身の応答メッセージのとき219
となります。
拡張アドレスは、TWELITE 本体に記載された7ビットのシリアルIDの先頭へ0x8
を付加したものです。
ヘッダフォーマットによるカスタマイズ
受信側の出力書式は、ヘッダフォーマットに従います。
ヘッダフォーマットを変更することで、受信側が出力する補助情報の内容やチェックサムの計算範囲をカスタマイズできます。
;U;%t;%i;0x%A;%q;%s;<*;%X;\n
としています。ヘッダフォーマットの変更は、インタラクティブモードの h: set header format
から行います。
最も簡単な書式
最も簡単な書式を表すヘッダフォーマットは *\n
です。受信したデータへ CRLF の改行文字を付与して出力します。
h: set header format [*\n]
この場合にHELLO
を送信すると、次のように振る舞います。
【受信側】
HELLO<CR><LF> または HELLO<LF>
【送信側】
HELLO<CR><LF>
フォーマットを構成する特殊文字
ヘッダフォーマットに次の特殊文字を含めることで、出力内容をカスタマイズできます。
全般
内容 | |
---|---|
* | 受信したデータ |
&hl | 任意の文字(アスキー)(例:&20 は空白) |
< | チェックサム計算の開始位置(未設定で先頭から) |
> | チェックサム計算の終了位置(v1.4.6以降のみ) |
\
(バックスラッシュ・¥)に続くもの
内容 | |
---|---|
\n | CRLF (0x0D 0x0A ) |
\t | TAB |
\* | * |
\% | % |
\< | < |
\> | > |
\& | & |
%
に続くもの
内容 | 長さ | データ | |
---|---|---|---|
%A | 送信元アドレス(32bit) | 8桁 | 16進数 |
%a | 送信元アドレス(32bit) | 10桁 | 16進数 |
%I | 送信元論理アドレス(8bit) | 2桁 | 16進数 |
%i | 送信元論理アドレス(8bit) | 3桁 | 10進数 |
%T | 現在のシステム時間(秒) | 4桁 | 16進数 |
%t | 現在のシステム時間(秒) | 5桁 | 10進数 |
%S | 送信元が設定した続き番号 | 2桁 | 16進数 |
%s | 送信元が設定した続き番号 | 3桁 | 16進数 |
%Q | 受信時の電波強度 | 2桁 | 16進数 |
%q | 受信時の電波強度 | 3桁 | 10進数 |
%X | チェックサム | 2桁 | 16進数 |
%x | チェックサム | 3桁 | 10進数 |
チェックサムの計算
チェックサムはデータの先頭あるいはヘッダフォーマットの<
を指定した箇所から%X
,%x
の直前までを XOR(排他的論理和)にて計算します。
初期状態の例
初期状態ではヘッダフォーマットを ;U;%t;%i;0x%A;%q;%s;<*;%X;\n
としており、チェックサムの計算範囲は*;
です。
すなわち、HELLO
を送信した場合は HELLO;
のバイナリデータを対象とするため、チェックサムは0x79
です。
【Python による検証コード】
from functools import reduce
def main():
data = "HELLO;"
checksum = reduce(lambda x, y: x ^ y, data.encode("ascii"))
print(f"{data} -> {hex(checksum)}")
if __name__ == "__main__":
main() # HELLO; -> 0x79
その他の例
例えば、ヘッダフォーマットを ;%I;*;%X
とした場合を考えます。
<
を指定していないため、チェックサムの計算範囲は;%I;*;
です。
すなわち、HELLO
を送信した場合は ;000;HELLO;
のバイナリデータを対象とするため、チェックサムは 0x49
です。
【Python による検証コード】
from functools import reduce
def main():
data = ";000;HELLO;"
checksum = reduce(lambda x, y: x ^ y, data.encode("ascii"))
print(f"{data} -> {hex(checksum)}")
if __name__ == "__main__":
main() # ;000;HELLO; -> 0x49
送信トリガ
送信側の入力に書式はありませんが、データはある時点で分割されたのち、パケットごとに無線で送信されます。
したがって、次に挙げる送信トリガを意識しなくてはなりません。
- データ入力後のタイムアウトを迎えたとき
- 入力データが最小データサイズを満たしたとき
- 送信トリガ文字を受け取ったとき
送信トリガの優先順位
送信トリガの設定は、インタラクティブモードのk
:送信トリガ項目から指定します。
設定例
送信トリガ文字をLF、最小データサイズを8バイト、タイムアウトを30msとする場合は次のように設定します。
m: set UART mode (E)
k: set Tx Trigger (sep=0x0a, min_bytes=8 dly=30[ms])
o: set option bits (0x00000100)
1.3.4.1.3 - シリアル通信アプリのカスタムデフォルト機能
例えば、ボーレートを 115200bps から 9600bps へ変更したファームウェアを作成しておけば、最初から 9600bps で使用できます。
設定手順
1. 設定を適用
インタラクティブモードの設定を変更し、S
を押下して保存します。
2. 設定内容をダウンロード
xmodem プロトコルのデータをダウンロードできるソフトウェアを用意します。
再度インタラクティブモードへ入った状態(項目を選ぶ前の状態)として、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_Uart_BLUE_L1305_V1-4-X.bin
、作成するカスタムバイナリをApp_Uart_custom_V1-4-X.bin
とした場合の例を示します。
【Windows】
copy App_Uart_BLUE_L1305_V1-4-X.bin App_Uart_custom_V1-4-X.bin
type conf.bin >> App_Uart_custom_V1-4-X.bin
【macOS / Linux】
cat App_Uart_BLUE_L1305_V1-4-X.bin conf.bin > App_Uart_custom_V1-4-X.bin
4. カスタムバイナリの書き込み
連結したカスタムバイナリを TWELITE へ書き込みます。
カスタムバイナリを書き込んでからインタラクティブモードへ入ると、最初の行の末尾に C-
を表示します。
--- CONFIG/TWE UART APP V1-04-2/SID=0x81001f1c/LID=0x78 C- ---
カスタムバイナリに対してインタラクティブモードから設定を上書きして保存すると、C-
の代わりにCE
と表示します。
--- CONFIG/TWE UART APP V1-04-2/SID=0x81001f1c/LID=0x78 CE ---
1.3.4.1.4 - シリアル通信アプリの通信における注意点
UART のデータ入出力
UART の入力には、入力側に 4KB、出力側に 4KB のバッファを確保しています。2系統のUARTを出力する場合は、各系統の入力に 2KB、出力に 2KB を利用します。
書式モードやチャットモードでバッファのサイズを意識する場面は多くありませんが、ヘッダ付き透過モードや透過モードで連続的に系列を入力する場合や、書式モードであっても多数の系列を一度に入力する場合は、バッファサイズの上限を意識する必要があります。出力においても、遅いボーレートを設定した場合には、無線で受信したデータの出力が間に合わない可能性があります。
バッファの上限を超えた場合は、その境界でのデータは保護されません。データ抜けが発生します。特に入力側では後述のフロー制御ピンを参照することを検討してください。
UART のフロー制御
入力側のフロー制御については、 RTS ピン同様の振る舞いをするように実装しています。使用するピンは PWM1
(DIO5
) であり、その対象は主UARTポートです。入力を受け付けないときに High、入力を受け付けるときに Low 状態となります。なお出力側のフロー制御には対応していません。受信側のデバイスでは、十分なボーレートと処理速度を確保してください。
- 電源投入・リセット直後は High です。UART が初期化されると Low。
- UART の入力バッファが 7/8 を超えたときに High となります。下回ると Low。
- 透過モードでは、パケット送信中は High となります。
無線通信エラーの対策
受信側にデータ抜けが発生する場合は、無線の再送回数を増やしてください。
追加送信するパケットの数を増やすことで、受信の成功率を向上できる場合があります。
再送回数はインタラクティブモードで設定できます(x: set RF Conf
)。
1.3.4.1.5 - インタラクティブモード(シリアル通信アプリ)
ここではシリアル通信アプリ(App_Uart)に固有の機能を説明します。共通機能については、TWELITE APPS マニュアル のトップページを参照してください。
TWELITE がスリープしている間はインタラクティブモードを使用できません。
M3
ピンをGND
へ接続していないことを確認してください。
表示例
次のような画面を表示します。
--- CONFIG/TWE UART APP V1-04-5/SID=0x82018ca0/LID=0x78 -- ---
a: set Application ID (0x67720103)
i: set Device ID (120=0x78)
c: set Channels (18)
x: set RF Conf (3)
r: set Role (0x0)
l: set Layer (0x1)
b: set UART baud (38400)
B: set UART option (8N1)
m: set UART mode (E)
k: set Tx Trigger (sep=0x0d0a, min_bytes=0 dly=0[ms])
h: set header format [;U;%t;%i;0x%A;%q;%s;<*>;%X;\n]
C: set crypt mode (0)
o: set option bits (0x00000100)
---
S: save Configuration
R: reset to Defaults
コマンド
設定項目 | 初期値 | 備考 | |
---|---|---|---|
a | アプリケーションID | 0x67720103 | 32bit |
i | 論理デバイスID | 120 | 親機0 /121 ,子機1 -100 ,IDなし子機120 |
c | 周波数チャネル | 18 | 11 -26 |
x | 再送回数と送信出力 | 3 | |
再送回数 | 0 | 1 -9 回、0 は無効 | |
送信出力 | 3 | 0 -3 | |
r | 役割 | 0 | 通常0 ,中継子機1 -3 ,その他 |
l | 中継レイヤ | 0x01 | |
b | UART代替ボーレート | 38400 | BPS ピンで有効化 |
B | UARTオプション | 8N1 | |
m | 通信モード | E | A /B /C /D /E |
k | 送信トリガ | 0x0d0a,0,0 | トリガ文字、最小サイズ、タイムアウト |
h | ヘッダ/ハンドル名 | 参照 | |
ヘッダ | ヘッダ付き透過モードの場合 | ||
ハンドル名 | チャットモードの場合 | ||
C | 暗号化 | 0 | 無効0 ,AES128bit1 |
o | オプションビット | 0x00000000 | その他の詳細設定 |
各コマンドの詳細を次に示します。
a
:アプリケーションID
通信を行う端末はすべて同一の値とします。論理的にネットワークを分離します。
i
:論理デバイスID
複数の子機を識別する必要がある場合に設定します。
識別の必要がない、できない場合は120
としてください。識別の必要がある場合は、子機は1
-100
の任意の値に、親機は0
あるいは121
としてください。
c
:周波数チャネル
通信を行う端末はすべて同一の値とします。物理的にネットワークを分離します。
x
:送信出力と再送回数
電波の送信出力と、透過モードおよびヘッダ付き透過モードにおいてパケットを追加で送信する回数を指定します。
r
:役割
子機のみ有効です。以下の値を指定します。通常はネットワーク層を利用しない配送方式を選択してください。
ネットワーク層を利用しない配送方式
0
:通常の指定(親機または子機)1
-3
:中継子機(論理デバイスIDを1
-100
または120
とします)1
-3
の数値は最大中継段数を指します。最大中継段数まで再送を繰り返す方式のため、中継機の配置や数によっては重複したパケットを中継します。
ネットワーク層を利用する配送方式
書式モードのみ対応しています。
11
:親機12
:中継機13
:子機
80
を足してください。例えば 93
は「ネットワーク層利用かつサイレントモード」です。l
:中継レイヤ
中継レイヤの番号です。中継機は中継レイヤ数の上位(より小さい値)の中継機・親機への接続を試みます。役割を12
としているときにだけ有効です。
m
:通信モード
A
:書式モード(アスキー)B
:書式モード(バイナリ)C
:チャットモードD
:透過モードE
:ヘッダ付き透過モード
b
:UART代替ボーレート
BPS
ピンをGND
へ接続して起動した場合に選択される代替ボーレートを38400
bpsから上書きします。
値は9600
/19200
/38400
/57600
/115200
/230400
から選択できます。他の値を指定すると、誤差が生じる可能性があります。
BPS
ピンを開放して起動した場合、この設定は適用されません。115200
bpsに固定されます。
BPS
ピンの状態を無視して強制的に代替ボーレート設定を適用するには、オプションビットの強制的に代替ボーレートを適用を有効とします。
B
:UARTオプション
Bit-Parity-Stop
の順で3文字を指定します。
- Bit
8
:8Bit7
:7Bit
- Parity
N
:NoneO
:OddE
:Even
- Stop
1
:STOP 12
:STOP 2
k
:送信トリガ
透過モードとヘッダ付き透過モードの入力へ適用する送信トリガを設定します。
カンマ,
で区切り、以下の順で入力してください。
送信トリガ文字
この文字が入力されたときにパケットを送信します(最小データサイズを満たしていない場合を除く)。
インタラクティブモードでは、16進数のASCIIコードを指定します。先頭の0x
は無視されます。初期状態ではCRLFとしています。
送信されるデータには送信トリガ文字も含まれます。送信トリガ文字を有効とするには、オプションビット 0x00000100
を指定する必要があります(デフォルト指定済み)。
最小データサイズ
連続して扱うデータの最小サイズを指定します。最小データサイズを満たすまでのデータに送信トリガ文字が含まれていても、これは無効となります。
インタラクティブモードでは、バイト数として1
-80
の数値を指定します。0
で無効となります。初期状態では無効です。
タイムアウト
最後の入力からパケットを送信するまでの待ち時間を示します。
インタラクティブモードでは、ミリ秒単位で10
-200
の数値を指定します。0
で無効となります。初期状態では無効
すべての設定を有効とした場合の優先順位は次の通りです。
- タイムアウト
- 最小データサイズ
- 送信トリガ文字
タイムアウトが設定されていれば、常に優先します。送信トリガ文字が設定されていても、最小データサイズに達するまでは送信されません。
h
:ヘッダ/ハンドル名
ヘッダ付き透過モードに対してはヘッダのフォーマットを、チャットモードに対してはハンドル名を示します。
ヘッダ(ヘッダ付き透過モード)
ヘッダ付き透過モードに対しては、ヘッダのフォーマット書式を指定します。
ハンドル名(チャットモード)
相手端末に表示するハンドル名を指定します。
最大23文字です。送信するデータ(80バイト)の領域を消費します。
C
:暗号化
暗号化機能の有無を指定します。
AES128bitの暗号化を有効とするには、1
を指定してください。
o
:オプションビット
32bit の数値を指定します。各ビットに紐付いた設定を有効化できます。
対象ビット | 設定項目 | 初期 | A | B | C | D | E |
---|---|---|---|---|---|---|---|
0x00000001 | M3 の内部プルアップを停止 | 0️⃣ | ✅ | ✅ | ✅ | ✅ | ✅ |
0x00000002 | 未使用 | 0️⃣ | |||||
0x00000100 | 送信トリガの有効化 | 1️⃣ | ✅ | ✅ | |||
0x00000200 | 新たな入力系列を優先 | 0️⃣ | ✅ | ✅ | ✅ | ✅ | |
0x00001000 | 応答メッセージを停止 | 0️⃣ | ✅ | ✅ | ✅ | ||
0x00004000 | 重複チェッカの緩和 | 0️⃣ | ✅ | ✅ | ✅ | ✅ | ✅ |
0x00010000 | 強制的に代替ボーレートを適用 | 0️⃣ | ✅ | ✅ | ✅ | ✅ | ✅ |
0x00020000 | 副ポートへ同時出力 | 0️⃣ | ✅ | ✅ | ✅ | ✅ | ✅ |
0x00040000 | 主ポートの切り替え | 0️⃣ | ✅ | ✅ | ✅ | ✅ | ✅ |
0x00100000 | 中継レイヤを制限 | 0️⃣ | ❗ | ❗ |
オプションビットの詳細
オプションビットの値の各ビットに紐付いた設定を解説します。
00000001
:M3
の内部プルアップを停止
TWELITE DIP におけるスリープ設定用のピン M3
の内部プルアップを停止します。
00000100
:送信トリガの有効化
透過モードまたはヘッダ付き透過モードにおいて、送信トリガの設定を有効とします。
00000200
:新たな入力系列を優先
書式モード(アスキー・バイナリ)、透過モード、ヘッダ付き透過モードにおいて、送信完了前に複数の系列が入力された際、新しいものを優先します。
00001000
:応答メッセージを停止
書式モード(アスキー・バイナリ)、ヘッダ付き透過モードにおいて、送信完了時の応答メッセージを停止します。
00004000
:重複チェッカの緩和
受信側において、重複チェッカの条件を緩和します。
重複チェッカは、中継などにより重複して届いてしまったパケットを排除するための仕組みです。
100ms以下など短い間隔で送信を行うと、異なるパケットであっても同一のものであると見なされてしまう場合があります(続き番号が異なる場合も含む)。
送信間隔を短く設定する場合や、たくさんの送信機を同時に使用する際は、この設定を有効としてください。
00010000
:強制的に代替ボーレートを適用
起動時にBPS
ピンの入力が Low でなくとも、代替ボーレートの設定を適用します。
00020000
:副ポートへ同時出力
シリアル出力TX
の内容をシリアル副出力TX_SUB
にも適用します。
00040000
:主ポートの切り替え
シリアル入出力TX
/RX
とシリアル副入出力TX_SUB
/RX_SUB
を入れ替えます。
00100000
:中継レイヤを制限
書式モード(アスキー・バイナリ)において、ネットワーク層を利用する配送方式を指定した場合に、必ず1階層上位に位置する中継機や親機へ送信させます。通常、ネットワーク層を利用する配送方式では、上位層で最も電波通信品質の高い中継機や親機へ送信します。
中継機能について
通信距離が足りない場合や、障害物があって通信できない場合には、中継機を使用することが有用です。
中継機能を持った端末は、自身が受信したパケットを他の端末へ送信します。
中継機能の設定
通常は、インタラクティブモードへ入った状態で役割の値を1
-3
へ変更します。初期値は0
で、中継機能を持ちません。
r: set Role (0x0)
1
-3
の数値は最大中継段数を指します。例えば3
を指定すると最大3段まで中継されます。
親機子機の区別をする場合、子機のみ有効です。
設定例
次のネットワーク構成は、赤色の端末の役割を0
、青色の端末の役割を3
とした場合を示します。
赤色の端末を追加すると、赤色の端末同士で最大3段の中継を伴う通信を実現できます。
1.3.5 - キューアプリ マニュアル
1.3.5.1 - キューアプリ マニュアル
資料の取り扱いについてをご参照ください。
お気付きの点がありましたら、当サポート窓口にご連絡ください。
機能
モノに装着することで動きや状態を無線で送信できます。
- 複数の無線タグからのデータを親機で収集可能
- 複数の無線タグを親機で制御可能
- 16チャネルで複数システムを個別に運用可能
- グループ毎に異なるアプリケーションIDを設定することで、同一チャネルに複数システムを混在可能
- 暗号化と暗号化鍵の設定
1.3.5.1.1 - キューアプリの動作モード
1.3.5.1.1.1 - キューアプリのTWELITE CUEモード
加速度の計測、衝撃の検知、姿勢の検知、磁石の検知といった機能をすべて利用できるオールインワンモードです。
工場出荷時は本モードに設定されております。
設定
本モードを使用する場合は以下の項目を設定してください。
設定コマンド | 設定項目 | 設定値 | 備考 |
---|---|---|---|
p | センサ固有パラメータの設定 | 00000000 |
親機の出力
代表的な電池寿命
- 5秒に1度の定期送信のみの場合、約80日
- 5秒に1度の定期送信 + 1分に1度TWELITE CUEを動かした場合、約80日
- 1分に1度の定期送信のみの場合、約700日
- 1分に1度の定期送信 + 1分に1度TWELITE CUEを動かした場合、約565日