Pi Zero + SIM7600 trailer tracker drains a 10 Ah power bank in nine hours
First real project outside the house, so expect silly mistakes.
I’m building a tracker for my trailer: Pi Zero W, a SIM7600E HAT (LTE + GPS), and a 10,000 mAh USB power bank. A Python script reads GPS from the HAT every 30 seconds and posts it to Hermetry with the device HTTP API:
{"lat": 52.95231, "lon": -1.14972, "speed_kmh": 0.0, "sats": 9}
The map card shows the trailer, so that part works. Problem is the battery is flat after about nine hours. I put a USB power meter in line and it reads around 350 mA the whole time, parked or moving. I was hoping for a week between charges. Is this just what a Pi costs, or am I doing something dumb?
The script uses requests with the device token in the Authorization header, one POST per fix, and keeps the HTTPS session open between posts. The HAT is powered from the Pi 5 V pins, and both run off the single 2.1 A port of the power bank.
What are the GPS and the modem doing between fixes? Both on all the time?
Yes, both on. The script is a loop with time.sleep(30), nothing clever.
And the Zero itself idles around 100 mA with Wi-Fi, BT and HDMI on. That’s a third of your budget before the HAT does anything.
Could you put the Pi into deep sleep between fixes like an ESP32?
From the data side: do you need a point every 30 s while it’s parked in your drive? We only send on movement for our vans.
Aoife, the Pi has no deep sleep, sadly. It’s a Linux box, it’s either running or off. So you cut everything you can and make the radio work less.
What I’d do, in order of payoff:
- Pi:
dtoverlay=disable-wifianddtoverlay=disable-btin config.txt, HDMI off (tvservice -oon older images), activity LED off. On a Zero that gets you to roughly 80 mA. - GPS: switch the GNSS engine off between fixes (
AT+CGPS=0, thenAT+CGPS=1again). A warm start on the SIM7600 is a few seconds. - Rate: 30 s while moving, 15 to 60 min while parked. Use speed or the distance from the last fix to decide.
- Batch: buffer fixes and send one message every few minutes as an array with ts. GPS gives you a correct clock, so the timestamps are trustworthy. One HTTPS call instead of ten is less radio time, and it costs one message out of the monthly quota instead of ten.
[{"ts": 1757683200000, "values": {"lat": 52.95231, "lon": -1.14972, "speed_kmh": 31.5}},
{"ts": 1757683230000, "values": {"lat": 52.95410, "lon": -1.14701, "speed_kmh": 33.0}}]
Because the device only talks every few minutes, set its profile’s online rule to Recent message with an expected interval that matches your parked rate, otherwise it shows offline all night.
If a week is a hard requirement, the honest answer is a microcontroller (ESP32 or nRF) that sleeps and wakes the modem, or a timer chip like a TPL5110 that cuts power to the whole Pi between runs. A Linux board idling at 80 mA will never get there on 10 Ah.
Did 1 to 4 today. Wi-Fi/BT/HDMI off, GPS off between fixes, 30 s when moving, 30 min when parked, sending every 5 min. Meter now reads about 95 mA average. Should be roughly four days. Also had to switch the profile to Recent message, it was flipping to offline every night, which I thought was a bug. TPL5110 ordered for the next version.
If you look at PSM or eDRX on the modem later, check your operator supports it on that SIM first. Ours didn’t and I lost a weekend.
- You must be logged in to reply to this topic.
Join the conversation
Sign in to ask and answer, like helpful posts and mark the reply that solved your problem. Every contribution earns points and levels.

