無線モジュールTWE-Liteを使う

日本製で使いやすい無線マイコンモジュールTWE-Liteを使い、PaPeRo iで無線センサー情報を収集してみます。

TWE-Liteの設定と確認

TWE-Liteには無線タグアプリ書き込んで使います。無線タグアプリが対応しているI2Cまたはアナログセンサーを接続し、
インタラクティブモードのmコマンドでセンサー種別を設定しておきます。
PaPeRo iにはMoNoSTICKを接続します。TWE-Liteから無線送信されるセンサーデータを
MoNoSTICKが受け取り、(USB)シリアルデータとしてPaPeRo iに渡してくれます。

動かす手順としてはMoNoSTICKをPaPeRo iに接続する前に、まずWindows PCに接続してTera Term等の端末エミュレータで
TWE-Liteのセンサーデータをちゃんと受け取れるか確認しておきます。

papero_tocos1m

これはTWE-LiteにBME280温湿度・気圧センサーモジュール(秋月/ストロベリー・リナックス他いろいろなところから
入手できます)を接続し、MoNoSTICK(実際に使用しているのは名称変更前のToCoStickですが違いは無いと思います)を
Windows PCに接続してデータを見た例です。
::ts=5xxという行はMoNoSTICKが出していて、無線受信データを表すものではありません。
::rc=80000000...の行がTWE-Liteからの無線データ受信で、ここでは気温26.40度、湿度52.71%、気圧998ヘクトパスカル
を表しています。

PaPeRo iのpythonスクリプトで動作確認

MoNoSTICKをPaPeRo iのUSBポートに接続すると、/dev/ttyUSB0として認識されるはずです。dmesgで確認しておきます。

papero_tocos2

シリアルデータをpythonを使って処理するにはpyserialを使いますのでpip3でインストールしてください。

# pip3 install pyserial

ひとまず受信データを単純に端末に表示するpythonスクリプトで動作確認します。
以下を/tmp/Extension以下の書き込み可能な場所にreadser.pyとして保存し、

import serial

ser = serial.Serial('/dev/ttyUSB0', 115200)
s = b''
while True:
    d = ser.read()
    if d == b'\n':
        print(s.decode('UTF-8'))
        s = b''
    else:
        s += d

実行します。

# python3 readser.py

papero_tocos3

pythonでシリアルデータを受け取れることが確認出来ました。
PaPeRo iにTWE-Liteのセンサー値をしゃべらせるといったアプリを作成する場合には、シリアルデータ受信スレッドを
作って受信データを解析し、標準ライブラリのqueueなどでPaPeRo i本体制御用スレッドに通知する、
といった方法を取ることになります。