There are many asset tracker demos in the maker community, and many of them are great starting points. However, most of them are still early prototypes: breadboards with jumper wires, bare PCBAs, or proof-of-concept designs that are not quite ready for real-world use.
I wanted to build something different. My goal was to create an asset tracker that feels much closer to a real product — not just a demo that works on a bench, but a complete hardware platform that considers power, communication, sensing, mechanical integration, and field deployment.
This project is based on the Particle MSOM and includes GNSS positioning, CAN-FD, RS485, motion sensing, battery charging, and multiple power rails. It is designed as an open-source reference platform that others can study, modify, and build on top of.
Instead of only showing that an asset tracker can work, I want this project to show how an asset tracker can be built in a more practical, product-ready way.
FeaturesSince my goal is designed a prouct ready asset tracker. So first thing first is define what is a product asset tracker looks like. And below. I list several featurs that this asset tracker have
- 2.5 meters location accuracy
- 65V maximum DC input voltage. perfectly suitable for vehicial applications.
- 30uA maximum hibernate current with wakeup from DC source or accelerometer capability.
- CAN-FD or RS485 interafce for vehicle and industrial applications
- Can be powerd by a single cell 18650 battery for months life time
- Flexiable configuration for both LTE and GNSS antenna to overcome different use case
- Easy to install in different environment with 6pin M8 and SMA RF connectors
- Fully opensourced with firmware, script, hardware design file in kicad format and enclosure 3D files.
The project was developed by kicad and it include below four blocks
- MSoM, Which is a SoM from particle.
- PMIC. Including a DCDC regulator and two high efficiency buck-booster for providing the power from battery or VIN to MSoM and other peripherials
- CAN&RS485. Incuding a SPI to CAN FD convertor and a RS485 chip. Only one of those two interface can be used at any time.
- Accel&GNSS. Covers a high-end GNSS module NEO-M8U and an efficiency accelerometer LIS2DHTR.
In this part, I will describe how this asset tracker is been designed in more details.
The main input is a 105V maximum DC regulator. It can deliver up to 2.3A current continiously. Part of the reason why I choose this high-end regulator is because my E-bike's battery pack is 48V, So I need to have a higher input for asset tracker to hook into this battery pack. And another reason is I have some of this regulator left from previous project.
A simply battery charger is implemented in the design for charging the battery.
An OR-gate is been used for selecting the system power input from either battery or 5V DC source. Two kind of buck-booster had been used in the design. One is for modem which requires more current up to 2A and another is 1A maximum budget. Those are high efficiency convertor and make the uA level hibernate mode possible.
I also add a power switch for truning off some of the peripherials when in sleep mode for power saving. A voltage divider circuit for measuring the battery volage.
In this project. I had almost used up all the interface resources of the MSOM
- 2 UART, one is for RS485 and another is for GNSS module
- 1 SPI interface for communicating with MCP251863, a CAN-FD controller
- 1 I2C bus for talking with Accelerometer
- some generic gpio for controlling things
- And a analog pin for measuring the battery voltage
V_MODEM can be totally power off for power saving in hibernate mode. And those pins that can be used to wakeup from hibernate mode are wired to 5V power good signal and accelerometer's interrupt pin, as well as a external GPIO from M8 connector.
A high-end GNSS module NEO-M8U is equipped in this asset tracker. Talking with MSOM via UART and using a external active antenna for the best performance and installnation flexibility.
This GNSS module can even DNP for a cost down version as Particle M404 already have GNSS function. It just cannot work with cellular at the same time.
V_BCKP hardwared to 3.3V so that it could get locked as short as 1.5s by a hot start.
the main purpose of accelerometer here is for detecting the vibration of the system for exiting the hibernate mode.the trigger level can be modified in particle console too.
A CAN-FD controller and a RS485 convertor are added in the design mainly for taking with external devices from the only interface, The M8 connector.
But due to the IO constrains. Only one interface can be used in the design and it's slected by DNP the releated ferrite bead on board.
it also equipped with a analog pin and a digital pin with wakeup feature for some case that need to wakeup the asset tracker via external signal.
FirmwareAs a hardware engineer, my fw skill is just suitiable for writing some demo code for hardware verification and some python script.
In short. I definitely not good at write a complete project like this asset tracker. So I just rely one Codex to do the while project. What I did is define the pin map and a readme file. And then press the flash button over and over agian until it works.
Since this tracker will be used for my E-bike. So what I want is when I ride the bike, it will automatically start to record the location and publish to cloud and once the ride is over. it will automatically go to hibernate mode. No need for me to do any operation in any way.
With this, below are the basica structure for it's functionality.
- system wakeup via a interrupt from accelerometer when I start to ride.
- driver initialize
- waiting for cellular connection and GNSS fix.
- If GNSS cannot get fixed in 10 minutes, then system go to hibernate mode.
- Keep publish the location data every 2 minutes to cloud
- If no vibration detected in 10 minutes, then system go to hibernatem mode.
All those parameters can be configed in particle console for now
I installed the asset tracker to my e-bike. And it seems prefecet. And If I installed under the plastic cover, it's also can be a water proof product too!!
As a asset tracker, no matter what and how the edge device collected location data. The untimate goal is to see the DOT/TRACE on the screen by users. So that means a asset tracker without a way to see those dots are not a product-ready product.
So I also asked codex to generate a webpage. To show case how a physical location can be converted to a dot on screen.
And below shows it keep tracke of my rideing perfeclty.
It cannot be called as product-ready project if the hardware are not packed in the enclosure. So I also design a encloure for it.
And actually, part of the reason for the birth of this project is because I had learnt how to use Fusion360 to design some simple things. So I come up with this idea. Design a asset tracker with a enclsoure for it.
Severial verison had been printed. And it's also look not pretty. But I love it.
As I mentieond early. There are kind of two reasons why I build this project. One is for build soemthing that is product-ready. And another is I'm still in the passion phase for 3D design.
But what actually impressed me the most in this journey is how codex had helped me on this project for the coding working.
AI is truly lowering the barrier to technical implementation. It is giving more people the opportunity to turn the ideas in their minds into real systems that can run, be validated, and continue moving toward productization.
So, in the age of AI, each of us should ask ourselves:
What will you make?





Comments