ARGOS (ARTIC R2) Satellite Communication Guide
Encoding Latitude and Longitude
We normally think of GNSS Latitude and Longitude as both needing 32-bit storage, either as an integer or a floating point value. So, is it possible to send both Latitude and Longitude in the 56-bits available in a single ARGOS-4 VLD (Long) message? Well, yes, of course it is! But you have to be a little bit crafty about how you do it.
If we want to encode latitude and longitude to four decimal places, giving us an accuracy of ±5.55m at the equator:
- Longitude is in the range ± 0.0000 to 180.0000 degrees
- If we allocate one bit for the sign (plus/minus or east/west)
- And if we multiply the longitude by 10000 and turn it into an integer
- We need 21 binary bits to encode 180000010 (21 bits can encode values up to 221 - 1 = 2097151)
- Including the sign, we need 22 binary bits to encode the longitude
- Latitude is in the range ± 0.0000 to 90.0000 degrees
- If we allocate one bit for the sign (plus/minus or north/south)
- And if we multiply the latitude by 10000 and turn it into an integer
- We need 20 binary bits to encode 90000010 (20 bits can encode values up to 220 - 1 = 1048575)
- Including the sign, we need 21 binary bits to encode the latitude
We use that same format in our ARGOS ARTIC R2 Arduino Library examples. If you ask CLS or Woods Hole Group to apply the SPARKFUN_GPS template to your account on ARGOS Web, the latitude, longitude, south and west fields will appear in your data automatically:
Now, what should we do with those left-over 13 bits!? We'll leave that up to you. You might want to encode altitude as m above sea level. 13 bits would allow you to encode altitudes up to 8191m. For high altitude, you might want to encode altitude as 10's of m?