node.jsによるOBD2受信
OpenBlocks IoT BX1とインテルEdison KitでElm Electronics社製のELM327 OBD2 Bluetoothを使用するためにbluetooth-obdを使用します。
bluetooth-obdを使用することで以下の情報が取得できます。
・vas
・rpm
・temp
・load_pct
・map
・frp
1. bluetooth-obdのインストール
1 |
# npm install bluetooth-obd |
2. 受信プログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
// modules var OBDReader = require('bluetooth-obd'); var btOBDReader = new OBDReader(); var dataReceivedMarker = {}; var currentData = new Object(); btOBDReader.on('dataReceived', function (data) { console.log("dataReceived"); console.log(data); dataReceivedMarker = data; }); btOBDReader.on('connected', function () { console.log("connected"); this.addPoller("vss"); this.addPoller("rpm"); this.addPoller("temp"); this.addPoller("load_pct"); this.addPoller("map"); this.addPoller("frp"); this.startPolling(10000); }); btOBDReader.autoconnect('OBDII'); console.log('auto connect'); |
※autoconnectに指定する引数’OBDII’はhcitool scanで表示されるOBD2レシーバの名前を指定する
※bluetooth-obdのサンプルプログラムを使用
3. 動作確認
1 |
# node プログラム名 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
auto connect connected dataReceived { value: 'OK' } dataReceived { value: 'OK' } dataReceived { value: 'OK' } dataReceived { value: 'OK' } dataReceived { value: 'OK' } dataReceived { value: 'OK' } dataReceived {} dataReceived { mode: '41', pid: '0D', name: 'vss', value: 0 } dataReceived { mode: '41', pid: '0C', name: 'rpm', value: 711.5 } dataReceived { mode: '41', pid: '05', name: 'temp', value: 89 } dataReceived { mode: '41', pid: '04', name: 'load_pct', value: 21.484375 } dataReceived { mode: '41', pid: '0B', name: 'map', value: 29 } dataReceived { value: 'NO DATA' } dataReceived { mode: '41', pid: '0D', name: 'vss', value: 0 } dataReceived { mode: '41', pid: '0C', name: 'rpm', value: 708 } dataReceived { mode: '41', pid: '04', name: 'load_pct', value: 21.484375 } dataReceived { mode: '41', pid: '0B', name: 'map', value: 29 } dataReceived { value: 'NO DATA' } |