SyntaxHighlighter

2015年8月13日木曜日

加速度センサTWE-Lite-2525AのOTA(無線)による設定変更手順

ToCoStickがあれば、加速度センサTWE-Lite-2525Aが検出する動作の種類(1回叩く・2回叩く・落とす・動かす)や感度を無線経由で設定できる。TWE-Lite Rを使えば有線で設定することも可能だが、配線が手間なので無線の方が簡単だ。
ただ、メーカーの説明がややわかりづらいので、作業手順をメモしておく。

用意するもの

  • TeraTermが動作するWindows PC
  • 親機:ToCoStick
  • 子機:TWE-Lite-2525A

設定に必要なソフトウェア(バージョンは投稿時点のもの)

  1. ToCoStick標準アプリケーション
    • App_ToCoStick.exe
    • GUIでセンサの受信を確認できるWindows用アプリケーション
  2. TWE-Liteプログラマ
    • TWE-Programmer.exe
    • ToCoStickのアプリを切り替えるためのWindows用アプリケーション
  3. OTA設定用アプリ
    • Samp_Monitor_EndDevice_Input_JN5164_CNFMST_1_5_3.bin
    • 無線経由でTWE-Lite-2525Aの設定を変更するためのToCoStick用プログラム
  4. 超簡単!TWE標準アプリ
    • App_TweLite_Master_JN5164_TOCOSTICK_1_6_6.bin
    • ToCoStickにデフォルトでインストールされている、センサ受信用プログラム

メーカー情報

OTA設定手順

  1. ToCoStickをPCのUSBポートに挿す
  2. 「TWE-Liteプログラマ」を使ってOTA設定用アプリ(Samp_Monitor_EndDevice_Input_JN5164_CNFMST_1_5_3.bin)をToCoStickへ書き込む
  3. 「TWE-Liteのリセット」ボタンを押す
  4. TeraTermでシリアル接続(設定>シリアルポートからボー・レートを115200に設定)
  5. Enterキーを押すとメニューが出る
    --- CONFIG/Samp_Monitor V1-05-3/SID=xxxxxxxxx/LID=0x00/RC=10000 ---
    a: set Application ID (0x67726305)
    i: set Device ID (--)
    c: set Channels (15)
    x: set Tx Power (13)
    d: set Sleep Dur (500)
    w: set Sensor Wait Dur (0)
    m: set Sensor Mode (0x35)
    p: set Sensor Parameter (16)
    P: set Sensor Parameter2 ()
    k: set Enc Key (0xA5A5A5A5)
    o: set Option Bits (0x00000011)
    ---
    S: save Configuration
    R: reset to Defaults
    *** POWER ON END DEVICE NEAR THIS CONFIGURATOR ***
  6. 例として、動作モードをActive/Inactive(動かした時・静止した時)のみ検出するように設定。 pを押してSensor Parameterを8と入力、SHIFT+sで記録。一瞬だけ下記のようなメッセージが出る。
    !INF FlashWrite Success
    !INF RESET SYSTEM...
  7. Active/Inactiveモードの感度調整。
    大文字のP (Sensor Parameter2) を選んでTHA(動作のしきい値1~15000mg、初期値は2000)とTHI(静止のしきい値1~15000mg、初期値は1938)を指定。
    例えばそれぞれ1000,950ならTHA=1000,THI=950と入力。同様にSHIFT+sで記録。
  8. 設定の入力を終えたら、電池を抜いたTWE-Lite-2525AをToCoStickに近づけ、電池を入れる。すると下記メッセージが出てTWE-Lite-2525Aへの設定が完了。
    !INF REQUEST CONF FR 81020950
    >>> TxCmp Ok(tick=35040,req=#0) <<<
    !INF ACK CONF FR 81020950
    SUCCESS 81020950
  9. ToCoStickに再度「超簡単!TWE標準アプリ(App_TweLite_Master_JN5164_TOCOSTICK_1_6_6.bin)」を書き込み、リセット
あとは前回の記事にしたがってシリアル通信を行えば、指定した動作のみ受信できるようになる。

しかし、手順7に載せた感度調整パラメータを指定すると、何故か動作を認識しなくなってしまう。
理由は不明だが、以下のtweetによればプログラムに問題があるようで、現状ではデフォルトの感度のまま利用するしかなさそうだ。

2015年8月9日日曜日

Raspberry Pi上でTWE-Lite-2525AからのデータをToCoStickを使って受信する

Raspberry PiにToCoStickを繋いで、加速度センサTWE-Lite-2525Aから送られてきた情報をシリアル通信でモニタリングするために行った作業のメモ。
ToCoStickのアプリはデフォルト(超簡単!TWEアプリ)のまま利用。

Raspberry PiのUSBポートにToCoStickを挿し、dmesgを確認。ttyUSB0として認識されたようだ。
user@raspberrypi ~ $ dmesg
(中略)
[  554.996366] usb 1-1.2: Product: TWE-Lite-USB
[  554.996382] usb 1-1.2: Manufacturer: TOCOS
[  554.996398] usb 1-1.2: SerialNumber: XXXXXXXX
[  555.003578] ftdi_sio 1-1.2:1.0: FTDI USB Serial Device converter detected
[  555.003774] usb 1-1.2: Detected FT232RL
[  555.004697] usb 1-1.2: FTDI USB Serial Device converter now attached to ttyUSB0
シリアル通信を行うため、cuコマンドを使えるようにする。
しかし、Raspberry Piの初期ユーザであるpi以外で接続を試みると、権限がないと言われてしまう。
user@raspberrypi ~ $ sudo apt-get install cu
user@raspberrypi ~ $ cu -l /dev/ttyUSB0 -s 115200
cu:  open  (/dev/ttyUSB0):  Permission denied
cu:  /dev/ttyUSB0:  Line in use
どうやら、シリアルポートはdialoutというグループに属していないと一般ユーザはもちろん、rootであっても利用できないようだ(初期ユーザであるpiは登録されているので使える)。なので使用しているユーザを追加してやる。
user@raspberrypi ~ $ sudo vigr
- dialout:x:20:pi
+ dialout:x:20:root,user
すると「整合性を保つために /etc/gshadow を変更する必要があるかもしれません。」とメッセージが出る。なので/etc/gshadowも同じように修正する。
user@raspberrypi ~ $ sudo vim /etc/gshadow
- dialout:x:20:pi
+ dialout:x:20:root,user
一度ログアウトし、再度cuコマンドで接続。無事接続され、TWE-Lite-2525Aを叩いたり動かすとログが出力される。ちなみにシリアル通信を終了させるには~.と入力する。Ctrl+Cでは終了できない。
user@raspberrypi ~ $ cu -s 115200 -l /dev/ttyUSB0
Connected.
:788115017B81020950002F2C000BCD00080F403C3A5E5EDE
:788115018A81020950002F34000BCD00010F3E3E3A5E66C6
:788115018A81020950002F3C000BCD00000F3E3E3A5E56CF
:788115017881020950002F44000BCD00000F3E3E3A5E56D9
~.

Disconnected.
続いて、公式で用意されているPythonによる読み出しスクリプトを動かしてみる。

このスクリプト(twelite_read.py)は引数に指定したポートへ接続し、TWE-Lite標準アプリの出力を整理して表示してくれる。
user@raspberrypi ~/python $ python twelite_read.py /dev/ttyUSB0
open serial port: /dev/ttyUSB0

:788115019081020950002F64000BC500010F3E3E3A5E56A8
  command   = 0x81 (data arrival)
  src       = 0x78
  src long  = 0x81020950
  dst       = 0x00
  pktid     = 0x15
  prtcl ver = 0x01
  LQI       = 144 / -48.10 [dbm]
  time stmp = 189.562 [s]
  relay flg = 0
  volt      = 3013 [mV]
  DI1=1/1  DI2=0/1  DI3=0/1  DI4=0/1
  AD1=1000 AD2=0996 AD3=0932 AD4=1508 [mV]
DI0~4はそれぞれ下記の動作に対応している。上記の例ではDI1が1/1になっているので、TWE-Lite-2525Aを1回叩いたことを意味している。
  • DI1: 軽く1回叩く
  • DI2: 軽く2回叩く
  • DI3: 落とす(50cm~?)
  • DI4: 動かす