Arduino UNO R3 と秋月のGPS受信キット「AE-GYSFDMAXB」をつかう方法です。
AE-GYSFDMAXBは2200円で購入可能ならくらくGPSキットです。
レギュレーターやバックアップ電池まわりが予め実装されておりお手軽。
画像は秋月公式よりお借りしましたakizukidenshi.com
実際のところ
ハードウェア
AE-GYSFDMAXBの資料にはD0/D1を使うパターンが書いてます。
が、これだと使い辛い事この上ないので、ソフトウェアシリアルを使うバージョンに変更。
正確に1秒のハートビートを出してくれる"1PPS"は今回は不要なのでオミット。
実体配線はこんなかんじ。
ソフトウェア
#include <SoftwareSerial.h> #define SOFT_RX 10 #define SOFT_TX 11 SoftwareSerial mySerial(SOFT_RX, SOFT_TX); char incomingByte = 0; void setup() { mySerial.begin(9600); Serial.begin(115200); while (!mySerial && !Serial) {;} Serial.println("GPS Logging..."); } void loop() { if (mySerial.available() > 0) { incomingByte = mySerial.read(); Serial.write(incomingByte); } }
以下のようなパケットが1秒ごとにまとめて出てきます。
実験開始時には台風3号の影響かまるでシグナルを拾いませんでしたが、
雨雲が行ったら同じ場所に置いてるのに拾うようになりました。
理屈で分かってることでも、体験すると色々感じるものがありますね。
$GPGGA,144037.000,3538.9244,N,13932.5461,E,1,4,1.49,99.4,M,39.3,M,,*66 $GPGLL,3538.9244,N,13932.5461,E,144037.000,A,A*56 $GPGSA,A,3,05,02,15,30,,,,,,,,,3.16,1.49,2.79*06 $GPGSV,3,1,12,13,72,353,16,05,61,086,30,20,60,323,,15,49,276,27*7B $GPGSV,3,2,12,02,26,173,17,30,26,047,18,21,20,315,17,24,19,202,*7D $GPGSV,3,3,12,29,11,250,,28,09,082,,193,,,,49,,,*49 $GPRMC,144037.000,A,3538.9244,N,13932.5461,E,0.68,357.01,040717,,,A*6A $GPVTG,357.01,T,,M,0.68,N,1.26,K,A*36 $GPZDA,144037.000,04,07,2017,,*54