Big update: I’ve officially ported all core code for ATLAS from CircuitPython to C++. \o/
That’s a huge milestone, though not without pain. Here are a few fun (read: painful) lessons from the process.
Lesson 1: Just because it worked in Python doesn’t mean it’ll work in C++
Yeah, I know. Obvious, right? But getting text to scroll correctly in C++ took way more time than I care to admit. Python lets you get away with things. C++ reminds you that memory is real, types matter, and no, that thing you tried isn't going to compile.
Lesson 2: GPS Library Swap = CPU Spike
Originally I had a custom GPS parser, but when moving to C++ I switched to the SparkFun's u-blox GNSS library. That came with its own set of problems. CPU usage jumped from 10% to 57–78%. The main issue? GPS was updating way too fast.
Let’s be honest... this isn’t a Tomahawk missile skimming treetops. There's no reason to poll GPS faster than every 3 seconds or so. Once I throttled that, the CPU calmed down.
Lesson 3: SSD1325_TrueGrey.h survived the war
My custom grayscale OLED display driver worked perfectly after the transition. No edits, no weird quirks. Still rendering clean text and thermal visuals. I’m calling that a win.
Lesson 4: Thermal Mode Now Has Its Own Lane
The thermal imager is I²C-heavy and CPU-greedy. So now, a long press on button 1 puts ATLAS into thermal mode, shutting down all other sensors and screens. (and back again) A press on button 2 swaps into Medical Mode. It’s not elegant, but it works — and it gives the system enough breathing room to handle the imager properly without data lag or weird interference.
Lesson 5: I thought I was building a guidance system…
I thought I was building Apollo’s space guidance computer — a clean, practical interface for Earth-bound explorers. What I’ve actually built is starting to resemble HAL 9000.
Somehow, I’m stuffing all of this onto a Raspberry Pi Pico 2: GPS parsing, sensor fusion, thermal imaging, grayscale display rendering, environmental classification logic, and now — soon — speech. I’m in the process of merging in the Talkie speech synthesis library to add voice output: basic warnings, system alerts, and maybe the occasional deadpan comment about an incoming storm or bad air.
It’s not conversational (yet), but it’s veering toward full sci-fi. Let’s just hope it doesn’t start asking who’s in charge of the mission.
Hardware Status
I'm wiring up the two working buttons — the others have been out of stock forever — and I'm finalizing the design for both the main MCU board and a modular sensor board. There's also a teaser website live now. It's nothing fancy, but it helps keep momentum up.
Ten hours of software dev later, ATLAS is operational, switching modes, logging smart GPS reads, and still running under ~30% CPU. Progress. Painful, but real.
– Apollo out.
Apollo Timbers
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.