GNSS + LTE Asset Tracker Project, Part 1
Table of Contents
In this week’s project, I’m building an LTE-based asset tracking system that could be used for a range of objectives, such theft prevention (and recovery), delivery or transit vehicle tracking, as well as predictive maintenance if data that is collected is paired with a suitable machine learning service. All of my previous projects have been two layer boards without any space constraints, but I miss building really compact high density circuit boards, so in this project we’re going to aim to build the LTE/GNSS module as small as possible. There’s a lot to cover, so we’ll be looking at the objectives, part selection and schematics, and continuing with Part 2 that will focus on the PCB design and layout.
There are many uses for a project such as this, if installed into a bus or coach, the GNSS data could be reported back to the transit company to provide location updates, which could in turn be used to provide customers with estimates of the arrival time of their next service, and on a larger scale, be used to improve scheduling and stop timing data. If this was installed in a high value, portable asset, such as a construction light tower, generator, or other equipment that is often left in remote areas and a target for theft, the unplanned movement of the asset could trigger a police or security response. It could also be used to ensure an asset stays within a geofenced area.
Above is the PCB design you'll be reading about in the Altium 365 Viewer, a free way to connect with your co-workers, clients, and friends with the ability to view the design or download with the single click of a button! Upload your design in a matter of seconds and have an interactive way to take an in-depth look without any bulky software or computer power.
Tracking an asset is a great goal, but there are some fantastic machine learning tools and cloud based systems on offer, which can be connected to a device which could optimize maintenance schedules or automatically alert staff to the need for a technician to be sent out to a site. I’m going to add a basic CAN bus IC to the circuit as well as an accelerometer to allow the data to be collected from an engine management system and collect vibration data (which machine learning systems are excellent at turning into an early fault warning system). The accelerometer is also useful in that it can detect whether the object has been moved when the GNSS signal is poor or jammed, allowing further options for security.
Experienced thieves are all too aware of trackers, and they may cut battery cables so an asset tracker can’t operate—so I’m going to build in a single lithium polymer battery cell to power the system if it’s main battery is disconnected. This will also ensure continuous operation of the device through events such as a large generator starting, and causing a significant amount of voltage sag on the battery, especially in cold weather.
I’m aiming to build this device as small as possible and in such a way that it can be concealed. Many commercial tracking systems I’ve seen in use are expensive, bulky, difficult to install, and easy for thieves to disable or remove. While I’m not specifically optimizing this project to be low cost, I am trying to use the lowest cost components that will meet the requirements and perform their functions well.
As always, you can find this project along with all my others on GitHub under the very permissive MIT license. The MIT license essentially allows you to do what you will with the design, from copying small sections of it to mass producing it as is, as long as you are aware there may be errors and neither myself nor Altium can be held responsible for any issues.
Before we jump into looking at the ‘big ticket’ components, I just want to note that since I’m designing this to be as small as possible, I’m using 0201 (imperial) sized parts wherever possible for the passive components. I would use 01005 (imperial), however I struggle to hand prototype with those—so I’m sticking with the bigger 0201, which allows me to build a prototype with just a paste stencil, tweezers, and a reflow oven. This project could likely be shrunk further with 01005 sized parts.
My requirements for an LTE/GNSS module are fairly simple, but they rule out many of the options I would normally use. As this is an example project, the module must be certified for use in any country or have variants for different regions. In addition to this, I want to use a module that is available at major component distributors, so if you want to build one of these trackers, you can without having to hunt for a supplier. We’re also specifically looking for modules that are pre-certified. This, if used correctly, allows the completed board to be certified as an unintentional radiator which contains a pre-certified intentional radiator. Doing this allows very low volumes of this board to be built and certified without the relatively huge expense of intentional radiator certification.
The past 5 years have certainly seen a huge rise in the number of cellular modules available and in stock levels at the major distributors. 10 years ago, it could have been a struggle to find a cellular module that could be used globally at a major supplier (such as Mouser or Digi-Key), especially at a low price, despite the range available. With the rise of the Internet of Things, there is a lot more demand for cellular access for devices such as the one I am designing. As such, the LTE band caters specifically to IoT devices with the LTE Cat-M1 and NB-IoT bands. These bands are specifically designed to handle the requirements of a low powered device running from batteries, as long as the device is primarily sending small amounts of data.
With this in mind, I have selected the uBlox SARA -R410M module, which has options for all the major global regions. It’s available from major distributors and the cost is quite reasonable. It’s a very modern cellular modem supporting the latest LTE standards while still having some backward compatibility to previous generation standards for areas struggling with coverage. This application will not begin to use all the features of the module, as we only need basic internet with low data rates.
I’m going to pair the SARA module with a Linx Technologies ANT-LTE-CER-T board mount multi-band antenna.
A key requirement for this project is positioning accuracy—it's critical that the navigation receiver radio can receive signals from many satellites. The best way to do this is to use a Global Navigation Satellite System (GNSS) receiver rather than pure GPS. This allows the system to potentially receive navigation fix data from GPS (USA), GLONASS (Russia), Galileo (EU), and BeiDou (China)—significantly increasing the number of satellites used for a positioning fix. Given that this device will likely be installed in a discrete location, it may have a challenging view of the sky, so more potential satellites in view is definitely a good thing.
In past projects, I’ve struggled to find any GNSS module that can beat the uBlox 8 series, so this project is going to be uBlox-centered. The specific module I’m going to use is the uBlox NEO-M8N, which has flash memory on it that allows its firmware to be updated. This is more expensive than the other 8 series options, but I feel that firmware updates in devices such as this is worth the cost.
While the GNSS receiver does not need to be certified, I still prefer using the module version of the uBlox over the bare IC, as it does come with a SAW filter and LNA on board, saving layout and tuning of the final product. It also comes in an RF shielded enclosure, which for this product is a big bonus, as it will be in close proximity to the powerful LTE modem, which can operate on frequencies close to the GNSS L1 band. If I was not using a shielded module, I would need to make an RF shield for this board, adding further engineering cost.
If external power is disconnected from the tracker, this device will need to potentially run for long periods of time from it’s onboard battery to continue providing tracking the asset. These radio modules can be put into a low-power sleep mode, so I want to use a microcontroller which can get to a very low sleep power consumption. I also need a relatively compact microcontroller.
With these requirements, I went straight to the Silicon Labs EFM32 series. I have previously done extensive testing on a wide range of ARM microcontrollers, as well as some 8 and 16 bit microcontrollers and the EFM32 series, which were impossible to beat for low power consumption and the ease of getting them into and out of low power sleep states.
For this project, the EFM32 Tiny Gecko is the best tradeoff between cost, functionality, size, and power. Specifically, I’m using the EFM32TG11B520F128GM32-B, which is in a 5x5mm QFN32 package and has no need for an external crystal, further saving space.
Battery Charging and Management
Many battery charger ICs available are only designed for a 5 V input. I want to have my common intermediary voltage on this board be 8 V for reasons we’ll get into soon—which rules out many single cell charger ICs that don’t support more than 6 V input. This project doesn’t need fast charging capabilities, as the battery is only operating as an uninterruptible power supply, with the device expected to be always plugged in. Therefore, I’m not overly concerned with charge current, just input voltage and space.
I decided to use the Texas Instruments BQ24040DSQR, with a maximum charge current of 1 A, it’s more than sufficient for my needs. Also, the PWSON package is just 2x2mm which fulfils the requirement for a compact LTE/GNSS module.
Beyond just charging the battery, we also need to know the charge state if we are running disconnected from external power. For this, I’m using the Texas Instruments BQ27542DRZ I2C battery manager. It can precisely monitor the discharge state, giving an exact reading of the used percentage of power rather than an approximation, as simply looking at voltage would do. I’m not implementing any battery cutoff functionality—the cost of a single 18650 cell pales in comparison to potentially recovering an incredibly expensive asset from that last packet of data before the battery was killed. By precisely monitoring the battery discharge, the firmware can extend the life of the device by sleeping for long periods of time between checking in and feeding back data from the cellular modem if need be. The cellular modem is by far the largest consumer of power, and monitoring its power consumption and controlling its usage is the most effective way to extend the disconnected run time.
Sensing and Data Storage
As mentioned above, using a cellular modem is a great way to reduce the battery life of the device. Therefore, we want to use it as little as possible, while still feeding useful data back. To best utilize the modem, it’s worth storing data to be transmitted in bursts, the microcontroller doesn’t have a large amount of flash space so it’s best to have an external flash. I’m using a 4 megabyte SPI flash IC which will allow a significant amount of positional, movement, or other collected data to be stored and periodically transmitted in a burst.
As I mentioned at the start of the article, the device could be used for predictive maintenance and the EFM32TG has CAN bus support it, so I have added an ON Semiconductor NCV7351D13R2G CAN transceiver so that data could be collected from an engine management system or other CAN-enabled device. This data could be collected on the external flash to be transmitted to a cloud service in bursts as well.
Many of my recent projects have had a strong focus on switched mode power supply design, and with good reason, as the power supply is often the heart of a project, electrically speaking. In this project we’re going to do things a little differently. Due to the space constraints, I’m trying to use very small integrated modules rather than building multiple voltage regulators. These modules are all far smaller than a regulator I could lay out, and they are often smaller than just the inductors I would have used alone.
My goal is to support a 10-35V input, which would allow use with both 12 V and 24 V lead acid batteries at a discharged and fully charged state. With a single lithium cell (3-4.2v) as our battery backup and a wide range of voltages to support, I will need an intermediate voltage for everything to run from.
I settled on 8 volts for the intermediate voltage. It’s just below our minimum input voltage and not too far above the onboard battery voltage. This provides a good mid point for the regulators while still allowing the efficient generation of the 5 V, 3.8 V and 3.3 V required for our ICs, and for the battery charger IC to run from.
The input is regulated down using a Monolithic Power Systems MPM3550 module, and the onboard battery is boosted using a TPS61089. I could not find a suitable boost converter module that was smaller than the solution I could build with the TPS61089, however the boost converter is the only non-module regulator on the board.
The 8v intermediate voltage is then dropped to 5V for the CAN transceiver using a MC78LC50 linear regulator as the current draw is quite low. 3.8V is supplied to the SARA module using a PMU8218 D module, and 3.3V for the rest of the system is from the Texas Instruments LMZ21701SILT. I really enjoyed searching for these regulators. It’s pretty jaw dropping how much power some modules are able to switch from incredible small and relatively inexpensive modules.
For the instantaneous load switch from external power to battery, I’m using the same Analog Devices LTC4414EMS I used in my previous 12V UPS project.
There’s quite a bit going on in this project compared to some of the previous ones, so I have illustrated the top level schematic sheet with a few notes to show power flow through the system.
Let's start looking at the schematics from the power input. With the goal of attaching this product to large generators and other industrial plants, we need to be very careful with the input power. The huge starter motors in large generators can cause enormous flyback voltages and other chaos.
To deal with the potentially damaging and inconsistent input voltage during a motor being cranked, I’ve gone a little overboard for the input power filter.
There is reverse polarity protection on both the positive and negative voltage inputs. The negative side is through the N-Ch MOSFET IC1 which is placed into the circuit ‘backwards’, which allows the body diode to conduct current, which in turn allows the gate to receive current fully, turning on the FET. To protect the body diode, I’ve also added an external diode, D5, to provide the same function from a more tolerant device.
On the positive side, there is a mini automotive blade fuse holder, M1, followed by two TVS diodes. The TVS diodes may not have the capability to deal with a large surge, however they will conduct enough current to burn out a fuse and thereby protect the circuit. After this basic input protection is a diode for further reverse polarity protection, another diode to protect from flyback and a basic conducted EMI filter. The input voltage regulator claims CISPR22 Class B compliance in it’s datasheet and recommends the implementation of the filter in the schematic for CISPR25 Class 5 compliance. As this device could be used in an automotive environment, CISPR25 Class 5 is worth targeting for conducted emissions compliance.
Compared to the regulators in the previous project, the input regulator for this design is very simple. All that is required is to set the frequency using a resistor from the suggestions in a table in the datasheet, and calculate the feedback resistor. The feedback resistor is just a resistor in parallel to the on-module feedback voltage divider. The input and output capacitors are larger capacitance than the minimum suggested by the datasheet, I went with the largest value I could for the 1210 (imperial) ceramic capacitor size and the input voltage range.
The battery charge design is very simple, the current is set for the maximum (1 A) the chip is capable of. You can read more about battery charging design in my 12 V Uninterruptible Power Supply project.
The battery cell monitor looks far more complicated than it is.
The battery monitor is essentially just a current sensor that is tallying up all the current flowing through the battery. The current sense resistor (R16) has a basic filtering network on it, but otherwise just connects directly to the BQ27542DRZ, which calculates the total used current which is then accessible over I2C.
The UPS functionality on this LTE/GNSS module is provided by the LTC4414EMS and a P-Channel MOSFET. As I said earlier, I won’t go into this too much, as we built an entire project around this earlier. It is worth noting here that the 8 V regulator for the battery is always running, if the power is interrupted when the cellular modem is transmitting at full power, there is not enough capacitance on board to supply it with power while a regulator takes several milliseconds to start up.
Battery to Intermediate Voltage
There is only one custom voltage regulator in this project. As I mentioned earlier, I could not find a suitably small and high powered boost regulator module. This TI TPS61089 is the smallest boost converter I could design for the current requirements of the cellular module.
I have minimal input capacitance in this design, because lithium batteries have sufficiently low resistance that I feel I can push the limits a little further than I would with a power source that is not able to respond to large current demands as quickly. Likewise, there is not a large amount of output capacitance, as only the immediate needs of this regulator need to be taken care of, there is sufficient bulk capacitance elsewhere in the circuit.
I’m running the regulator at 2Mhz, which does hurt the efficiency of the design somewhat, lowering it to about 86% under a 2A load, however, it reduces the footprint so much that it is worth the tradeoff for battery life. There are things I can do in software by not using the radio as frequently to make up for the power loss, but with software I cannot make the board smaller. With a 90%+ efficient design, I would use more than four times the board space.
The most power hungry device, the cellular modem, requires up to 2A at 3.8V. The Flex Power Modules PMU2818 is quite easy to implement most of the values in my schematic (other than the feedback divider) are pulled from the many tables in the datasheet, having suggested values for a wide range of voltages and conditions.
The output capacitance is limited to what should be placed immediately next to the module, as the bulk capacitance for the cellular modem is on the modem schematic sheet. The majority of the logic ICs on the board are 3.3V, however, they have quite modest current demands. The LMZ21701 is as easy to use as an adjustable linear regulator, and only an optional soft-start capacitor is needed to select the startup time.
Finally, a simple fixed output LDO is used to provide 5 V power. The CAN transceiver it is powering has a sufficiently low current demand such that the linear regulator will have negligible impact on battery life.
Silicon Labs EFM32 Microcontroller
One of the nice things about the EFM32 series is that they are really easy to set up, from a schematic point of view at least, if you’re not looking to do anything too crazy with them. As far as external supporting components go, all you really need is a few decoupling caps. I don’t need the low frequency external oscillator as I won’t be using any functionality that requires it.
After giving the microcontroller power, it’s just a matter of connecting up all your IO. I was hoping I’d have enough IO for this project on this model/package, and it worked out just right. I could save some IO if I needed more by combining the reset pins for the peripherals.
For this project I decided to use harness connectors from each sheet, rather than just using ports. Harnesses make the top level sheet look very clean, and keep everything together which saved me a surprising amount of time compared to using ports.
I’m also considering the SPI flash as part of the microcontroller portion of the schematic. SPI flash is also very easy to connect, just needing a decoupling capacitor or the communications bus connected.
uBlox SARA LTE Module
One of the nice things about using modules for most functions on this project is that the BOM count is much lower—everything needs a lot less supporting components and a lot less calculation of values. The LTE module is no different compared to building your own.
The main things to note on the LTE schematic are the antenna and SIM card. The antenna track should be impedance matched, and it should also have some tuning components. I’m using the suggested values from the datasheet for tuning the antenna, however a real world test should be performed with a vector network analyzer to determine the actual values required for your circuit board.
There is a 4 line TVS diode for the sim card connector. A SIM card is a very likely source for a static discharge from someone inserting or removing a SIM card, and being directly connected to the RF module is a great way to get a damaging discharge which could degrade or destroy the radio.
The uBlox SARA uses 1.8v for its IO lines, so I’m using a Texas Instruments TXB0108PW logic level translator to convert the logic voltages. I’ve used these in past projects and been very happy with them.
I mentioned earlier when discussing the 3.8V power supply that the bulk capacitance was provided on the LTE module itself, and here it is. For the peak current demands its a fairly modest amount of capacitance, however the peak demand should be short lived and unlikely to be reached in most circumstances, the capacitors provided are sufficient to supply ensure correct operation.
There’re also a lot of grounds on the SARA… a huge amount of ground pins. I have a full schematic symbol part that is almost all ground pins!
uBlox NEO M8N GNSS
The NEO-M8N has a lot of communications peripherals, normally I would only connect the uart lines, however, since we have I2C on board already I thought it would be interesting to connect just to provide more options in the future. I have added ferrite beads on the input and on the uart lines to reduce the amount of conducted EMI that can enter the module.
The antenna in an ideal world would not need tuning components, however, it likely does for a better response. Without a prototype board tested on a VNA, I didn’t want to guess at what the mismatch might be, as I could not find enough data on the antenna and module to calculate the values. If you are building your own version of this project, you should consider characterizing the board, module and antenna to properly tune the RF path for optimal performance.
The module already includes a SAW filter and LNA, so with the antenna being mounted directly against the module there is no need to add more. If you are planning to use an off-board remote antenna, you can use the VCC_RF pin to power an active antenna with a filter and LNA built in.
The accelerometer I’m using is one of the cheapest that has interrupts and gestures. I really like the ST series of accelerometers that have the ability to generate interrupts for events and gestures, such as a movement or double tap. For this application, if the device is being used purely for anti-theft, the entire device can be put into a deep sleep with just the accelerometer and power supplies active. If the accelerometer detects movement, it can wake the microcontroller up which can start monitoring it more closely.
You might have wondered where the I2C pull ups were on previous schematic sheets, well, here they are! The accelerometer was the first I2C device I captured the schematic for, and with limited space on the microcontroller sheet, I just left the pull up resistors where they were.
Finally, we have a CAN transceiver that could be connected to an engine management system. The CAN connector is another place that transients could enter, either from a technician connecting the wires, or from transients coming from the device the wires are connected to during operation.
In the Next Part
This is a pretty big project, so I’ll have to leave it here for this article. In the next article I’m going to get the board routed, and see how small we can make it. The two RF modules certainly make a challenging proposition for a small board, with a relatively high power transmitter and an extremely sensitive receiver looking for signals from space.
With a total of 141 components, not including fiducials, this LTE/GNSS module will be an interesting routing project.
Have more questions? Call an expert at Altium.