obniz で GPS情報を取ってみた（取れるとは言ってない）

# はじめに
GPS情報を使ってなんかしたいので、手元にあったobnizでとりあえずやってみました。

# 用意するもの
[ＧＰＳ受信機キット　１ＰＰＳ出力付き　「みちびき」３機受信対応](http://akizukidenshi.com/catalog/g/gK-09991/)
!!! はんだづけが必要 !!!
![iOS の画像.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/27192/78a5d891-fa8f-b8fa-611f-e421ac250aa5.jpeg)

![iOS の画像 (1).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/27192/12e57201-5d44-7e15-b387-1956dbe573c7.jpeg)

[obniz](https://www.switch-science.com/catalog/3838/?gclid=Cj0KCQjwjYHpBRC4ARIsAI-3GkFBMo1lm8wxPl4MEsz_lF_YJVChzsJ_rdhVIE4PGHnBqU2hV2mbAjoaAhOAEALw_wcB)

完成したGPS受信機をぶっこみます
![iOS の画像 (2).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/27192/1e6c87cd-6bd3-8a9f-79e9-c6a1124b96f6.jpeg)

# 事前知識

GPSを受信するといろんな形式のデータがわさわさと取れます

```
$GPGGA,235944.799,,,,,0,0,,,M,,M,,*42
$GPGLL,,,,,235944.799,V,N*70
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPGSV,1,1,00*79
$GP
RMC,235944.799,V,,,,,0.00,0.00,050180,,,N*4B
$GPVTG,0.00,T,,M,0.00,N,0.00,K,N*32
$GPZDA,235944.799,05,01,3880,,*5B
```

それぞれがどういう形式なのか気になる方はこちらから
https://www.hiramine.com/physicalcomputing/general/gps_nmeaformat.html

その中でも今回は、**GPGGA**という形式のデータを使います

# コード

```
$npm i obniz
$npm i gps
```
https://www.npmjs.com/package/gps#gga---fix-information

```javascript:gps.js
const Obniz = require('obniz');
const GPS = require('gps')
var gps = new GPS;

gps.on('data', function(parsed) {
    console.log(parsed);
});

var obniz = new Obniz("xxxx-xxxx");
obniz.onconnect = async function () {
  
  obniz.display.clear();
  obniz.display.print("Hello World");
  
  obniz.io0.output(1);
  obniz.io1.output(0);
  const uart = obniz.getFreeUart();
  uart.start({tx: 2, rx: 3, baud:9600, drive:"3v"});
  
  var satellites = {};
    
  uart.onreceive = function(data, text) {
    obniz.display.print(text);
      
    if (typeof text === "string") {
      var lines = text.split('\n');
      for(var i = 0; i < lines.length; i++){
        if (lines[i].indexOf("$GPGGA") >= 0 ) {
          console.log( gps.update(lines[i]) )
        }
      }    
    }
  }
}
```

```
node gps.js
```

これで受信したGPSのGGA形式のデータをパースしてくれるはずなんだけど、屋内だからなのか、うまく緯度経度が取れません（泣）
obnizを利用しているので、wifiがある前提だから、外を歩き回るのも難しい。。。

```
{ time: 2019-07-06T23:59:52.800Z,
  lat: null,
  lon: null,
  alt: null,
  quality: null,
  satellites: 0,
  hdop: null,
  geoidal: null,
  age: null,
  stationID: null,
  raw: '$GPGGA,235952.800,,,,,0,0,,,M,,M,,*4A\r',
  valid: true,
  type: 'GGA' }
```

# 参考にさせていただいた記事
[obnizとGPSモジュールで地図(その1)](http://mickey-happygolucky.hatenablog.com/entry/2018/12/08/110550)

[準天頂衛星「みちびき」の信号をobnizで受信する](https://web.obniz.io/2018/02/22/%E6%BA%96%E5%A4%A9%E9%A0%82%E8%A1%9B%E6%98%9F%E3%80%8C%E3%81%BF%E3%81%A1%E3%81%B3%E3%81%8D%E3%80%8D%E3%81%AE%E4%BF%A1%E5%8F%B7%E3%82%92obniz%E3%81%A7%E5%8F%97%E4%BF%A1%E3%81%99%E3%82%8B/)


# 追記
[SDK](https://obniz.io/ja/sdk/parts/GYSFDMAXB/README.md)ありました...

```javascript
const Obniz = require('obniz');

var obniz = new Obniz("xxxx-xxxx");
obniz.onconnect = async function () {
  
    obniz.display.clear();
    obniz.display.print("Hello World");
   
    let gps = obniz.wired("GYSFDMAXB", { vcc:7, gnd:8, txd:9, rxd:10, Opps:11 });
    let gpsInfo = gps.getGpsInfo();
    console.log(gpsInfo);
}
```