Introduction
I am writing this tutorial because adding wireless connectivity to the cheapest hobbyist RTK module (Ardusimple simpleRTK2B) is very useful but not trivial for those inexperienced with electronics, and Ardusimple closed down their forums for… some reason. Hopefully this is something anyone can follow to make RTK more accessible to the general hobbyist mapper.
This entry is building on from my previous diary entry “Affordable, High Quality 360 Street Level Imagery using GoPro Fusion and Ardusimple”, I have now been using the rig for a couple years and it is holding up very nicely.
A quick summary is that I used the simpleRTK2B with my phone and GoPro Fusion 360 to make a very cheap and ultra portable street level imagery rig, for Mapillary or Kartaview. It can be used handheld or mounted to a car or bicycle.
The last survey I went on, whilst mostly fine, did bring up some issues regarding the reliability of the USB OTG data connection. This has always been a weak point of the rig in other ways because;
- the USB connection would drain my phone’s battery and make it difficult to charge the phone simultaneously whilst surveying, unless using wireless charger
- the phone always needed to be in close proximity to the simpleRTK2B
- too easy to accidentally disconnect
- The OTG adapter is wobbly in the type-c port
As my Android app of choice “SW Maps” permits a bluetooth connection for the NTRIP corrections, it was the obvious way to go.
Bluetooth module choice
Ardusimple sells the Bluetooth XBEE module for the simpleRTK2B for €34 which is quite expensive. I know you’re reading this Ardusimple! Third party Bluetooth XBEE modules are somewhat cheaper (around $20 AUD), however I had a generic bluetooth UART module laying around so I decided to just solder it in. Similar ones are quite cheap to buy new, for example the arduino HC-06 module goes for around $10 AUD.
Connecting it up
Here is how I soldered mine;
Make sure you know everything is working before making the permanent connections though! I found that just shoving the wires into the holes was fine for testing purposes; no need to solder on headers if you’re feeling lazy.
Here is the wiring diagram;
It is important to connect IOREF to 3.3 volts (or whatever logic level is appropriate for your module) otherwise the hardware UART pins will be disabled. Then connect TX to RX and RX to TX.
Note; I was unable to get the UART2 working on the ZED-F9P even after configuring the target in u-center. Apparently it’s a common problem. Maybe this is another advantage of this method over the XBEE method.
Everything in the case and velcro strapped to a power bank;
The most important thing to getting it working is to match the baud rate between the Bluetooth module and the simpleRTK2B. Most bluetooth modules are configured to 9600 by default but for some reason mine was set to 57600 and I wasted a bunch of time troubleshooting this. The simpleRTK2B UART is often set at 38400. Both should be configurable but I found it easier to configure the simpleRTK2B baud rate using ublox U-center, so I set it to 57600.
Connect the simpleRTK2B to your computer and open U-center, and make sure everything is working OK. Then go View > Messages view (F9), expand UBX > CFG (Config) > PRT (Ports) and set the baud rate to whatever works. Click “Send” and then go UBX > CFG (Config) > CFG (Configuration) and hit “Send” again. I recommend pairing your phone to the bluetooth receiver and using the “Serial Bluetooth Terminal” app to make sure you are receiving the NMEA messages properly rather than just garbage (eg. �������������).
Finally, you can use SW Maps to establish the NTRIP connection. Go to Bluetooth GNSS and select your Bluetooth device. Make sure “Instrument Model” is set to u-blox RTK and that you are logging the data to a file. Then you can authenticate into the NTRIP server and CORS station of your choice and get that sweet RTK.
Results
I took the new Bluetooth upgraded rig out on a survey of Curtin University in Perth by bicycle. There were some issues with the bluetooth disconnecting when the phone went to sleep. I tried disabling battery optimisation in Android settings for SW maps but unfortunately it did not work. So I had to attach the phone to the front of my bike and just keep the screen always on. This is not ideal but the battery drain is significantly less than having the USB connection, and the charging port is free if I need it. Also I needed to check the map very often anyway to see where I had surveyed already, so it worked out fine in the end. The GoPro Fusion camera was attached to my helmet and the GNSS receiver + antenna + battery bank was mounted on the pannier rack. The weak link was actually the GoPro battery, however it wasn’t fully charged when I started out. I was able to do about 2 hours (16.4km) of surveying. The phone battery (Xiaomi manufactured in 2019) started out at around 64% and drained to 19%. The battery bank powering the Ardusimple board started out on 4 bars and drained to 3 bars. For a longer survey it might be handy to have more battery banks.