村岡です。KDL新事業創造係IoT班ではいろいろなコネクテッドデバイスのプロトタイピングを行っています。 その中でケースに応じて様々なタイプの無線モジュールを試してみたりしてるんですが、最近はよくTWE-Liteを使っている気がします。 TWE-Liteはハルロックにもよく登場するのでその影響かもしれないんですが、簡単なことならプログラミングレスでいろいろできたり、技適通ってたりするのでささっとプロトタイピングしてみるのにはちょうどいいんですよね。 あとUSBスティックのMONO Stickがあるのもいい。PCにつないでデータモニタリングするのに便利です。
今回はこのMONO StickをPCに接続してMONO STickとTWE-Lite DIPを通信させ、node.jsでMONO Stickの通信を取得してみます。個人的にIoTはJSに集約されればいいと思ってるのでnode.js以外はあり得ません。
node.jsではUSBシリアル通信のためのモジュールnode-serialportを使います。
準備
まずMONO StickをPCに接続します。MONO Stickのポート名は/dev/tty.usbserial-XXXXXXX
だとします。
TWE-Lite DIPの電源を入れておき、MONO Stickと通信している状態にしておきます。
npmでnode-serialportをインストールします。
mkdir twelite-monostick && cd $_
npm init
npm install serialport --save
コード
var serialPort = require('serialport');
var portName = '/dev/tty.usbserial-XXXXXXX';
var options = {
baudRate: 115200, // ボーレートは115200
dataBits: 8,
parity: 'none', // パリティなし
stopBits: 1,
flowControl: false, // フロー制御なしにしとく
parser: serialPort.parsers.readline("\r\n") // パースは\r\nで
};
var sp = new serialPort.SerialPort(portName, options);
sp.on('data', function(input) {
try {
console.log(input);
} catch(e) {
return;
}
});
上記をindex.js
として保存します。
実行
node index.js
データの内容はこのページのデータの読み方を参照してください。
TWE-Lite DIPのデフォルトのファームだと一定間隔で上記のような固定長のデータが降ってきます。node.jsのコードも簡単ですね。MONO StickをラズパイとかにつけてTWE-Liteのベースクライアントにするのも簡単にできそうです。いろいろと想像が広がりますね。