node.jsによるGPS受信
OpenBlocks IoT BX1とインテルEdison Kitを使用した活用事例です。
1. bluetoothでの接続
Dual Electronics社製のXGPS160を使用するためにbluetooth-serial-portとnmea-0183を使用します。
bluetooth-serial-portを使用することでXGPS160と接続できます。
1-1. bluetooth-serial-portとnmea-0183のインストール
1 |
# npm install bluetooth-serial-port nmea-0183 |
1-2. 受信プログラム
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 |
// modules var btSerial = new (require('bluetooth-serial-port')).BluetoothSerialPort(); var nmea = require('nmea-0183'); btSerial.findSerialPortChannel(bluetooth_address, function(channel) { btSerial.connect(bluetooth_address, channel, function() { console.log('connected'); btSerial.on('data', function(buffer) { try{ var gps = nmea.parse(buffer.toString('utf-8')); if (gps['id'] == 'GPRMC') { console.log('GPRMC'); console.log(gps); } else { } }catch(e){ console.log(e); } }); }, function () { console.log('cannot connect'); }); }, function() { console.log('found nothing'); }); console.log('btSerial.inquire > '+bluetooth_address); btSerial.inquire(); |
※bluetooth_addressにはhcitool scanで表示される指定するGPSレシーバのbluetoothアドレスを指定する
1-3. 動作確認
1 |
# node プログラム名 |
2. シリアル接続
Adafruit社製のAdafruit Ultimate GPS Logger Shield – Includes GPS Moduleを使用するためにserialportとnmea-0183を使用します。
serialportを使用することでAdafruit Ultimate GPS Logger Shieldと接続できます。
2-1. serialportとnmea-0183のインストール
1 |
# npm install serialport nmea-0183 |
2-2. 受信プログラム
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 |
// modules var com = require("serialport"); var nmea = require('nmea-0183'); serialPort = new com.SerialPort(serial_port, { baudrate: parseInt(serial_baudrate), parser: com.parsers.readline(serial_readline) }); serialPort.on('open',function(err) { console.log('serialPort: Port open'); }); serialPort.on('data', function(data) { try{ var gps = nmea.parse(data) if (gps['id'] == 'GPRMC') { console.log('GPRMC'); console.log(gps); } else { } }catch(e){ console.log(e); } }); |
※serial_portにはシリアルポート名(’/dev/ttyMFD1’)、serial_baudrateはボーレート(9600)、serial_readline(’rn’)は改行コードを指定する
2-3. 動作確認
1 |
# node プログラム名 |
3. データ
nmea-0183を使用することで以下の情報が取得できます。
・GPGGA
・GPGSV
・GPRMC
・GPVTG
・GPGSA