SpresenseでGPS(GNSS)

# SpresenseでGPSを試す
Sonyの[Spresenseボード](https://www.sony-semicon.co.jp/products/smart-sensing/spresense/)でGPS(GNSS)機能を確認してみた。

## ソフト環境
Arduino IDE利用。Spresenseでの同環境利用については、[こちら](https://developer.sony.com/develop/spresense/docs/arduino_set_up_ja.html)に詳細あり。

## サンプルコードなど
Arduino IDEでSpresenseボードをインストールした時にインストールされるGNSSのサンプルコードを用いる。

![スクリーンショット 2021-07-11 18.17.53のコピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/634816/4f69bfed-f5f5-8fea-613f-68edb50d28df.png)

また、Spresenseの[GPSページ](https://developer.sony.com/develop/spresense/docs/arduino_tutorials_ja.html#_tutorial_gps)にも詳細な記載がある。

## 実験
本ボードに外部アンテナを接続せずテストを行っている。

### 自宅（マンション）内の窓際にボードを置いた時
４つ以上の衛星を安定的に取得できるようになると、測位されるらしい。以降、右から3番目の数値が取得できた衛生数である（numSat）。

```
1980/01/06 00:01:57.000604, numSat: 1, No-Fix, No Position
1980/01/06 00:01:58.000630, numSat: 1, No-Fix, No Position
1980/01/06 00:01:59.000618, numSat: 4, No-Fix, No Position
numSatellites: 4
[ 0] Type:GPS, Id: 1, Elv: 0, Azm:  0, CN0:32.200001
[ 1] Type:GPS, Id:11, Elv: 0, Azm:  0, CN0:6.930000
[ 2] Type:GPS, Id:12, Elv: 0, Azm:  0, CN0:13.400000
[ 3] Type:GPS, Id:21, Elv: 0, Azm:  0, CN0:22.709999
1980/01/06 00:02:00.000616, numSat: 4, No-Fix, No Position
1980/01/06 00:02:01.000612, numSat: 4, No-Fix, No Position
1980/01/06 00:02:02.000603, numSat: 4, No-Fix, No Position
1980/01/06 00:02:03.000628, numSat: 4, No-Fix, No Position
1980/01/06 00:02:04.000622, numSat: 4, No-Fix, No Position
1980/01/06 00:02:05.000613, numSat: 2, No-Fix, No Position
1980/01/06 00:02:06.000610, numSat: 2, No-Fix, No Position
1980/01/06 00:02:07.000604, numSat: 3, No-Fix, No Position

```
何度もトライしたが、安定的に４つ以上の衛星をキャッチすることはできずじまい。上記ログではたまたま４つの衛星を取得できたレベルなのであろう。窓際といっても室内は厳しいようだ（さらには外部アンテナ未接続）。ただし、室内でも、時刻を取得することはできた。下記ログ参照。

```
1980/01/06 00:02:34.000622, numSat: 2, No-Fix, No Position
1980/01/06 00:02:35.000616, numSat: 2, No-Fix, No Position
1980/01/06 00:02:36.000610, numSat: 2, No-Fix, No Position
numSatellites: 2
[ 0] Type:GPS, Id: 1, Elv: 0, Azm:  0, CN0:33.750000
[ 1] Type:GPS, Id:21, Elv: 0, Azm:  0, CN0:25.820000
2021/07/10 23:15:20.000646, numSat: 2, No-Fix, No Position
2021/07/10 23:15:21.000670, numSat: 3, No-Fix, No Position
2021/07/10 23:15:22.000664, numSat: 3, No-Fix, No Position

```

測位と整時とは別次元の話なのだろう。

### 自宅バルコニーにボードを置いた時（外部アンテナ未接続）

```
1980/01/06 00:00:50.000587, numSat: 4, No-Fix, No Position
1980/01/06 00:00:51.000586, numSat: 4, No-Fix, No Position
1980/01/06 00:00:52.000585, numSat: 5, No-Fix, No Position
1980/01/06 00:00:53.000585, numSat: 6, No-Fix, No Position
numSatellites: 6
[ 0] Type:GPS, Id: 1, Elv: 0, Azm:  0, CN0:27.330000
[ 1] Type:GPS, Id: 3, Elv: 0, Azm:  0, CN0:24.119999
[ 2] Type:GPS, Id: 7, Elv: 0, Azm:  0, CN0:26.760000
[ 3] Type:GPS, Id:19, Elv: 0, Azm:  0, CN0:3.990000
[ 4] Type:GPS, Id:22, Elv: 0, Azm:  0, CN0:31.250000
[ 5] Type:GPS, Id:30, Elv: 0, Azm:  0, CN0:6.930000
2021/07/10 23:46:50.000671, numSat: 6, No-Fix, No Position
2021/07/10 23:46:51.000665, numSat: 4, No-Fix, No Position

```

このケースでは、起動から1分弱で整時された。さらに続ける。

```
2021/07/10 23:47:57.000670, numSat: 4, No-Fix, No Position
2021/07/10 23:47:58.000664, numSat: 4, No-Fix, No Position
2021/07/10 23:47:58.770138, numSat: 4, Fix, Lat=xx.x31142, Lon=yy.y92145
2021/07/10 23:47:59.000690, numSat: 4, Fix, Lat=xx.x31142, Lon=yy.y92145
numSatellites: 4
[ 0] Type:GPS, Id: 1, Elv:51, Azm:215, CN0:26.879999
[ 1] Type:GPS, Id: 3, Elv: 4, Azm:175, CN0:0.000000
[ 2] Type:GPS, Id: 7, Elv:42, Azm:257, CN0:31.840000
[ 3] Type:GPS, Id:22, Elv:21, Azm:160, CN0:31.150000
2021/07/10 23:48:00.000685, numSat: 4, No-Fix, Lat=xx.x31142, Lon=yy.y92145
2021/07/10 23:48:01.000678, numSat: 5, No-Fix, Lat=xx.x31142, Lon=yy.y92145

```

起動から2分強で測位が開始されている。衛星配置なども関係しているため、測位開始されるまでの時間には、ばらつきがある。何度かトライしたが、5分以上かかったケースもある。

## 最後に
Spresenseボードは、秋月電子やスイッチサイエンスで6000円程度で売られている。他の機能も充実しており、GPSだけではなく他の用途にも有益に使えそう。