Arduino
# include <TinyGPS++.h>
# include <SoftwareSerial.h>
const int PIN_RX = 8, PIN_TX = 9;
TinyGPSPlus gps;
SoftwareSerial ss(PIN_RX, PIN_TX);
void setup() {
Serial.begin(19200);
ss.begin(19200);
ss.print("Start!");ss.println("");
}
void loop() {
while (Serial.available() > 0){
if (gps.encode(Serial.read())){
ss.print("LAT=");ss.println(gps.location.lat(),6);
ss.print("lng=");ss.println(gps.location.lng(),6);
ss.print("ALT=");ss.println(gps.altitude.meters());
}
}
}
メモ
・速度設定だいじ。でもMacだとsttyガン無視してるぽい。
$ sudo stty -F /dev/ttyUSB0 19200
・GPSの特性上、GPSアンテナと受信機をラズパイとかに接続して屋外や屋根に置いといて、RTKLIBにあるstr2strとかstrsvrでwifiで屋内にまで飛ばし、屋内でぬくぬくと実験することが多いかと思います。
そんなひきこもり諸君に朗報。
こんな感じでUSBシリアルにNMEAを投げられます。
$ sudo sh -c "nc 192.168.1.1 2101 > /dev/ttyUSB0"
また、U-blox社の受信機を使っているとNMEA+RTCM3とか、NMEA+UBXとかにしてる人もいるかと思います。その場合バイナリ値が混じってしまって正しく動かないのは想像難しくないですが、こんな感じで簡単に取り除けます。
sudo sh -c "nc 192.168.1.1 2101 |grep -a -E "^[\$]" > /dev/ttyUSB0"