前回の記事に引き続き Mbed ネタです。今回ご紹介するのはコチラ!
みちびき対応と謳われている GPS モジュール PA6C (FGPMMOPA6C) が載った基盤です。Running Electronics で \3,580 で売っているのを買ってきました (www.runele.com/ca2/7/p-r-s/)。ブレッドボードに挿せる足も生えていて使いやすい基盤ですね。
前回同様、mbed LPC1768 に繋いでみます。
mbed LPC1768 | FGPMMOPA6C |
---|---|
VOUT (3.3V) | VCC (#1) |
P28 (TX) | RX |
P29 (RX) | TX |
GND | GND (#3 or #4) |
シリアル通信と電源供給だけ。まるで USB だ。
早速出力を見てみたいと思います。下のコードは後で送信処理がしやすいようレコード1本単位でループが回るようにしています。
#include "mbed.h"
Serial gps(p28, p27); // TX, RX
Serial pc(USBTX, USBRX); // TX, RX
DigitalOut led1(LED1);
int main() {
pc.baud(115200);
pc.printf("PA6C DEMO\n");
char gpsout[1024];
while (1) {
gpsout[0] = '\0';
while (1) {
char c = gps.getc();
char s[2];
s[0] = c;
s[1] = '\0';
strcat(gpsout, s);
if (c == '\n') {
break;
}
}
pc.printf(gpsout);
led1 = !led1;
}
}
そうそう、Windows の方は mbed 用シリアルポートドライバ導入をお忘れなく。
Windows serial configuration - Handbook | Mbed
ではコンパイル、書き込み、ターミナル繋いでリセットボタン!
なにやら CSV っぽい見た目のフォーマットでデータが吐かれていきます。やたらゼロが多いような・・・?
このフォーマットは NMEA 0183 というフォーマット[参考文献3]で、お目当ての座標データは $GPGGA
から始まるレコードに含まれている模様。後に続くカンマ区切りの値がそれぞれ以下を意味します。
- UTC 時刻 (HHmmss.SS)
- 緯度 (Google Map とかで使う緯度の 100 倍の値)
- 緯度の符号 (N or S)
- 経度 (Google Map とかで使う緯度の 100 倍の値)
- 経度の符号 (E or W)
- (以下略)
値がなかったりゼロが並んでたりするのは、まだ計測できていないことを示しています。屋内ではなかなか時間がかかる模様…
このままデータを眺めていても退屈なので、このデータをビジュアライズしてくれるツールを使ってみましょう。以下のページから Mini GPS tool (windows only) をダウンロードします。
Resources | Adafruit Ultimate GPS | Adafruit Learning System
起動するとこんな感じです。Comport は [Auto Detect] を押すと自動でセットされます。
やはり、まだ電波をキャッチできていないようです。でもしばらく待つと、12 というマークがついて日付・時刻が入りました。
参考文献4によると、12番くんはアメリカの GPS、2R-16M のようです。みちびき1号機は193番、2号機は194番なので、まだ PA6C の底力は発揮できていませんね。GPS は最低でも衛星3機+時間差を補正するためのもう1機の合計4機がないと測位できないため、この状態では測れません。外に出たくないならば、辛抱強く待ちましょう。
・・・と思ったのですが、窓をあけてちょこっと突き出しただけでこの通り!
193番、みちびき1号機登場!座標もドンピシャで出ました (モザイクいれていますが)。
ここまで確認できれば、あとは煮るなり焼くなりです。とりあえず前回の記事の Wi-Fi モジュールを使って VULTR VPS 東京リージョン に置いた Node-RED に送りつけてみました。NMEA 0183 フォーマットのまま送りつけているので、パースもクラウド上です。こんな感じで lat, lon を取り出すことができました。
理想は mbed 側で NMEA パースし、さらに LoRaWAN 送信を見越すと11バイト以内 (例えば Float x2 など) に収めたいところですが、それは今後の課題ということで、今日はここまで。
Stay tuned & Happy hacking!