m5stackでM5Stack用GPSユニットからデータを取得する際の備忘録


※注：~~色々と苦戦したものの未解決な症状を含んでいます、同じ問題を抱えている方の参考になれば幸いですが、そのまま同じ手順を踏むと期待通りの事ができない可能性を含んでいるのでご了承ください。~~ --> おそらく解決

## 準備するもの

- [m5stack BASIC](https://www.switch-science.com/products/9010)
- [M5Stack用GPSユニット [U032]](https://www.switch-science.com/products/5694)

## ピンを接続

接続の前に、GPSユニット付属のGroveケーブルは両方とも端子が付いているのですが、片方（m5stackに接続する方）は不要なので外しておきます。
ピンセットでツメをつまんでグッとしてやるとはずれます。

![IMG_8021.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344880/50d6023d-1ed3-4a8b-0fd5-fddaccecf7ac.jpeg)
![IMG_8022.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344880/77e39593-fea3-09e8-cc27-023f836c175d.jpeg)


> https://logikara.blog/gps/

その後、GPSユニット - m5stack BASICのピンを以下のように繋ぎます

5V - 5V
GND - GND
TXD - RX2
RXD - TX2

## コード書き込み

arduino IDEなどを用いてGPS取得確認用サンプルコードを実行します

サンプルコードは以下

> Arduino IDEのファイル > スケッチ例 > M5Stack > Modules > GPS > GPSRaw
> https://ambidata.io/samples/m5stack/m5stack_pulse_gps/
> https://gist.githubusercontent.com/TakehikoShimojima/105db486b31e2be98e7ee8aa50f7cdfa/raw/34c5ac726af30e855f652f8fadd9d685b8e79164/GPS_raw_M5Stack.ino

こちらも参考に頂き動作することを確認

https://logikara.blog/gps/#mokuji_3

以下のような感じでデータが表示されればGPSモジュールのサンプル動作はOK

## トラブルシュート

#### serial monitorで文字化け

`baudrate 9600 --> 115200` にすると文字化けが起こらなくなった。。
がこれは対処療法であり本質対策は別途考える必要があるかもしれない。

https://www.souichi.club/m5stack/serial-monitor-garbled-characters/

#### USBドライバ

Macの場合はUSBドライバをこちらからインストール必要な場合がある。はず。

https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers

https://qiita.com/hmmrjn/items/2b2da09eecffcbdbad85

#### `Failed to execute script esptool the selected serial port Failed to execute script esptool does not exist or your board is not connected`

おそらくterminalの接触不良とかterminal多重オープンとかが関係しているが色々してたら治った..

https://github.com/espressif/arduino-esp32/issues/1137
https://github.com/espressif/esptool/issues/824

> Make sure you have a good cable
Enter download mode manually by resetting the board while the boot button is pressed.
接触不良を疑い、配線をつけたり外したり、USB-TypeCを逆にしたりしてみると回避できた..?

#### uiflowからGPSデータを取得しようと試みた際に、GPSから緯度経度が取得できない（時刻は取得できる）

https://flow.m5stack.com/

uiflowからGPSデータを取得しようと試みるも、
GPSから緯度経度が取得できない（時刻は取得できる）

https://docs.m5stack.com/en/unit/gps

- `+ Units`で`GPS portA`を指定

これは未解決..何か一時的な不具合を期待してしばらく置いてみます

![IMG_8027.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344880/ca1f6f50-482e-e8f4-7928-bdfeb9934023.jpeg)

（追記）２時間くらい置いたら緯度経度を取得できた。これで正しく動いているか。  
尚、uiflowに限らずarduinoIDEから書込んだ場合に同様の現象が起きたら同様にしばらく置いてみると良いのではと思っています。

![IMG_8032.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344880/efcff82c-8e12-9727-cffb-30ba6644003c.png)

この時の`uiflow`は以下

https://github.com/seigot/amplify-geo-sawattemita/blob/main/m5/GPS.m5f

![スクリーンショット 2023-11-27 13.35.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344880/00533c2b-2ad3-976c-8790-915c875c16a5.png)

#### 普通のGroveポートを使う

（追記）
以下のようにすれば（ピンをはずさなくても）arduinoIDEを使って普通のGroveポートを使えました
https://msr-r.net/m5stack-grove-port2/

# 参考

https://qiita.com/seigot/items/cc95ca5556db6b0b69f8

https://qiita.com/hmmrjn/items/2b2da09eecffcbdbad85

https://www.souichi.club/m5stack/serial-monitor-garbled-characters/

https://logikara.blog/gps/#mokuji_3

https://note.com/46u/n/n8264a413d655#lfJ9k

https://msr-r.net/m5stack-grove-port2/

https://pages.switch-science.com/letsiot/m5stack_GPS_HR/index.html

https://www.switch-science.com/products/3861?_pos=3&_sid=f1746e8d6&_ss=r

https://msr-r.net/m5stack-grove-port2/