Outdoors Blind ADR with GPS

Hello there.

Some info about Blind ADR.

I just restarted my tracker project and I tried to map some gateways to use successfully my version of “Blind ADR”. When I have a gateway in 200m or less I transmit with SF7. FSK to be tested.

One problem already discussed here: Best practices when sending GPS location data [HowTo] is how to store the location data (lat / lon in this case) with less bytes.

I managed to store GW location data with 3 bytes but with the caveat that covers only one country.

Since the GW can be offline or we can have a new GW the node must be informed with a downlink. With less bytes it’s more easy to send downlinks and to inform the node about changes. Also we can track the most used routes of the node to inform only for those routes.

So let’s say your country has those edges.

lat   , lon
41.673, 26.311
39.817, 19.737
35.192, 23.643
36.386, 28.301
--The-range-is--
41-35   28-19
--the-values-are--
6	9
--the-bits-are--
3	4

You can pack the “big” numbers in one byte. One bit to spare.

Decimals fractions of 999 can divided by 4 to fit in one byte.

Total: one byte for MSB lat and lon and two bytes for LSB lat and lon. 3 bytes to store a location of gw. Since the drift is around 50 meters (or it is more?) is enough to calculate if we are close to a GW. For LoRa I think 200meters is close enough for SF7.

Let’s see about Netherland

53.671, 7.295
51.179, 7.02
51.179, 7.02
53.553, 3.417
--The-range-is--
51-53   3-7
--the-values-are--
2	4
--bits------
2	3	5bits total

Lets say: 0b00011111. 3 bits to spare.

Decimal fraction can now divided by 2 vs 4. We have 3 spare bits from the “big” numbers to use. If last bit is set (0b10000000) then we have 502-999, if it’s not set we have 0 - 500. Oh wait. This only helpful for the one decimal fraction (latitude). We will use the 0b01000000 bit for the longitude.

The one bit to spare can define the end of the “gateway list” or something else.

I am pretty sure some wheel is re-invented here. But I didn’t managed to found the wheel. :stuck_out_tongue: