blog.kimizuka.org
blog.kimizuka.org
最近はGPSの記事ばかり書いている気がしますが、今回はM5StickC Plus2でGPS座標の取得を試みます。
前回までは、M5StickC Plusを使っていましたが、今回からは、M5StickC Plus2を使います。本体が若干黄色くなっています。
M5StickC Pluswww.switch-science.com
M5StickC Plus2www.switch-science.com
GPSユニットの準備
M5StickC PlusにもM5StickC Plus2にもGPSは内蔵されていないので、別途GPSユニットを用意する必要があります。
今回は、m5-docsに載っていて、公式感を醸し出しているこちらのGPSユニットを使います。
GROVEケーブルでM5に簡単に接続できることが魅力です。
ソースコード
#include <M5StickCPlus2.h> #include <TinyGPS++.h> HardwareSerial GPSRaw(2); TinyGPSPlus gps; void setup() { M5.begin(); M5.Lcd.setRotation(1); M5.Lcd.fillScreen(BLACK); M5.Lcd.setTextSize(2); M5.Lcd.print("GPS"); GPSRaw.begin(9600, SERIAL_8N1, 33, 32); } void loop() { M5.Lcd.setCursor(0, 0); M5.Lcd.fillScreen(BLACK); while (GPSRaw.available() > 0) { if (gps.encode(GPSRaw.read())) { break; } } if (gps.location.isValid()) { M5.Lcd.printf("lat:%.6f\n", gps.location.lat()); M5.Lcd.printf("lng:%.6f\n", gps.location.lng()); } else { M5.Lcd.println("error"); } delay(5000); }
こちらをM5StickC Plus2に書き込み、GROVEケーブルでGPSユニットを接続すれば5秒に1回GPS座標の取得を試み、成功した際は画面に緯度・軽度を表示します。
のちに気づいたのですが、M5StickC Plus2とGPSユニットがシリアル(HardwareSerial)で通信しているので、PCとM5StickC Plus2でシリアル通信していると、座標を表示できません。