Principle of operation
The principle of operation is relatively simple: the GPS data are collected thanks to an ultra-low power GNSS receiver from u-blox and a satellite communication module from Astrocast is used to transmit the data to the cloud.
The GNSS receiver is a MAX-M10S from u-blox. It does not output a so called "3D fix" with lat./lon., but a raw sample of data that we need to upload to a server that will return the 3D location of the tracker.
The following schematic summarizes well the overall acquisition process:

Follow this link if you want to learn more on the "CloudLocate" service from u-blox.
So how do we transmit our raw sample of data to the server ? Well, it's now that we have to give some more details on the satellite communication module from Astrocast: the Astronode S.
The Astronode S is a low power bi-directional satellite communication module which uses the L-band frequency band to communicate with the satellites. Once the raw GPS sample is acquired, the tracker will place it in the message queue of the Astronode S and the module will automatically look for a satellite from the Astrocast constellation. When a satellite is in view, the module will transmit the data that will then appear on the Astrocast portal.
The following schematic summarizes the overall data upload process:

Follow this link if you want to learn more on the service from Astrocast.
In the schematics of the tracker, you will see that the Astronode S and GNSS receiver share the same patch antenna as they are working in the same frequency range (1.5 - 1.6 GHz). The RF switch that has been selected is a GRF6011 from Guerrilla RF. Its fail safe feature enables a good low power solution: when the RF switch is not powered, one of the two RF path will present low insertion losses (<0.4 dB). When the switch is powered, the second RF path will instead go in a low insertion loss state as illustrated below:
This solution allows to keep the GNSS RF path active when the RF switch is turned off. When the Astronode S wants to use the antenna, its "ANTN_USE" pin of the module will power up the RF switch and connect the Astronode S to the antenna.
Tracker "fact sheet"
The main features of the tracker are listed below:
- GNSS "snapshot" mode (u-blox MEAS20 messages for M10 receivers - data will be processed on CloudLocate service.
- Single shared antenna for satellite communication AND GNSS acquisition.
- Remotely configurable thanks to satellite downlink (user can set the tracker configuration such as acquisition rates).
- Real-time scheduler (GNSS/sensors acquisition, generate status reports, etc.).
Some key technical aspects are listed below:
- Framework: Arduino core for SAMD21.
- GNSS module: MAX-M10S from u-blox (L1 band: 1.575 GHz).
- Communication module: Astronode S from Astrocast
- Downlink frequency: 1525-1559 MHz
- Uplink frequency: 1626.6-1660.5 MHz
- RF switch: GRF6011 from Guerrilla RF
- PCB substrate: FR4, 4 layers
- Connectors:
- 2 pin JST connector for wired battery.
- USB interface for programming.
Some facts on latency and acquisition rates:
- GPS acquisition rate: from 1 sample per day up to 1 sample per hour.
- Message end-to-end latency: a few hours (depends on the location of the tracker).
Low power - Yes, but how much ?
Here is a good place where to provide some power consumption profiles for the main components of the tracker. But first, we need a bit more theory...
What will influence the power consumption ?
Well... it depends... A few of the factors that will have an influence are listed below:
- Data transmission frequency: the higher the acquisition rate is, the longer the GNSS will stay ON and the larger the amount of data to transmit will be.
- Operating temperature: higher temperature will increase the power consumption of all the components on the tracker.
- Battery capacity: the bigger, the longer the tracker will survive...
- Network connectivity: more specifically for the satellite connectivity, the following factors will have to be taken into consideration:
- Number of satellites and orbital planes in the Astrocast constellation: the more we have, the less we have to wait/search for a satellite.
- Density and locations of the terminals: higher density of terminals in the region will lead to collisions which will trig multiple retransmission of the messages.
- Type of antenna used: with good antennas (antenna engineers will for sure need more details here !) we can catch higher number of satellite passes, thus reducing the amount of time we have to look for a satellite.
- ...
- Number of satellites and orbital planes in the Astrocast constellation: the more we have, the less we have to wait/search for a satellite.
- Environmental conditions:
- If we have a good visibility (no surrounding buildings, no trees,...), the GNSS receiver will provide quickly a RAW measurement. If not, the acquisition process will be elongated.
- Similarly, the satellite communication module has a relatively tight link budget. So anything that could block the signal will of course trig multiple retransmission of the data which will have an impact on the energy consumed.
All that being said, let's dive in and provide some numbers:
MAX-M10S GNSS module power profile
This one is relatively easy: the energy consumed depends only on the amount of time we activate the GNSS receiver.
In challenging environments, u-blox recommends to stop RAW data acquisition after 10 seconds and continues with the more "traditional" PVT acquisition and 3D fix up to 120 seconds. See this link for detailed information on how to use CloudeLocate in "mixed mode".
So we can assume the following:
Sky view quality | Good | Poor |
Acquisition time | < 10 s | < 120 s |
Current consumption @3V (GPS only, acquisition mode) | 8 mA | 8 mA |
Energy consumed for 1 acquisition | 0.264 J | 3.168 J |
Backup supply of the GNSS receiver @3V (Hardware backup) | 32 uA | 32 uA |
For acquisition rates of more than 4 hours between each sample, u-blox recommends to remove the backup supply of the GNSS receiver to save energy. The receiver will then do a cold start for every acquisition.
Astronode S communication module power profile
As mentioned earlier, the power consumption of the module is highly dependent on the sky visibility, location of the tracker and satellite constellation geometry.
Once a message is placed in the queue of the module, the module will automatically start looking for an Astrocast satellite. We can see in the figure below that the module is looking for a satellite every 17.7s and this produces small current bursts of ~50mA during 50ms. Then, when a satellite is detected, the module will go trough several phases:
- A synchronization phase with the satellite to receive time info, etc.
- A data transmission phase with burst of ~75mA.
- An acknowledge phase where the satellite will confirm the good reception of the message or if it needs to be re-transmitted.
The typical power consumption profile for such phase is presented below:
According to the Astrocast application note, the energy can be estimated as follow:
Number of bytes | 20 | 30 | 80 | 160 |
Satellite detection (3 hours) | 5.184 J | 5.184 J | 5.184 J | 5.184 J |
Transmission | 1.249 J | 1.515 J | 2.477 J | 4.248 J |
Retransmission rate | x1.5 | x1.5 | x1.5 | x1.5 |
Total for one message | 9.64 J | 10 J | 11.5 J | 14.1 J |
Tracker background power consumption
Finally, we need an estimate the power consumption of the tracker itself (MCU, LDO quiescent current, etc.)
Sleep mode 10.5 uA (for 24h) | 866 uJ |
So, to sum up, here is below the total energy consumed for one GPS acquisition (21 bytes) and transmission per day:
Sky view quality | Good | Poor |
GPS acquisition | 0.264 J | 3.168 J |
Data transmission + satellite search (3 hours waiting for satellite) | 9.648 J | 9.648 J |
Tracker sleep mode (21h) | 727 uJ | 727 uJ |
Total per day | 9.91 J | 12.81 J |
Pretty cool !
From theory to practice
Enough theory, let's go in the field and do some measurements. Here is a picture of the setup:

A real measurement was done below at the power up of the mini tracker to have the cold start of the GNSS and just before a satellite pass to avoid to wait too much for the measurement. A measurement was done with a Otii to see the current profile

Duration | Energy | |
GNSS acquisition + MCU | 8s 370ms | 0.598 J |
Data transmission | 11s 614ms | 1.386 J |
Satellite search | 1m 46s | 24.3 mJ |
For the data transmission, we match the theoretical value. For the GNSS, it took less than 10s as mentioned with a good sky view.
Usage in the field
First, where can I see my location ? Simple, we do provide a script in Python that will allow you to do so. The script will collect the raw data on the Astrocast portal, push them on the u-blox CloudLocate platform, then retrieve back the result and display it on an HTML map:
And finally, what can we do with this tracker ? We provide below a non-exhaustive list of possible applications. Do not hesitate to show us your ideas !
Battery life
You will find below a table summarizing the energy consumption of the tracker for different acquisition rates.
For the battery mounted on the mini track with a capacity of 200 mAh (3.7V LiPo)
conditions:
- Sky view with the same conditions than the measurement
- 3h of satellite search for each acquisition (worst case)
GPS acquisition per day | Energy consumed per day | Min. batt. life |
1 (21 bytes) | 10.3 J | 8.6 months |
2 (42 bytes) | 11.54 J | 7.7 months |
3 (63 bytes) | 12.8 J | 6.9 months |
4 (84 bytes) | 14 J | 6.3 months |
For those examples, all GNSS acquisitions are sent during on satellite pass per day.