For a rover without a reliable connection to a WiFi network or the ability to connect to a base station using LoRa can use the TinkerSend – Mobile 3G/4G SIM7000 based radio to connect to an NTRIP caster on the internet (either public or private). The NTRIP caster can be a publicly available caster (either free or paid) or can be your own NTRIP Caster. RTK2Go.com is an example of a publicly available caster. If you live near a current provider of data to RTK2Go, you may not need to operate your own base station at all (skip to the rover configuration in this use case). If you are not near enough a correction source, you can provide data to RTK2Go using a base station connected to a WiFi network or <provide data to RTK2Go using a second TinkerNav board with TinkerSend mobile.> A private caster is one that you operate yourself. Advantages of a private caster include additional data available to debug configuration issues.
In this example we will use a TinkerNav base station providing data to a SNIP based caster hosted on a local windows machine. The base station uses WiFi to send data to our SNIP based caster. The rover uses TinkerSend – Mobile and a 3G/4G network to connect to our caster and retrieve correction data to ultimately compute an RTK solution.
WiFi Base Station Configuration
- 1 TinkerNav base board
- 1 2.4 gHz WiFi antenna (provided with the TinkerNav boards)
- 1 GNSS antenna
- WiFi network for the base station
The GNSS receiver is configured during the setup portion of the example programs by sending binary messages to the receiver from the RP2040. Specifically, the programs find the current baud rate of the receiver and resets it to factory defaults. The RP2040 firmware then sends another binary message to the PX1122R/PX1125R instructing it to operate as a survey in base station. Optionally, you can also configure TinkerNav using SkyTraq’s GNSS viewer, using our instructions.
Since we are using a WiFi basestation the firmware comes from the TinkerNav WiFi NTRIP Project. Flash the program in the RP2040 base station directory in the GitHub project to the RP2040 on the TinkerNav. The Arduino IDE is used to flash the firmware since it is a readily available environment with a large user base and many useful libraries. The Arduino 1.8.X and 2.X IDEs can both be used for development and flashing. Remember to use the Earle Philhower RP2040 board set. Installation instructions are found in the documentation for the board set.
The firmware is responsible for programming the GNSS receiver, reading data from a TinkerCharge board, if present, and communicating that information the ESP32, which does most of the work in this configuration.
The RP2040 firmware depends on three libraries that must install, SerialTransfer, Max17055_TR, and programSkyTraq. The first of these is installed using the Arduino IDE’s Manage Libraries function, which you access from the Arduino IDE’s Tools menu. The image below show the correct library, which you can find by searching for their names in the library manager.
The second library, programSkyTaq is available from our GitHub programSkyTraq repository. Download, unpack, and copy the programSkyTraq directory to your arduino/libraries folder.
The third library, MAX17055_TR, is available at from our GitHub MAX17055_TR repository. Download, unpack, and copy the MAX17055_TR directory to your arduino/libraries folder. This library implements more functionality of the MAX17055 than the other available MAX17055 libraries. Note that even if you are not using the TinkerCharge board you will need this software, the software operates with or without the board present.
With the libraries installed, you can now compile the RP2040 firmware in the Arduino IDE and flash it to the RP2040 by connecting a USB-C cable from the computer running the Arduino IDE to the RP2040 side of the TinkerNav board. You will need to select the “Raspberry Pi Pico” board from the available RP2040 boards as shown heres
The RP2040 serial output should show it detecting the correct baud rate to talk to the PX1125R/PX1122R GNSS sensor and then show periodic updates of battery parameters sent to the ESP32. If no TinkerCharge and battery are present the data is not important.
In this use case, the ESP32 is responsible for connecting to the NTRIP caster to upload correction data. Grab the files in the ESP32 NTRIP Server Base Station directory to use for the ESP32. First modify the inputs.h file to point to the caster you wish to use. In this example we are using an SNIP NTRIP caster running on a windows machine on our network for testing. The inputs.h file looks like this:
The ssid and password for your WiFi network allow the ESP32 to connect to your network and get access to the internet.
The “host” value for your NTRIP caster is your the internal IP address for the computer running SNIP. You can find this using an IP scanner.
The “mntpnt” and “psw” are the mount point name and password you set up in SNIP. SNIP provides a series of helpful getting started articles that goes over the configuration of SNIP.
Next we will flash the ESP32 on the TinkerNav base board. To flash programs to the ESP32s you need to install the ESP32 board set in the Arduino IDE. A good tutorial on installing the ESP32 board set is found here.
The base station ESP32 board is responsible for serving RTCM correction data to an NTRIP caster. To do this the ESP32 reads the RTCM correction output of the GNSS receiver and sends it to a caster. This method enables one base station to support multiple rovers. The base station’s ESP32 also serves a webpage that displays basic information about the base station’s status.
To flash the firmware select the “ESP32C3 Dev Module” board from the “ESP 32 Arduino” board set.
A successful flash will look like this:
Running the program attached to a serial monitor should show something like the following output in the serial viewer:
The ESP32 connects to your network, connects to the caster, and then periodically sends correction data (RTCM) messages to your caster. You should also now be able to run your TinkerNav base station and see it appear in the SNIP “Pushed In Streams” tab, similar to the image below.
Congratulations, you have a working base station and are half way there!
TinkerSend – Mobile 3G/4G Rover Configuration
Next it is time to configure the rover. In this use case the rover uses the TinkerSend – Mobile 3G/4G radio to connect to an NTRIP caster from anywhere there is mobile service. For the rover you will need:
- 1 TinkerNav base board
- 1 GNSS antenna
- 1 TinkerSend – Mobile board
- 1 3G/4G antenna (included with TinkerSend – Mobile)
- 1 SIM card with data for a network with service in your area, examples include tello or hologram
- (optional for debugging) 1 2.4 gHz WiFi antenna
- (optional) Tinkercharge board
Plug the TinkerSend – Mobile board into the two 10 pin slots on the TinkerNav board. Be careful to align the arrows on both boards and ensure all 10 pins are connected to avoid damage to the boards. The TinkerSend – Mobile radio should extend over the GNSS antenna connector. If you are using it, plug the TinkerCharge board into the two 4 pin slots. Again, ensure you align the arrows and that all pins connect. The batter and solar connectors should be on the edge of the board.
Once you have double checked all physical connections, power the base station through one of the USB C ports on each.
Reminder to position your GNSS antennas outside and ideally away from buildings and trees. Placing a piece of metal a few inches bigger than the antenna under the antennas helps reduce multi-path and improve antenna performance. The metal can be as simple as a sheet of aluminum foil.
The GNSS receiver is configured during the setup portion of the example programs by sending binary messages to the receiver from the RP2040. Specifically, the programs find the current baud rate of the receiver and resets it to factory defaults. The factory defaults are the correct configuration for our rover. Optionally, you can also configure TinkerNav using SkyTraq’s GNSS viewer, using our instructions.