Home built GNSS receiver NTRIP corrected on Android phone.
I'm not sure how useful this information is because it's more typical to use a GNSS chip that can do NTRIP but in case anyone is interested ...
I built a GNSS receiver using an LC29HAA board (which can output RTCM3 and NMEA but does not do NTRIP). The receiver has an active antenna with a ground plane. It uses an ESP32 microcontroller to configure the LC29HAA and send the RTCM3 and GGA out over bluetooth. On my phone I run rtkgps+ (the eltorio github version which I ported to Android Studio using the AI agent to do 99.9% of it) which connects to an NTRIP caster and does the NTRIP corrections, and acts as a mock location app (so the other apps on my phone can access the NTRIP corrected location data).
When I was testing the device and the horizontal error went below 5 cm, my android apps, that only display horizontal error in tenths of a meter (10cm or greater), rounded down to 0. That was my criterion for success, 0 error. ;)
Here's what I had to buy:
- ESP32-WROOM-32E DevKitC $5.34 AliExpress
- Quectel LC29HAA development board $17.70 AliExpress
- UFL to SMA cable ( 8 pack) $0.99 AliExpress
- Amazon Basics 8-Pack AA NiMH Batteries 10.03 amazon.com
- KLAYERS Q25 GNSS L1+L2+L5 Multi Constellation | Multiband Quadrifilar Helix Active High-Precision Positioning Antenna $23.99 amazon.com
QGNSS testing software from Quectel free
LC29HAA firmware upgrade free
Total $58.05
And many hours of fun and frustration that I can't put a price tag on.
I already had a cellphone, and an AA battery powered usb power supply, and a breadboard and jumpers to wire it together, a tupperware type container to use as an enclosure, and a Windows computer to program the ESP32 using Arduino IDE and run Android Studio. My computer is somewhat underpowered for Android Studio but with AI help I adjusted the memory settings in the Studio and it works well enough. The biggest problem is that I've had 4, 5, and 8 hour timeouts for using too many AI tokens in Android Studio.
The battery pack plugs into the ESP32 via a usb cable, and the LC29HAA gets it's power from the ESP32.
I've ordered a voltage regulator and a power monitor to add to the device. When using the device in NMEA only mode, I have an app on my phone I wrote that I use to interact with the device, to monitor the voltage, change $PAIR settings, view the bluetooth signal strength in Bluetooth LE mode.
I am planning to eventually put the device on perfboard with "2.54mm Double Row Straight Female Header Socket Connectors" those supplies are also very inexpensive on aliexpress.
I don't have a lot of experience with GNSS. I got started on this when I dropped my cell phone and broke the glass and the replacement phone I bought had very poor gps reception. I was browsing on the internet for a better gps deivce when I saw a gnss board. I asked the google search AI what it was and the project snowballed from there. The device was pretty much conceived and designed and coded by Gemini (the AI in Google search AI mode and Android Studio). I had to pester it several times before it figured out how I could do NTRIP corrections on my phone. So the following comments are from someone who doesn't have a lot of gnss experience and doesn't know all the settings etc that can be used with NTRIP. But my experience is that for the average person NTRIP is a lot of fun to try and amazing to get cm level accuracy, but for a walking app, a receiver or phone that uses the L5 bands is more than good enough. To get centimeter level accuracy with my device it has to be stationary for several minutes and when I come to a stop after walking the location drifts until it settles down to the higher accuracy level. So for every day walks I might test the NTRIP corrections but will probably really just use the device with NMEA not RTCM3 and NTRIP corrections. I'd be interested if my characterization of what it's like using the NTRIP corrections are correct, there's a lot I don't understand about all the settings on rtkgps+.
Working with AIs was a learning experience. They are amazingly capable tools but they also make mistakes and occasionally contradict themselves (maybe in some cases because I didn't fully understand what they were saying). It was pretty bad when Gemini was giving me incorrect check sum values for $PAIR commands because you'd never suspect an AI would make that mistake. QGNSS can calculate the check sums so that saved me.
I've ordered a gnss board that should do the NTRIP but since I haven't tried it out I can't say how well it works but I think it is probably a better way to do this. I never heard of RTK when I started. The project got more and more complicated over time as I asked questions of the AI. It wasn't like an AI conceived the whole thing from the beginning, it evolved in response to my questions. So even though the AI is incredibly useful you have to work with it and understand it can screw up in unexpected way and give you wrong or misleading information. Also the AI doesn't remember previoous chats and becomes unstable as chats get longer and longer, so you have to explain yourself over and over every time you want to ask a question. I've found chatting to be a good practice because the AI offered suggestions I didn't think of asking about when I was just chatting. For exaple it helped me figuire the right settings to connect to an NTRIP caster when that info should have rightly come from the NTRIP provider.




