LoginSignup
13
12

More than 5 years have passed since last update.

ラズパイでTrackrr.ioに位置情報を表示してみた(2)

Last updated at Posted at 2016-07-28

前回からの続きです。
GPSモジュールをゲットしたのでラズパイに接続して、モジュールからの位置情報を表示できるようにしてみます。

IMG_2127.JPG

GPSを接続してみる

接続前

lsusb
pi@raspberrypi:~/trackrr.io-sdk-js-sample$ lsusb
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp. LAN9500 Ethernet 10/100 Adapter / SMSC9512/9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
ls /dev/tty*
pi@raspberrypi:~/trackrr.io-sdk-js-sample$ ls /dev/tty*
/dev/tty    /dev/tty13  /dev/tty19  /dev/tty24  /dev/tty3   /dev/tty35  /dev/tty40  /dev/tty46  /dev/tty51  /dev/tty57  /dev/tty62    /dev/ttyprintk
/dev/tty0   /dev/tty14  /dev/tty2   /dev/tty25  /dev/tty30  /dev/tty36  /dev/tty41  /dev/tty47  /dev/tty52  /dev/tty58  /dev/tty63
/dev/tty1   /dev/tty15  /dev/tty20  /dev/tty26  /dev/tty31  /dev/tty37  /dev/tty42  /dev/tty48  /dev/tty53  /dev/tty59  /dev/tty7
/dev/tty10  /dev/tty16  /dev/tty21  /dev/tty27  /dev/tty32  /dev/tty38  /dev/tty43  /dev/tty49  /dev/tty54  /dev/tty6   /dev/tty8
/dev/tty11  /dev/tty17  /dev/tty22  /dev/tty28  /dev/tty33  /dev/tty39  /dev/tty44  /dev/tty5   /dev/tty55  /dev/tty60  /dev/tty9
/dev/tty12  /dev/tty18  /dev/tty23  /dev/tty29  /dev/tty34  /dev/tty4   /dev/tty45  /dev/tty50  /dev/tty56  /dev/tty61  /dev/ttyAMA0

接続後

lsusb
pi@raspberrypi:~/trackrr.io-sdk-js-sample$ lsusb
Bus 001 Device 007: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp. LAN9500 Ethernet 10/100 Adapter / SMSC9512/9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

PL2303 Serial Portが増えてますね。

ls /dev/tty*
pi@raspberrypi:~/trackrr.io-sdk-js-sample$ ls /dev/tty*
/dev/tty    /dev/tty13  /dev/tty19  /dev/tty24  /dev/tty3   /dev/tty35  /dev/tty40  /dev/tty46  /dev/tty51  /dev/tty57  /dev/tty62    /dev/ttyUSB0
/dev/tty0   /dev/tty14  /dev/tty2   /dev/tty25  /dev/tty30  /dev/tty36  /dev/tty41  /dev/tty47  /dev/tty52  /dev/tty58  /dev/tty63    /dev/ttyprintk
/dev/tty1   /dev/tty15  /dev/tty20  /dev/tty26  /dev/tty31  /dev/tty37  /dev/tty42  /dev/tty48  /dev/tty53  /dev/tty59  /dev/tty7
/dev/tty10  /dev/tty16  /dev/tty21  /dev/tty27  /dev/tty32  /dev/tty38  /dev/tty43  /dev/tty49  /dev/tty54  /dev/tty6   /dev/tty8
/dev/tty11  /dev/tty17  /dev/tty22  /dev/tty28  /dev/tty33  /dev/tty39  /dev/tty44  /dev/tty5   /dev/tty55  /dev/tty60  /dev/tty9
/dev/tty12  /dev/tty18  /dev/tty23  /dev/tty29  /dev/tty34  /dev/tty4   /dev/tty45  /dev/tty50  /dev/tty56  /dev/tty61  /dev/ttyAMA0

/dev/ttyUSB0が増えてますね。

正常に認識されたようです。

シリアル通信してみる

pi@raspberrypi:~/trackrr.io-sdk-js-sample$ cu -s 4800 -l /dev/ttyUSB0
Connected.
$GPGGA,,,,,,0,00,,,M,0.0,M,,0000*48
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPRMC,,V,,,,,,,,,,N*53
$GPGGA,,,,,,0,00,,,M,0.0,M,,0000*48
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPRMC,,V,,,,,,,,,,N*53
$GPGGA,,,,,,0,00,,,M,0.0,M,,0000*48
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPGSV,3,1,12,01,00,000,,02,00,000,,03,00,000,,04,00,000,*7C
$GPGSV,3,2,12,05,00,000,,06,00,000,,07,00,000,,08,00,000,*77
$GPGSV,3,3,12,09,00,000,,10,00,000,,11,00,000,,12,00,000,*71
$GPRMC,,V,,,,,,,,,,N*53
$GPGGA,,,,,,0,00,,,M,0.0,M,,0000*48
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPRMC,,V,,,,,,,,,,N*53
$GPGGA,,,,,,0,00,,,M,0.0,M,,0000*48
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$G~PRMC,,V,,,,,,,,,,N*53
.

Disconnected.

お~来てますね。因みに終了は「~.」(チルダ ピリオド)を入力です。

でも、緯度経度とれてなくね?空っぽですね・・。

どうやらずっと信号検索中ままで受信できてないみたいです。

高感度受信機で、森林や都市部など上空が遮蔽された場所において性能を発揮します。

なんて書いてあるんですけどね。
社内で自席が一番窓際から遠いところにあり、厳しい感じなんですかね・・。

試行錯誤の結果、20mのLANケーブルをつなげて、なんとかラズパイを窓際に移動することに成功しました!
(移動作業を手伝ってくれたynottさんありがとうござしましたw)

すると

pi@raspberrypi:~$ cu -s 4800 -l /dev/ttyUSB0
Connected.
$GPGGA,040557.249,3541.7314,N,13945.9898,E,1,04,5.6,40.8,M,39.4,M,,0000*6D
$GPGSA,A,3,01,07,30,28,,,,,,,,,8.8,5.6,6.8*30
$GPGSV,3,1,12,01,69,232,23,07,34,241,39,30,34,275,26,28,21,316,26*70
$GPGSV,3,2,12,22,30,156,18,27,25,076,20,09,64,315,,13,50,099,*79
$GPGSV,3,3,12,16,44,185,,03,13,174,,08,10,257,,04,05,297,*76
$GPRMC,040557.249,A,3541.7314,N,13945.9898,E,1.02,267.56,270716,,,A*6C
$GPGGA,040558.249,3541.7317,N,13945.9899,E,1,04,5.6,41.1,M,39.4,M,,0000*68
$GPGSA,A,3,01,07,30,28,,,,,,,,,8.8,5.6,6.8*30
$GPRMC,040558.249,A,3541.7317,N,13945.9899,E,1.17,267.53,270716,,,A*60
~$GPGGA,040559.249,3541.7316,N,.

Disconnected.

取れてるじゃないですか!

コーディング

そのまえに

Node.jsでシリアル通信できるNode Serialport、NMEA-0183フォーマットをパースするためにnode-nmeaをインストールします。

pi@raspberrypi:~/trackrr.io-sdk-js-sample$ npm install serialport nmea-0183 --save
npm WARN package.json trackrr.io-sdk-js-sample@1.0.0 No description
npm WARN package.json trackrr.io-sdk-js-sample@1.0.0 No repository field.
npm WARN package.json trackrr.io-sdk-js-sample@1.0.0 No README data
/
> serialport@4.0.1 install /home/pi/trackrr.io-sdk-js-sample/node_modules/serialport
> node-pre-gyp install --fallback-to-build

node-pre-gyp ERR! Tried to download: https://github.com/EmergingTechnologyAdvisors/node-serialport/releases/download/4.0.1/serialport-v4.0.1-node-v46-linux-arm.tar.gz
node-pre-gyp ERR! Pre-built binaries not found for serialport@4.0.1 and node@4.4.7 (node-v46 ABI) (falling back to source compile with node-gyp)
make: Entering directory '/home/pi/trackrr.io-sdk-js-sample/node_modules/serialport/build'
  CXX(target) Release/obj.target/serialport/src/serialport.o
  CXX(target) Release/obj.target/serialport/src/serialport_unix.o
  CXX(target) Release/obj.target/serialport/src/serialport_poller.o
  SOLINK_MODULE(target) Release/obj.target/serialport.node
  COPY Release/serialport.node
make: Leaving directory '/home/pi/trackrr.io-sdk-js-sample/node_modules/serialport/build'
nmea-0183@0.0.7 node_modules/nmea-0183

serialport@4.0.1 node_modules/serialport
tqq bindings@1.2.1
tqq es6-promise@3.2.1
tqq commander@2.9.0 (graceful-readlink@1.0.1)
tqq debug@2.2.0 (ms@0.7.1)
tqq nan@2.4.0
mqq object.assign@4.0.4 (function-bind@1.1.0, object-keys@1.0.11, define-properties@1.1.2)

index.jsに処理を追加

index.js
var trackrr = require('trackrr.io-sdk-js');
var gpsKey = 'Trackrr.ioで取得したGPSのキー';
var secret = 'Trackrr.ioで取得したアクセスキー';
var client = new trackrr.GpsClientManager(gpsKey, secret);

var serialport = require("serialport");
var nmea = require('nmea-0183');
var port = '/dev/ttyUSB0';
var baudrate = 4800;
var readline = '\r\n';

var receiver = new serialport(port, {
  baudrate: parseInt(baudrate),
  parser: serialport.parsers.readline(readline)
});

client.on('connect', () => {
        receiver.on('data', function(data) {
                var nmeaData = nmea.parse(data);
                if (nmeaData['id'] == 'GPRMC') {
                    var gps = {};
                    var coords = {};
                    gps.coords = {};
                    gps.coords.latitude = Number(nmeaData.latitude);
                    gps.coords.longitude = Number(nmeaData.longitude);
                    client.publish(gps);
                    console.log(gps);
                    console.log(nmeaData);
                }
        });
});

こんな感じになれば成功です。

pi@raspberrypi:~/trackrr.io-sdk-js-sample$ node index.js
{ coords: { latitude: 35.69557, longitude: 139.76688667 },
  identity: 'ap-northeast-1:XXXXX',
  gpsKey: 'XXXXX',
  createdDate: 1469676353018 }
{ id: 'GPRMC',
  time: '032552.000',
  valid: 'A',
  latitude: '35.69557000',
  longitude: '139.76688667',
  speed: 0,
  course: 94.96,
  date: '280716',
  mode: '',
  variation: NaN }
{ coords: { latitude: 35.69557, longitude: 139.76688667 },
  identity: 'ap-northeast-1:XXXXX',
  gpsKey: 'XXXXX',
  createdDate: 1469676353760 }
{ id: 'GPRMC',
  time: '032553.000',
  valid: 'A',
  latitude: '35.69557000',
  longitude: '139.76688667',
  speed: 0,
  course: 94.96,
  date: '280716',
  mode: '',
  variation: NaN }
{ coords: { latitude: 35.69557, longitude: 139.76688667 },
  identity: 'ap-northeast-1:XXXXX',
  gpsKey: 'XXXXX',
  createdDate: 1469676354536 }
{ id: 'GPRMC',
  time: '032554.000',
  valid: 'A',
  latitude: '35.69557000',
  longitude: '139.76688667',
  speed: 0,
  course: 94.96,
  date: '280716',
  mode: '',
  variation: NaN }
^C
pi@raspberrypi:~/trackrr.io-sdk-js-sample$

で、Trackrr.ioのコンソール画面では表示されてますね。
image

しかし、微動だにしないんで面白みに欠けますね。
次回は誰かのバッグに忍ばせてみることにします・・・。

13
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
12