I’m wanting to build a tracking device to install/hide on my ATV and I figured the XA1110 GPS would be a good fit, but now I’m starting to think I should return it because it’s being…weird. I also purchased the RP2350 to play around with. I got MicroPython working on the 2350 and I managed to get it to talk to the GPS module, but the module is…iffy. I took one of the example codes from GitHub and it didn’t work (I’m new to Python and had zero idea that indention is necessary) (I was also using an R-Pi without a mouse, so every step was a struggle). I managed to reverse engineer the code enough to get the module to respond, but I was in a brick-and-block building and didn’t get any reception.
Now I am home and I did some more testing. The module took about three minutes or so to finally obtain its fix (far outside of the maximum time the datasheet says). I got it to spit out coordinates. They’re about 10 meters or so away from my actual position. Again, far outside of what the datasheet says. PPS is flashing reliably, implying a constant, good connection to the satellites (I even got it to tell me it saw 8 of them). I can deal with the location data being about 1000% out of specification because the thing I’m tracking is big enough to be seen from that far away. What I cannot deal with is the super-out-of-date data it keeps giving me.
I managed to get some code running (using the aforementioned examples) that once per second, it updates the NMEA data and prints it to the terminal (Putty on Windows 11) in the format of latitude, latitude direction, longitude, longitude direction, time: ( #.# N , #.# W , [hh, mm, ss] ). Some of the data gets repeated and other data arrives way late. Looking at just the seconds part of the timestamp, I see series of numbers similar to this:
33.0, 34.0, 35.0, 35.0, 36.0, 36.0, 37.0, 38.0, 39.0, 40.0, 40.0, 40.0, 40.0, 11.0, 11.0, 12.0, 13.0
If I let it run for a few minutes, the script eventually crashes with
Traceback (most recent call last):
File “<stdin>”, line 2, in <module>
File “qwiic_titan_gps/qwiic_titan_gps.py”, line 317, in get_nmea_data
File “qwiic_titan_gps/qwiic_titan_gps.py”, line 327, in feed_sentence
File “qwiic_titan_gps/micropyGPS.py”, line 641, in update
File “qwiic_titan_gps/micropyGPS.py”, line 521, in gpgsv
IndexError: list index out of range
>>>
Like…what’s going on? I didn’t modify any of the settings, so it should be default. Is the data only reliable every 30 seconds? Is the module defective? Is it losing sight of the satellites but somehow maintaining PPS and it only reports the last updated data when it loses reception?
Like I said, I can deal with the position being 10+ meters off because the thing is big and bright red and hard to miss, but the data needs to be accurate to the instant it gets asked for. The cops would want to know where the ATV was taken to more than where it was taken from (they’d already know that one when I call it in).