XA1110 issues (inaccurate and old data)

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).

Where are you testing? Is it inside your home? GPS must be outside with a clear view of the sky to work properly.

1 Like

Well, yeah, but from my understanding, inside vs outside does not matter directly. When I’m in the aforementioned block-and-brick building, I can pull out my phone and open a map and it can easily track my position down to a small number of inches. Granted, my phone costed about $1000 and was developed by a multibillion dollar corporation, point is I do not need to be outside to get highly-accurate data. GPS as a system, it’s how many satellites are in view. Being indoors cuts out how many can be seen, sure, but this thing reported seeing eight of them at one time. When I did research years ago (actually, I think I read it in a GPS’ manual), what I learned was:

  1. At least two satellites are needed to provide positional data
  2. Three satellites will provide accurate position data as well as elevation data
  3. 4+ satellites just helps increase accuracy

And besides, if it did lose track of the satellites, shouldn’t it report the default information on each update (lat, long and elev = 0.0; time = 2, 23, 33.869)? Shouldn’t PPS stop flashing? Why is it so consistent with how it falls behind in the timestamps and how it is so consistent that when it catches up, it jumps by exactly 30 seconds every time? Why does the script crash after some number of minutes with errors in a system script? The Thing itself doesn’t crash and I can keep sending to and receiving from it. I’ll provide the script eventually as it is currently 7 AM and I’m only now going to bed. I’ll try to test it outside.

I do not need to be outside to get highly-accurate data.

GPS as a technology works best outdoors with a clear view of the sky. Multipath and antenna orientation will cause significant degradation to the receiver’s capability to calculate a fix.

2 Likes