さて、こないだの実験ではM5StickCの加速度センサーを使ってみましたが、今日はついにGPSモジュールに手を出してみます。Arduino IDEのセットアップがまだの人は、このへんの記事を参考にしてください。
使ったGPSモジュール
今回利用したのは、こちらのM5Stack用GPSユニット(AT6558 + MAX2659)だ。お値段はAmazonで¥1,518です。
まずはライブラリをダウンロード
TinyGPS++ライブラリ(GPS/NMEA Parser)をダウンロードしましょう。
http://arduiniana.org/libraries/tinygpsplus/
ここから最新版をダウンロードしたら、解凍したファイルをフォルダごとArduinoのlibrariesフォルダ直下に置いて、フォルダ名を「TinyGPSPlus」に変更すればOKです。ちなみに今回はVersion 1.0.2bを使いました。
GPSユニットを接続
M5StickCとGPSユニットを、GROVEポートを使って接続しましょう。

コードを書こう
#include <M5StickC.h>
#include "TinyGPS++.h" // ダウンロードしたライブラリ
TinyGPSPlus gps;
HardwareSerial GPSRaw(2); // UART2でシリアル通信
void setup() {
M5.begin();
M5.Lcd.setRotation(3);
M5.Lcd.fillScreen(BLACK);
M5.Lcd.setTextSize(1);
M5.Lcd.setCursor(20, 15);
M5.Lcd.println("GPS UNIT TEST");
GPSRaw.begin(9600, SERIAL_8N1, 33, 32); // M5StickCのGROVEポート
while (!GPSRaw) {
; // シリアルポートが開くまで待つよ
}
}
void loop() {
while(GPSRaw.available()) {
gps.encode(GPSRaw.read());
if (gps.location.isUpdated()) {
M5.Lcd.setCursor(20, 30);
M5.Lcd.print("LAT="); M5.Lcd.print(gps.location.lat(),6);
M5.Lcd.setCursor(20, 45);
M5.Lcd.print("LNG="); M5.Lcd.print(gps.location.lng(),6);
M5.Lcd.setCursor(20, 60);
M5.Lcd.print("ALT="); M5.Lcd.print(gps.altitude.meters());
}
}
}
さあ、実行してみよう!

はいっ!見事に現在地のロケーションが表示されたね。ちなみにGoogleMapで確認したところ、かなりの精度で現在地を表していました。性能は良いみたいです。
GPSモジュールを使って作れそうなもの
- Bluetooth通信を組み合わせて、GPSスマートタグ的な使い方
- 決められた範囲から出たらブザーが鳴るガジェット
- 自転車で走ったコースのデーターロガー
いろいろと夢は広がります!
FuntastickC project !
Thank you.