TWELITE DIP
TWELITEは『超省電力で簡単に使える!!』 触れ込みのマイコンです。本体はコインサイズのチップです。
REDとBLUEの2種類があり、REDの方が高出力品となっています。
詳しいスペックはTWELITEの製品情報を参照。
TWELITE BLUE (標準出力タイプ) |
TEWLITE RED (高出力タイプ) |
TWELITE DIP (標準出力タイプ) |
TEWLITE DIP (高出力タイプ) |
|||
同軸コネク・タタイプ | ||||||
他にも、各種用途向けに特化したバリエーションがありますが、本体は同じものです。
RST(21番ピン)をGNDに接続するとリセットが掛かります。
リセットスイッチを付けておくと便利です。
TWELITE DIP 「標準アプリ」
TWELITE DIPに初期インストールされている「標準アプリ」で使用できるシンクロモードでの使用方法は添付されている「TWELIGHT DIP クイックマニュアル」に記載されています。
1台を親機に設定(M1:13番ピン:をGNDに接続)し、他をモード設定に従って子機に設定(M1:13番ピン、M2::26番ピン、M3:27番ピンを解放、またはGNDに接続)します。
シンクロ動作
DI1(15番ピン) / DI2(16番ピン) / DI3(17番ピン) / DI4(18番ピン) の 解放 or プルダウン の状態が通信しているTOWELITEのDO1(5番ピン) / DO2(8番ピン) / DO3(9番ピン) / DO4(12番ピン) に反映されます。
AI1(22番ピン) / AI2(23番ピン) / AI3(24番ピン) / AI4(25番ピン) の入力電圧レベル(Vccに対する相対値:解像度10Bit)に対応して
PWM1(4番ピン) / PWM2(6番ピン) / PWM3(7番ピン) / PWM4(11番ピン)に PWM(解像度12Bit)パルスで出力されます。
TWELITEの出力電流は4mAしかないので、LED等を接続する際には出力電流に注意。
クイックマニュアルでは660Ωになっていますが、300Ω位でも大丈夫そうです。
UART通信
UARTシリアル通信によって、TWELITEの状態(電圧、電波強度、DI1~4/AI1~4の状態)を取得できます。また、UARTシリアル通信を使用してコマンドを送る事でIO(DO1~4/AO1~4)の操作、I2Cデバイスの操作が行えます。
パソコンに接続するにはUSB-シリアル変換アダプタを使用します。
M5Stamp PICO用のESP32 ダウンローダーキットを利用しました。
USB-シリアル変換アダプタは何でも良いですが、電圧と信号レベルには注意してください。
TWELITE専用のTWELITE-Rを使用するのが最も安全です。
アプリの書き換え時にもTWELITE-Rを使用する方が扱いが簡単ですので、一緒に購入するのも良いと思います。
通信条件は 115200bps 8N1 8bit パリティ無し ストップビット1です。
(20番ピンをGNDに接続する事で38400bpsに変更できます。)
通信ターミナルにはArduinoIDEのシリアルモニタが利用できます。
改行コードは<CR>+<LF>です。
UARTでの状態通知
UARTに接続すると、通信先のTWELITE(親機に接続した場合は子機の情報、子機に接続した場合は親機の情報)が表示されます。表示されている文字列は':'で始まる状態通知情報で、2文字で1バイトの16進数、24Byte分です。
状態の内容は下記の通り。
バイト数 | コマンド | 補足 |
---|---|---|
1 | 送信元の論理デバイスID | 0x00:親機 0x78 :子機 |
2 | コマンド | 0x81: IO状態の通知 |
3 | パケット識別子 | |
4 | プロトコルバージョン | 0x01 固定 |
5 | LQI値 | 電波強度 0xFF~0x00 |
6 | 送信元の個体識別番号 | |
7 | ||
8 | ||
9 | ||
10 | 宛先の論理デバイスID | |
11 | タイムスタンプ | 毎秒64カウント |
12 | ||
13 | 中継フラグ | |
14 | 電源電圧[mV] | |
15 | ||
16 | 未使用 | |
17 | DI の状態ビット | DI1(0x1) DI2(0x2) DI3(0x4) DI4(0x8) |
18 | DI の変更状態ビット | DI1(0x1) DI2(0x2) DI3(0x4) DI4(0x8) |
19 | AD1の変換値 | 0~2000[mV]のAD値を16で割った値 |
20 | AD2の変換値 | |
21 | AD2の変換値 | |
22 | AD3の変換値 | |
23 | AD1~AD4の補正値 | LSBから順に2ビットずつ補正値 |
24 | チェックサム | 合計値の2の補数 |
UARTでのIO操作
通信先のTWELITE(親機に接続した場合は子機の情報、子機に接続した場合は親機)のIOを操作するコマンドは以下の通り。’:’で始まり、1Byteを2文字の16進数(0~F)で表現し、終端は0x0D(CR) 0x0A(LF) の文字列で構成します。
バイト数 | コマンド | 補足 |
---|---|---|
1 | 宛先アドレス | 0x00: 親機, 0x01 ~ 0x64: 子機ID指定, 0x78: 全子機 |
2 | マンド番号 | 0x80 |
3 | 書式バージョン | 0x01 固定 |
4 | IO状態 | DI1(0x1) DI2(0x2) DI3(0x4) DI4(0x8) |
5 | IO状態設定マスク | DI1(0x1) DI2(0x2) DI3(0x4) DI4(0x8) |
6 | PWM1の設定値 | 0(0%)~1024(100%)または0xFFFF(設定しない) |
7 | ||
8 | PWM2の設定値 | |
9 | ||
10 | PWM3の設定値 | |
11 | ||
12 | PWM4の設定値 | |
13 | ||
14 | チェックサム | 合計値の2の補数 省略する場合は’X' |
DO1~DO4をONにするコマンドはこうなります。
:7880010F0F0000000000000000E9
チェックサムを省略する場合はチェックサム2バイトの代わりに’X’を送付します。
:7880010F0F0000000000000000X
UARTでのI2Cデバイス操作
通信先のTWELITE(親機に接続した場合は子機の情報、子機に接続した場合は親機)に接続しているI2Cデバイスの操作は次のコマンドで行います。I2Cデバイスへのコマンド・データ送信
バイト数 | コマンド | 補足 |
---|---|---|
1 | 宛先アドレス | 0x00: 親機, 0x01 ~ 0x64: 子機ID指定, 0x78: 全子機 |
2 | マンド番号 | 0x88 |
3 | 要求番号 | 任意設定:応答時のにこの番号が返される |
4 | コマンド | 0x1: Write 、 0x2: Read 、0x4: Write&Read |
5 | I2Cアドレス | |
6 | I2Cコマンド | 最初のコマンドバイト |
7 | データサイズ | 無い時は 0 |
8~N | データ | データサイズが0のときは、本フィールドは無し |
N+1 | チェックサム | 合計値の2の補数 |
I2Cデバイスからのデータ取得
バイト数 | コマンド | 補足 |
---|---|---|
1 | 送信元アドレス | 0x00: 親機, 0x01 ~ 0x64: 子機ID指定, 0x78: 全子機 |
2 | マンド番号 | 0x89 |
3 | 要求番号 | 任意設定:応答時のにこの番号が返される |
4 | コマンド | 0x1: Write 、 0x2: Read 、0x4: Write&Read |
5 | リザルト | 0:FAIL、1:SUCCESS |
6 | I2Cコマンド | 最初のコマンドバイト |
7 | データサイズ | 無い時は 0 |
8~N | データ | データサイズが0のときは、本フィールドは無し |
子機に接続した温湿度センサー DHT-20 を操作する例
親機→子機 | DHT20に0x71を送付 | :7888010138710055 |
子機→親機 | コマンド応答 | :788901010100FC |
親機→子機 | DHT20に0xAC 0x33 0x00を送付 | :7888020138AC023300E4 |
子機→親機 | コマンド応答 | :788902010100FB |
親機→子機 | DHT20から7Byteの読み取り | :78880302380007BC |
子機→親機 | DHT20からの取得データ | :7889030201071C7AC50568F3EC4B |
デコード手順はDHT-20の操作方法を参照
M5Stackでのサンプルスケッチ
以上の スケッチを公開しています。YuruPuro/MSP2807
M5Stack_IOino M5StackでTWELITE子機のIO状態の表示 IO出力を操作する。 M5Stackのシリアル通信はRX2(16番ピン),TX2(17番ピン)を使用 |
|
M5Stack_I2C.ino M5StackでTWELITE子機に接続した DHT-20 から温湿度を取得する M5Stackのシリアル通信はRX2(16番ピン),TX2(17番ピン)を使用 |