Close

ATLAS Power Management — A Week in the Field on a Single Charge

A project log for ATLAS

Built the tricorder I actually wanted in the field: one that warns, not just measures.

apollo-timbersApollo Timbers 02/22/2026 at 16:020 Comments
Note: Everything in this post is initial research and estimated projections for ATLAS v2, which is the first version to include dedicated power monitoring hardware (INA226 voltage and current monitor, BQ25892 charge management IC). None of these power figures have been validated against real hardware yet — that testing will happen once the v2 MCU board comes back from the builder. Consider this the design intent and the math behind it. Real-world numbers will follow in a future post once I have actual bench data.

One of the things I'm most proud of in the ATLAS tricorder firmware is the power management system. When you're building a handheld field instrument meant for serious wilderness deployment, battery life isn't a feature — it's a safety requirement. A device that dies on day two is worse than no device at all because you trusted it.

So I designed ATLAS around three distinct power modes, each tuned for a specific use case, with some logic baked in that I think is genuinely clever.

The Three Modes:

Full Active — The Lab Bench and Active Survey Mode

This is ATLAS with the hammer down. GPS running at 1Hz continuous, the BNO085 IMU screaming at 10Hz, all environmental sensors polling fast, display always on, both RP2350 cores active. This is what you run when you're actively scanning a site, doing a structured survey, or demoing the hardware.

The cost is power — roughly 120mA continuous. On the student 5Ah pack that's about 42 hours. On the full 10Ah pack you get ~83 hours. Not a field deployment mode, but you're not meant to live here. It's full capability on demand.

Hiker Mode — On the Move

Hiker is the balanced field mode. GPS drops to a fix every 5 seconds, the IMU stays alive but throttles back to 1Hz, environmental sensors poll at reduced intervals, and the display auto-shuts after 30 seconds of inactivity with a button wake. The speech processor core sleeps between alerts.

That IMU staying alive at 1Hz is intentional — ATLAS uses it for dead reckoning when GPS signal degrades under heavy canopy or in terrain. If the GPS drops out, the BNO085 keeps navigation alive using accelerometer and heading data. You don't lose your breadcrumb trail just because you walked into a ravine.

Estimated draw is ~65mA. Runtime: ~77 hours (~3.2 days) on 5Ah, ~154 hours (~6.4 days) on 10Ah.

Basecamp Mode — The Long Watch

This is where ATLAS earns its keep. Display off. Speech core off. IMU off. GPS wakes every two hours, grabs a fix, and goes back to sleep. Environmental sensors poll at drastically reduced intervals. Deep processor sleep between cycles.

Estimated draw is ~42mA. Runtime: ~119 hours (~5 days) on 5Ah, ~238 hours (~nearly 10 days) on the full 10Ah pack.

But here's the thing — radiation and CO polling never slow down. In every mode, including deep Basecamp sleep, the ATtiny85 sub-processor is continuously counting radiation pulses and sampling the CO sensor at 500ms intervals. ATLAS is always watching for the two threats you can't see or smell. That was a non-negotiable design decision.

The Cool Part — GPS Waking the IMU

The piece of logic I'm most pleased with is the Basecamp displacement detection system.

The problem it solves: someone sets Basecamp mode at their tent, then wanders off without switching to Hiker. Maybe they're groggy in the morning, maybe they forgot. In Basecamp mode the IMU is completely off to save power, so ATLAS can't detect walking directly.

Here's how it handles it. Every two hours, the GPS wakes up and grabs a fix. That fix runs through a Haversine calculation against the stored anchor position. If you're within 200 meters of where you set camp — go back to sleep, everything is fine. But if you've drifted more than 200 meters from the anchor, ATLAS doesn't immediately assume you're hiking. It wakes the IMU and opens a 2-minute confirmation window.

During that window, feedImuSteps() watches the BNO085 step counter. If it sees sustained walking confirmed over 60 seconds, ATLAS escalates — voice warning, mode change recommendation, the works. If the step count doesn't confirm movement, it assumes you just relocated camp and offers to reset the anchor.

The beauty of this is that the IMU is only ever awake when the GPS has already given a reason to suspect something. 99% of the time in Basecamp mode the IMU never touches power at all. The GPS fix is essentially free since it's waking up anyway for the displacement check — the IMU check rides along only when warranted.

If the warning is ignored, ATLAS doesn't just give up. It escalates on a 3-minute repeat cycle up to five times, getting progressively more insistent. After that it logs the situation and waits for the next GPS window.

Real World Runtime

In actual field use nobody lives in a single mode. A realistic mixed deployment looks something like: Full Active while actively scanning a site, Hiker on the trail, Basecamp overnight. Running that kind of blended profile on the 10Ah pack, I'm estimating 5-7 days of real field deployment before needing a recharge — and with the BQ25892 charger running at 3A, even the 10Ah pack comes back in about 3.5 hours from a vehicle or solar source.

For the student configuration on 5Ah, blended use puts you solidly in the 3-4 day range. Enough for a serious field exercise with margin.

What's Next

The power mode firmware is currently mock — the logic and polling intervals are all wired up but the actual hardware sleep/wake calls are stubbed behind a dev override flag until the MCU board comes back from the builder. The architecture is validated, the math checks out, and the displacement detection logic has been story-tested against jungle and Antarctic field scenarios to make sure ATLAS actually has the operator's back.

More on that in a future post.

Discussions