Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

高機能なGPSモジュールZED F9Pをつかう その3:Arduinoでつかう

RasPiでPythonという方法のほかに、Arduinoでやる手もあります。

実際のところ

Qwiicコネクタを経由した構成はこんな感じ。


導入はIDEなら楽々。
f:id:shuzo_kino:20200529023001p:plain


SparkFun_Ublox_Arduino_Library/Example1_GetPositionAccuracy.ino at master · sparkfun/SparkFun_Ublox_Arduino_Library · GitHub
をそのまんま写経

#include <Wire.h> //Needed for I2C to GPS

#include "SparkFun_Ublox_Arduino_Library.h" //http://librarymanager/All#SparkFun_Ublox_GPS
SFE_UBLOX_GPS myGPS;

long lastTime = 0; //Simple local timer. Limits amount if I2C traffic to Ublox module.

void setup()
{
  Serial.begin(115200);
  while (!Serial); //Wait for user to open terminal
  Serial.println("SparkFun Ublox Example");

  Wire.begin();

  if (myGPS.begin() == false) //Connect to the Ublox module using Wire port
  {
    Serial.println(F("Ublox GPS not detected at default I2C address. Please check wiring. Freezing."));
    while (1);
  }

  myGPS.setI2COutput(COM_TYPE_UBX); //Set the I2C port to output UBX only (turn off NMEA noise)
  myGPS.saveConfiguration(); //Save the current settings to flash and BBR
}

void loop()
{
  //Query module only every second. Doing it more often will just cause I2C traffic.
  //The module only responds when a new position is available
  if (millis() - lastTime > 1000)
  {
    lastTime = millis(); //Update the timer

    long latitude = myGPS.getLatitude();
    Serial.print(F("Lat: "));
    Serial.print(latitude);

    long longitude = myGPS.getLongitude();
    Serial.print(F(" Long: "));
    Serial.print(longitude);
    Serial.print(F(" (degrees * 10^-7)"));

    long altitude = myGPS.getAltitude();
    Serial.print(F(" Alt: "));
    Serial.print(altitude);
    Serial.print(F(" (mm)"));

    long accuracy = myGPS.getPositionAccuracy();
    Serial.print(F(" 3D Positional Accuracy: "));
    Serial.print(accuracy);
    Serial.println(F("mm"));
  }

}

出力結果はこんな塩梅

SparkFun Ublox Example
Lat: xxxxxxxxxx Long: yyyyyyyyyy (degrees * 10^-7) Alt: 44805 (mm) 3D Positional Accuracy: 2766mm

下7ケタで小数点をうってやると、座標変換できます。
私は数値があまりに正確すぎて禿げました。
https://www.openstreetmap.org/?mlat=xx.xxxxxxx&mlon=yyy.yyyyyyy&zoom=20

参考もと

github.com