TWELITEの無線タグアプリを試す

- 作業マシン: macOS Sierra
- 親機側: MONOSTICK BLUE
- 子機側: TWE-Lite DIP RED
  - 設定に TWELITE R を用いる

# 全体の流れ

親機子機ともに、

1. ファームウェアを書き込む
2. インタラクティブモードを有効にしてシリアルコンソールから設定を行う

といった流れになります。

# 親機・子機で共通の作業

[ソフトウエア開発環境 TWELITE NET SDK](https://mono-wireless.com/jp/products/TWE-NET/TWESDK.html)から「最新版のダウンロード RED用」の「macOS版」をダウンロードする。
書き込みツールもサンプルのソースコードもビルド済みバイナリも含まれているので他に何もダウンロードする必要なし。

https://mono-wireless.com/download/SDK/MWSDK_201805/MWSDK_OSX_201805.tgz

ダウンロードできたら展開する。

```shell-session
$ cd MWSDK
$ ls
000manifest Documents   MkFiles     Tools       tweterm.py
ChipLib     License     TWENET      Wks_TWELITE
```

依存するパッケージをインストールする

```shell-session
MWSDK$ brew install libusb
MWSDK$ pip3 install --upgrade pip
MWSDK$ pip3 install pyserial
MWSDK$ pip3 install pyftdi
```

# 親機の設定

MONOSTICK BLUEをMacに挿す。

FTDIドライバを無効にする。

```shell-session
MWSDK$ sudo kextunload -b com.apple.driver.AppleUSBFTDI
```

`/dev/`からデバイスが消えていることを確認する。

```shell-session
MWSDK$ ls -1 /dev/cu.*
/dev/cu.Bluetooth-Incoming-Port
/dev/cu.iMiminashi5s-WirelessiAP
```

`tweterm.py`でMONOSTICKのデバイスID（？）を確認する。

```shell-session
MWSDK$ ./Tools/tweprog_py/tweterm.py -p ftdi:///?
Available interfaces:
  ftdi://ftdi:232:MW2GON6K/1   (MONOSTICK)

Please specify the USB device
```

判明したデバイスIDを指定して、無線タグ親機アプリのバイナリ `./Wks_TWELITE/App_Tag/Parent/Build/App_Tag_Parent_BLUE_MONOSTICK_L1101_V2-0-3.bin`を書き込む。

```shell-session
MWSDK$ ./Tools/tweprog_py/tweterm.py -p ftdi://ftdi:232:MW2GON6K/1 -F ./Wks_TWELITE/App_Tag/Parent/Build/App_Tag_Parent_BLUE_MONOSTICK_L1101_V2-0-3.bin -b 115200
```

書き込みが完了したら、親機アプリの出力がずらずらっと流れてくる。
`Ctrl+C`を2回押すと終了する。

FTDIドライバをロードしなおす。

```shell-session
MWSDK$　sudo kextload -b com.apple.driver.AppleUSBFTDI
```

USBシリアルデバイスが復活していることを確認する。

```shell-session
$ ls -1 /dev/cu.*
/dev/cu.Bluetooth-Incoming-Port
/dev/cu.iMiminashi5s-WirelessiAP
/dev/cu.usbserial-MW2GON6K
```

あとはscreenで受信データを確認したりインタラクティブモードで各種設定が行える。

```shell-session
MWSDK$ screen /dev/cu.usbserial-MW2GON6K 115200
```

親機のインタラクティブモードの利用方法は以下。
https://mono-wireless.com/jp/products/TWE-APPS/App_Tag/interactive.html#parent


# 子機の設定

TWE-Lite DIP REDをTWELITE Rに搭載してMacに挿す。

FTDIドライバを無効にする。

```shell-session
MWSDK$ sudo kextunload -b com.apple.driver.AppleUSBFTDI
```

`/dev/`からデバイスが消えていることを確認する。

```shell-session
MWSDK$ ls -1 /dev/cu.*
/dev/cu.Bluetooth-Incoming-Port
/dev/cu.iMiminashi5s-WirelessiAP
```

`tweterm.py`でTWE-Lite DIP REDのデバイスID（？）を確認する。

```shell-session
MWSDK$ ./Tools/tweprog_py/tweterm.py -p ftdi:///?
Available interfaces:
  ftdi://ftdi:232:MW1SEWE2/1   (TWE-Lite-R)

Please specify the USB device
```

判明したデバイスIDを指定して、無線タグ子機アプリのバイナリ `./Wks_TWELITE/App_Tag/EndDevice_Input/Build/App_Tag_EndDevice_Input_RED_L1101_V2-0-3.bin` を書き込む。

```shell-session
MWSDK$ ./Tools/tweprog_py/tweterm.py -p ftdi://ftdi:232:MW1SEWE2/1 -F ./Wks_TWELITE/App_Tag/EndDevice_Input/Build/App_Tag_EndDevice_Input_RED_L1101_V2-0-3.bin -b 115200
```

書き込みが完了したら、`Ctrl+C`を2回押してtwetermから抜ける。

FTDIドライバをロードしなおす。

```shell-session
MWSDK$　sudo kextload -b com.apple.driver.AppleUSBFTDI
```

USBシリアルデバイスが復活していることを確認する。

```shell-session
MWSDK$ ls -1 /dev/cu.*
/dev/cu.Bluetooth-Incoming-Port
/dev/cu.iMiminashi5s-WirelessiAP
/dev/cu.usbserial-MW1SEWE2
```

ここまでできたら、MacからTWELITE Rをいちど取り外す。

インタラクティブモードを有効にするために、TWE-Lite DIP REDの2番ピンをGNDに繋ぐ。
[無線タグアプリのインタラクティブモードの解説](https://mono-wireless.com/jp/products/TWE-APPS/App_Tag/interactive.html#enddevice)ではTWE-Lite DIPの場合について触れられてなくてかなり困ったが、[こっち](https://mono-wireless.com/jp/products/TWE-APPS/App_Tag/pinassign.html)に書いてあった。
（BLUE PALの場合もやはり2番ピンをGNDに繋ぐとインタラクティブモードになった）

再度TWELITERをMacに接続したら、screenでシリアルデバイスを開く。

```shell-session
MWSDK$ screen /dev/tty.usbserial-MW1SEWE2 115200
```

おそらくなにも表示されていないので、TWELITE RのRSTボタンを押す。
以下のような組み込み機器でありがちなクソデカプロンプトが表示されたらインタラクティブモードにアクセス成功。

```shell-session
--- CONFIG/App_Tag V2-00-3/SID=0x820213f5/LID=0x00/RC=10268 ---
 a: set Application ID (0x67726305) 
 i: set Device ID (--) 
 c: set Channels (15) 
 x: set Tx Power (13) 
 b: set UART baud (38400) 
 B: set UART option (8N1) 
 k: set Enc Key (0xA5A5A5A5) 
 o: set Option Bits (0x00000001) 
 d: set Sleep Dur (5000) 
 w: set Sensor Wait Dur (30) 
 m: set Sensor Mode (0x10) 
 p: set Sensor Parameter (0) 
 P: set Sensor Parameter2 (  ) 
---
 S: save Configuration
 R: reset to Defaults

```

子機のインタラクティブモードの設定方法は以下。
https://mono-wireless.com/jp/products/TWE-APPS/App_Tag/interactive.html#enddevice

To be continued...