Image embedded for our convenience:

Technique described here.
the main sources of GPS errors are corrected
Ah, very nice. A little different from the typical setup we see here. Interesting project!
It would be useful for me to have one extra digit - is there absolutely no way to do this at all?
The GPS device isn’t providing the information for that digit. Look at the u-center display: it shows “52.40242533”. That looks like 11 significant digits (hundreds == 0), but it’ actually only 10 significant digits. The last “3” is the repeated remainder from converting fractional minutes (NMEA format DDDMM.mmmmm) to decimal degrees. NeoGPS correctly reports “524024253”.
The same is true for the lon: “-4.24079550”, last “0” is the remainder, and NeoGPS reports “42407955”.
FWIW, NeoGPS uses the remainder to round the 10th significant digit properly.
Another way to look at this: read the description of the binary UBX NAV-POSLLH message (Section 31.18.13). The lat/lon is provided in a 32-bit integer, as degrees * 1e7. That’s 10 significant digits.
Needing one more digit requires a few more bits, and now you’ve stepped across the 32-bit integer size. Things get messy real quick. However…
There is a binary message that provides 2 more digits: see the NAV-HPPOSLLH binary message, Section 31.18.9 on page 300. It still provides the 10 significant digits in a 32-bit integer, but it adds 2 extra fields with (-99…+99) in a byte (8 more bits). Adding the message to NeoGPS is not too difficult, but it’s a significant effort to use them correctly in Distance and Bearing calculations. If you’re just comparing lat and lon values, it would be much easier.
Are you recording the location of the plants to that precision? If not, these digits are useless.
After a quick look at that project, I wondered if you are sending the raw NMEA data over the air? If you are, you can get much better results by sending the parsed information. That would be 10x-80x fewer bytes.
I don’t know, 4cm seems pretty good. I would hope the CV part does the rest.
Cheers,
/dev