-
Notifications
You must be signed in to change notification settings - Fork 423
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[LR11x0] Added position and satellite examples
- Loading branch information
Showing
2 changed files
with
198 additions
and
0 deletions.
There are no files selected for viewing
96 changes: 96 additions & 0 deletions
96
examples/LR11x0/LR11x0_GNSS_Autonomous_Position/LR11x0_GNSS_Autonomous_Position.ino
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,96 @@ | ||
/* | ||
RadioLib LR11x0 GNSS Autonomous Position Example | ||
This example performs GNSS scans and calculates | ||
position of the device using autonomous mode. | ||
In this mode, scan data does not need to be uploaded | ||
to LoRaCloud, however, it requires up-to-date almanac | ||
data. Run the LR11x0_Almanac_Update example to update | ||
the device almanac. | ||
NOTE: This example will only work for LR11x0 devices | ||
with sufficiently recent firmware! | ||
LR1110: 4.1 | ||
LR1120: 2.1 | ||
If your device firmware reports older firmware, | ||
update it using the LR11x0_Firmware_Update example. | ||
For full API reference, see the GitHub Pages | ||
https://jgromes.github.io/RadioLib/ | ||
*/ | ||
|
||
// include the library | ||
#include <RadioLib.h> | ||
|
||
// LR1110 has the following connections: | ||
// NSS pin: 10 | ||
// DIO1 pin: 2 | ||
// NRST pin: 3 | ||
// BUSY pin: 9 | ||
LR1110 radio = new Module(10, 2, 3, 9); | ||
|
||
// structure to save information about the GNSS scan result | ||
LR11x0GnssResult_t gnssResult; | ||
|
||
// structure to save information about the calculated GNSS position | ||
LR11x0GnssPosition_t gnssPosition; | ||
|
||
void setup() { | ||
Serial.begin(9600); | ||
|
||
// initialize LR1110 with default settings | ||
Serial.print(F("[LR1110] Initializing ... ")); | ||
int state = radio.beginGNSS(RADIOLIB_LR11X0_GNSS_CONSTELLATION_GPS); | ||
if (state == RADIOLIB_ERR_NONE) { | ||
Serial.println(F("success!")); | ||
} else { | ||
Serial.print(F("failed, code ")); | ||
Serial.println(state); | ||
while (true) { delay(10); } | ||
} | ||
|
||
// check the firmware version | ||
Serial.print(F("[LR1110] Checking firmware version ... ")); | ||
state = radio.isGnssScanCapable(); | ||
if (state == RADIOLIB_ERR_NONE) { | ||
Serial.println(F("check passed!")); | ||
} else { | ||
Serial.println(F("check failed, firmware update needed.")); | ||
while (true) { delay(10); } | ||
} | ||
|
||
Serial.println(F("Scan result\t| Latitude\t| Longitude\t| Accuracy\t| Number of satellites")); | ||
} | ||
|
||
void loop() { | ||
// run GNSS scan | ||
int state = radio.gnssScan(&gnssResult); | ||
if(state == RADIOLIB_ERR_NONE) { | ||
// success! | ||
Serial.print(gnssResult.scanResult); Serial.print("\t\t| "); | ||
|
||
// get the actual data | ||
state = radio.getGnssPosition(&gnssPosition); | ||
if(state == RADIOLIB_ERR_NONE) { | ||
// print the position | ||
Serial.print(gnssPosition.latitude, 6); | ||
Serial.print("\t| "); | ||
Serial.print(gnssPosition.longitude, 6); | ||
Serial.print("\t| "); | ||
Serial.print(gnssPosition.accuracy); | ||
Serial.print("\t\t| "); | ||
Serial.println(gnssPosition.numSatsUsed); | ||
|
||
} else { | ||
Serial.print(F("Failed to read result, code ")); | ||
Serial.print(state); | ||
Serial.print(F(" (solver error ")); | ||
Serial.print(RADIOLIB_GET_GNSS_SOLVER_ERROR(state)); | ||
Serial.println(F(")")); | ||
} | ||
|
||
} | ||
|
||
// wait a bit before the next scan | ||
delay(1000); | ||
} |
102 changes: 102 additions & 0 deletions
102
examples/LR11x0/LR11x0_GNSS_Satellites/LR11x0_GNSS_Satellites.ino
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,102 @@ | ||
/* | ||
RadioLib LR11x0 GNSS Satellites Example | ||
This example performs GNSS scans and shows the satellites | ||
currently in view. It is mostly useful to verify | ||
visibility and antenna setup. | ||
NOTE: This example will only work for LR11x0 devices | ||
with sufficiently recent firmware! | ||
LR1110: 4.1 | ||
LR1120: 2.1 | ||
If your device firmware reports older firmware, | ||
update it using the LR11x0_Firmware_Update example. | ||
For default module settings, see the wiki page | ||
https://github.com/jgromes/RadioLib/wiki/Default-configuration#lr11x0---wifi-scan | ||
For full API reference, see the GitHub Pages | ||
https://jgromes.github.io/RadioLib/ | ||
*/ | ||
|
||
// include the library | ||
#include <RadioLib.h> | ||
|
||
// LR1110 has the following connections: | ||
// NSS pin: 10 | ||
// DIO1 pin: 2 | ||
// NRST pin: 3 | ||
// BUSY pin: 9 | ||
LR1110 radio = new Module(10, 2, 3, 9); | ||
|
||
// structure to save information about the GNSS scan result | ||
LR11x0GnssResult_t gnssResult; | ||
|
||
void setup() { | ||
Serial.begin(9600); | ||
|
||
// initialize LR1110 with default settings | ||
Serial.print(F("[LR1110] Initializing ... ")); | ||
int state = radio.beginGNSS(RADIOLIB_LR11X0_GNSS_CONSTELLATION_GPS); | ||
if (state == RADIOLIB_ERR_NONE) { | ||
Serial.println(F("success!")); | ||
} else { | ||
Serial.print(F("failed, code ")); | ||
Serial.println(state); | ||
while (true) { delay(10); } | ||
} | ||
|
||
// check the firmware version | ||
Serial.print(F("[LR1110] Checking firmware version ... ")); | ||
state = radio.isGnssScanCapable(); | ||
if (state == RADIOLIB_ERR_NONE) { | ||
Serial.println(F("check passed!")); | ||
} else { | ||
Serial.println(F("check failed, firmware update needed.")); | ||
while (true) { delay(10); } | ||
} | ||
} | ||
|
||
void loop() { | ||
Serial.print(F("[LR1110] Running GNSS scan ... ")); | ||
int state = radio.gnssScan(&gnssResult); | ||
if(state != RADIOLIB_ERR_NONE) { | ||
// some error occurred | ||
Serial.print(F("failed, code ")); | ||
Serial.print(state); | ||
Serial.print(F(" (demodulator error ")); | ||
Serial.print(RADIOLIB_GET_GNSS_DEMOD_ERROR(state)); | ||
Serial.println(F(")")); | ||
|
||
} else { | ||
Serial.println(F("success!")); | ||
|
||
// print the table header | ||
Serial.print(F("[LR1110] Detected ")); | ||
Serial.print(gnssResult.numSatsDet); | ||
Serial.println(F(" satellite(s):")); | ||
Serial.println(F(" # | ID | C/N0 [dB]\t| Doppler [Hz]")); | ||
|
||
// read all results at once | ||
LR11x0GnssSatellite_t satellites[32]; | ||
state = radio.getGnssSatellites(satellites, gnssResult.numSatsDet); | ||
if(state != RADIOLIB_ERR_NONE) { | ||
Serial.print(F("Failed to read results, code ")); | ||
Serial.println(state); | ||
} else { | ||
// print all the results | ||
for(int i = 0; i < gnssResult.numSatsDet; i++) { | ||
if(i < 10) { Serial.print(" "); } Serial.print(i); Serial.print(" | "); | ||
Serial.print(satellites[i].svId); Serial.print(" | "); | ||
Serial.print(satellites[i].c_n0); Serial.print("\t\t| "); | ||
Serial.println(satellites[i].doppler); | ||
|
||
} | ||
|
||
} | ||
|
||
} | ||
|
||
// wait for a second before scanning again | ||
delay(1000); | ||
} |