人生の旅路にもgpsが欲しかった
はじめに
- M5StackのAtom用GPSユニットを購入したので、データを拾ってみた。
- M5AtomS3でも、データの吸い出し自体は出来るけど、Bluetoothシリアルでデータを飛ばすなら、無印Atomかmatrixが必要。たぶん、Echoでもいけそうな気がするけど、持ってないから分からない。
書いたコード
#include <M5Atom.h>
#include <BluetoothSerial.h>
BluetoothSerial SerialBT;
void setup() {
Serial.begin(115200);
M5.begin(true,false,true);
Serial1.begin(9600,SERIAL_8N1,22,-1);//GPSユニットとの接続設定はこれだけ
SerialBT.begin("AtomGPS");
}
void loop() {
if (Serial1.available()) {
char c = Serial1.read();
Serial.write(c);
SerialBT.write(c);
}
}
コードの解説
吸い出されたGPSデータの例
- 室内だから、ほとんど受信出来てないけど、データの雰囲気はつかめると思う。
20:03:40.092 -> $GNRMC,110341.00,V,,,,,,,260324,,,N*64
20:03:40.125 -> $GNVTG,,,,,,,,,N*2E
20:03:40.157 -> $GNGGA,110341.00,,,,,0,00,99.99,,,,,,*7E
20:03:40.157 -> $GNGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*2E
20:03:40.189 -> $GNGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*2E
20:03:40.189 -> $GNGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*2E
20:03:40.221 -> $GPGSV,1,1,01,05,,,26*79
20:03:40.253 -> $GAGSV,1,1,00*68
20:03:40.253 -> $GBGSV,1,1,00*6B
20:03:40.253 -> $GNGLL,,,,,110341.00,V,N*52
- データのフォーマット(NMEA0183)はこちらを参照。
GPSデータの利用方法
- 上記のデータの羅列をPCでシリアルモニタに表示させてもあまり使い道もないけど、Bluetoothシリアルでスマホに飛ばして、こんなアプリに連携すれば、このgpsユニットのデータを元にした現在地表示が出来る。
- このアプリを利用するためには、androidの開発者向けオプションでの設定が必要だけど、下記を参照にして欲しい。
- また、このユニットに入ってるチップ(BN-200)は簡単に設定変更が可能で、このサイトのu-centerというアプリを使って、自分は日本のみちびきを受信可能な設定に書き換えて、ボーレートも9600から19200に引き上げた。詳しいやり方は、「u-center m8030 m5stack」で検索すれば出てくると思う。
さいごに
- こんな簡単なコードでgpsデータを使えて感動したけど、sdカードスロットが全く使えてない。
- そのうち、もう少し高度なことに挑戦してみようと思う。