for my project, I am using Teseo-liv3f (GNSS1A1 expansion board) to get the GPS information In arduino IDE.
In order to reach power saving, I want to turn of the GPS for a period of time and turn it on.
I try to force the GPS into standby mode, and I send the command mentions in the software manual
MicroNMEA::sendSentence(gps,"$PSTMFORCESTANDBY,00010");
void loop(void)
{
//If a message is recieved print all the informations
if (ppsTriggered)
{
ppsTriggered = false;
ledState = !ledState;
digitalWrite(LED_BUILTIN, ledState);
// Output GPS information from previous second
console.print("Valid fix: ");
console.println(nmea.isValid() ? "yes" : "no");
console.print("Nav. system: ");
if (nmea.getNavSystem())
console.println(nmea.getNavSystem());
else
console.println("none");
console.print("Num. satellites: ");
console.println(nmea.getNumSatellites());
console.print("HDOP: ");
console.println(nmea.getHDOP()/10., 1);
long latitude_mdeg = nmea.getLatitude();
long longitude_mdeg = nmea.getLongitude();
console.print("Latitude (deg): ");
console.println(latitude_mdeg / 1000000., 6);
console.print("Longitude (deg): ");
console.println(longitude_mdeg / 1000000., 6);
nmea.clear();
}
//While the message isn't complete
while (!ppsTriggered && gps.available())
{
//Fetch the character one by one
char c = gps.read();
console.print(c);
//Pass the character to the library
nmea.process(c);
}
//Serial.println("@ LEAST 10 TICKS!");
MicroNMEA::sendSentence(gps,"$PSTMFORCESTANDBY,00010");
delay(5000);
digitalWrite(13, HIGH);
delay(2000);
digitalWrite(13,LOW);
delay(10000);
}
However, I can not turn in back to normal and receive GPS signal anymore. Does anyone know how to reach wake it up in software way?
Secondly, I also tried to turn it into periodic mode.
I use the following code
void loop(void)
{
//If a message is recieved print all the informations
if (ppsTriggered)
{
ppsTriggered = false;
ledState = !ledState;
digitalWrite(LED_BUILTIN, ledState);
// Output GPS information from previous second
console.print("Valid fix: ");
console.println(nmea.isValid() ? "yes" : "no");
console.print("Nav. system: ");
if (nmea.getNavSystem())
console.println(nmea.getNavSystem());
else
console.println("none");
console.print("Num. satellites: ");
console.println(nmea.getNumSatellites());
console.print("HDOP: ");
console.println(nmea.getHDOP()/10., 1);
long latitude_mdeg = nmea.getLatitude();
long longitude_mdeg = nmea.getLongitude();
console.print("Latitude (deg): ");
console.println(latitude_mdeg / 1000000., 6);
console.print("Longitude (deg): ");
console.println(longitude_mdeg / 1000000., 6);
nmea.clear();
}
//While the message isn't complete
while (!ppsTriggered && gps.available())
{
//Fetch the character one by one
char c = gps.read();
console.print(c);
//Pass the character to the library
nmea.process(c);
}
//Serial.println("@ LEAST 10 TICKS!");
//MicroNMEA::sendSentence(gps, "$PSTMLOWPOWERONOFF,1,0,0,0,0,0,0,3,100,0,1,1,15,180");
//MicroNMEA::sendSentence(gps, "$PSTMSRR");
delay(10000);
}
This also make no difference.
Does anyone have experience about this? Can you give me a help. I really appreciate it!