導電布タッチセンサーモジュール nüno ver.2 を無線で使ってみる


「導電布タッチセンサーモジュール nüno ver.2 を有線で使ってみる」
https://qiita.com/nanbuwks/items/5b174546da5df383f155

の続きです。


「TWELITE 簡単アプリで I2C の動作確認」
https://qiita.com/nanbuwks/items/8b789009cf561d36027e
で確認した内容を元に、無線でタッチセンサーの情報を取得してみます。


# 使うもの

## nüno ver.2

![IMG_20201126_185240709.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/00610797-c5a9-db83-a06c-bc3c5eb18605.jpeg)

これは基板+電池+ケース+導電性布を接続するホックです。
内部にはCR2032ボタン電池が内蔵されています。
今回の方法は電池消費が激しいたため実験用途に外部から3.3Vを供給するのがいいかも知れません。

## TWELITE DIP

![IMG_20201126_190946791.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/7cc86dd4-5a04-99de-3f38-8d022052a0f6.jpeg)

nüno からの電波信号を受信するものとして、市販の TWELITE モジュールが使えます。
「超簡単！標準アプリ（App_Twelite）」が初期設定されている　TWE-Lite-DIP のシリーズだとプログラムの変更なしに受信できます。

写真は PCB アンテナの TWE-Lite-DIP-PCB です。


今回は、このようにUSBシリアルモジュールをつなげてPCで受けてみました。

![IMG_20201126_185614896.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/a941c1b4-5ef8-14b0-e12b-d8cf296cc0de.jpeg)


## PC , 通信ソフト

今回は Ubuntu Linux 20.04 で picocom を使っています。通信条件さえ合わすことができれば OS や通信ソフトは何でも構いません。

# 接続

送信側の nüno モジュールは電池を装着するだけで動作し始めます。
受信側の　TWELITE DIPは親機に設定するために、GPIO10番をGNDに落とします。(写真、黄色のジャンパー)
![IMG_20201126_185714699.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/78b106bb-af01-c7b1-9adc-fc1234ce986c.jpeg)

これを含め、以下のように配線します。


|シルク表記|信号名|接続先|用途|
|:---:|:---:|:---:|:---:|
|VCC|VCC|USBシリアル3.3Vに接続|電源供給用|
|GND|GND|USBシリアルGNDに接続|電源供給用|
|RX|RX|USBシリアルTXに接続|PCからの送信用|
|TX|TX|USBシリアルRXに接続|PCへの受信用|
|10|M1|GNDに接続|親機モード設定用|
|1|AI4|VCCに接続|ノイズによる余計な信号発生を抑制|
|A2|AI3|VCCに接続|ノイズによる余計な信号発生を抑制|
|0|AI2|VCCに接続|ノイズによる余計な信号発生を抑制|
|A1|AI1|VCCに接続|ノイズによる余計な信号発生を抑制|


# PC 上での通信ソフト


```

$ picocom -b 115200 -r -l  --omap crcrlf /dev/ttyUSB0
```

として親機と通信します。


通信条件は以下の通り

- ボーレート 115200
- フロー制御　なし
- 改行コード crlf

linux の改行コードは　cr なので　cr をキー入力すると crlf に変換するようにしています。


ポートが開くと以下のように電文が流れてきます。

```

:788115015D810B96CF000A33000CBE228406220F160B6836
:7881150160810B96CF000A7F000CBF228406220F160B68E6
:7881150160810B96CF000AB1000CBD238406220F160B24F9
:788115015A810B96CF000AE1000CBE228406220F160B648F
:7881150166810B96CF000B19000CAC238406210F150AB111
:788115015D810B96CF000B61000C57228406200E140A10CC
:7881150172810B96CF000B9B000C282384061F0D1409DDE1
:7881150172810B96CF000BD5000C052384061E0D13097B2E
:7881150172810B96CF000C15000BEE2284061E0D1309760B
:7881150172810B96CF000C61000BDA2284061E0D130961E8
:7881150172810B96CF000C9F000BCF2284061E0D13091006
・・・
```

これは、子機である nüno モジュールから定期で送られる信号を受信して、このように表示されています。
子機にも標準では「超簡単！標準アプリ（App_Twelite）」が書き込まれているため、この電文は状態通知

「相手端末からの状態通知：ステータス 0x81 - MONO-WIRELESS.COM」
https://mono-wireless.com/jp/products/TWE-APPS/App_Twelite/step3-81.html

の内容となります。


# 動作確認

```

:78880104250501X

```

と打ち込んで子機の I2C アドレス 0x25 に対し、レジスタ 0x05 を読み込みしてみます


|:|78|88|01|04|25|05|01|X|
|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
|セパレーター|子機に接続したI2Cデバイス|簡単アプリI2Cコマンド|任意の数値|I2Cデバイスへ書込|I2Cアドレス|I2Cレジスタ|書き込みデータ長|チェックサム|

```

:78890104010103F5
```

と出れば、レジスタ 0x05 の中身 0x03 の読み出しができています。



なお、このコマンドを連打してみましたが、1秒ごとしか返事は返ってこないみたいです。



# 子機の設定

アドレス0x05に 0x02を書いて、タッチモードにします。

```

:7888010125050102X
```


|:|78|88|01|01|25|05|01|02|X|
|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
|セパレーター|子機に接続したI2Cデバイス|簡単アプリI2Cコマンド|任意の数値|I2Cデバイスへ書込|I2Cアドレス|I2Cレジスタ|書き込みデータ長|データ列|チェックサム|


```

:788901010100FC
```

と帰ってきたらOKです。

# タッチ値の読み出し

MTCH6102には、RX0~RX14の15本のピンがあります。レジスタアドレス0x80-0x8E を読み込んで、ピンごとのRAW値を読み込むことができます。
nüno ではこのうち　8 本を使っていますが、旧モジュールでは　RX0~RX7、nüno 2 モジュールでは　RX2~RX9 の割当になっています。

## RX0 の読み出し

以下はレジスタアドレス0x80を読み込んで、RX0 を読んだ例です。

```

:78880104258001X
```

|:|78|88|01|04|25|80|01|X|
|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
|セパレーター|子機に接続したI2Cデバイス|簡単アプリI2Cコマンド|任意の数値|I2Cデバイスから書込&読出|I2Cアドレス|I2Cレジスタ|読み込みデータ長|チェックサム省略|

結果

タッチしていない状態

```

:78890104010100F8
```

タッチした状態

```

:7889010401011BDD
```

取得できました

## 多チャンネルの値を連続で読み出し


上記のやりかたをチャンネルごとにアドレスを変えて、読み込みすることでRX0~RX9の値を読み出しできますが、約1秒ごとしか子機からの信号が親機に伝わらないので10チャンネルの転送には約10秒かかります。

もっと効率的なやり方として、以下のようにデータ長を指定すると連続したレジスタアドレス分のデータが取得できます。

```

:7888010425800AX
```

布電極の端から2つ目のところを手で持ったうえで帰ってきたデータは以下のとおりです。RX8、すなわちレジスタアドレス　0x88　に該当するところが反応しています。

```

:78890104010A0000000000000282FE006D
```