先日、M5StickCの環境構築、および動作確認を行いました(記事は こちら)。
リンク
ところで、M5StickCにはGroveポートがついているので、今回は、これを使ってセンサをつないでみようと思います。
今回使うのは「M5Stack用GPSユニット」です。
リンク
このGPSユニットは、1500円程度と非常に安価ながら、GroveケーブルでM5StackやM5StickCにつないで使用することができます。
まずは、GPSデータを解析するためのライブラリ(TinyGPS++)をインストールします。
- ライブラリのダウンロードページ( http://arduiniana.org/libraries/tinygpsplus/ )を開きます。
- 「Download」ボタンをクリックします。
- 最新版のライブラリをダウンロードします。
- 解凍後、フォルダ名を「TinyGPSPlus」に変更して、「Arduino\libraries」フォルダ下に置きます。
以下のようなスケッチを書いてみました。
一定期間毎にGPSデータを取り込み、M5StickCのディスプレイに経度、緯度を表示するものです。
以下のふたつのサンプルスケッチを参考にしました。
- 「ファイル」>「スケッチ例」>「M5StickC」>「Unit」>「GPS」>「GPSRaw」
- 「ファイル」>「スケッチ例」>「TinyGPS++」>「DeviceExample」
#include <M5StickC.h> #include <TinyGPS++.h> HardwareSerial GPSRaw(2); TinyGPSPlus gps; int cnt=0; void setup() { M5.begin(); M5.Lcd.setRotation(3); GPSRaw.begin(9600, SERIAL_8N1, 33, 32); } void loop() { M5.Lcd.setCursor(0, 0, 2); M5.Lcd.fillScreen(BLACK); M5.Lcd.printf("### GPS TEST %d\n", cnt++); 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() ); M5.Lcd.printf("ALT:%.2f\n", gps.altitude.meters() ); } else { M5.Lcd.printf("INVALID\n"); } delay(5000); }
M5StickCとGPSユニットを屋外に持っていき、しばらく待っていると、ディスプレイに情報が表示されました。
位置情報はさまざまな用途に使えそうです。
なお、私がM5Stack、M5StickCの使い方を習得するのにあたっては、以下の書籍を参考にさせていただきました。
リンク
ごく基本的なところから、かなり複雑なスケッチや、ネットワーク接続など、比較的高度なものまで、つまづかずに読み進めていけるような構成になっており、大変わかりやすい本です。
このサイトで書いている、M5Stackシリーズ(M5Stack、M5StickCなど)に関するブログ記事を、「さとやまノート」という別のブログページに、あらためて整理してまとめました。
他のM5Stackシリーズの記事にも興味のある方は「さとやまノート」をご覧ください。
リンク