2025-03-25: Hardware Updates: APEC SoM and Beyond
If you’ve been hanging around the Discord, you’ve probably heard about this already, but I’m happy to announce some changes I’m making to the All-Purpose Espresso Controller.
I’m proud of the work done with the APEC, but I’ve come to the realization that I’ve had to make a lot of compromises on the design. Take the analog section as an example. The standard filters are made for temperature probes, which is great if you need them, but becomes a burden of you e.g. only need one temperature probe. Take the gear pump level shifter as another example. Sure, it works, but it’s essentially a dongle. None of these problems have been unsolvable, which is why it took me such a long time to come to this realization, but a couple of months ago I had a bit of an epiphany.
What if I put all of the expensive and difficult to layout components onto a castellated module? A module which you could then solder onto a way more custom, but easier to design and manufacture carrier board?
Thus the idea of the APEC System-on-Module was born, and I’ve spent the past months working on it. Since I’ve just sent off the design for a small Engineering Validation Test run, I think it’s avout time to announce it properly. Who knows, if by some miracle, there are no design flaws in it, that’ll just skip straight to being R1A. Granted, making a new piece of hardware without any faults whatsoever has never happend to me before, but some time has to be the first, right?
What’s new in the APEC SoM?
The big news is of course that the APEC SoM is a module. By concentrating complex components on a standardized module, we’ve made it possible for carrier boards to be dramatically simpler to design and manufacture. This approach enables:
- Simplified development for machine-specific applications
- Economical small-batch production accessible to hobbyists and small manufacturers
- Community innovation through an ecosystem of compatible carrier boards
The board itself is (currently, in the EV1 revision) a 29.21 x 49.53 mm module, with 104 castellated pins. It has a 1.27 mm pitch, so if you’ve got some soldering skill and aren’t afraid of a bit of flux, it is hand solderable. That said, you’ll get the most out of this if you’re comfortable with electronics assembly and enjoy the occasional debugging session when bringing up a new board.
This modular approach isn’t just about making development easier - it’s central to what Variegated Coffee is all about: keeping our espresso machines alive longer and making them do more cool stuff over time. By sharing our carrier board designs and building on each other’s work, we can all benefit from better coffee equipment without tossing perfectly good machines.
Most of the ICs on the APEC SoM is pretty similar to the APEC, but there are two changes that I would like to highlight.
RP2350
I’ve also upgraded the main MCU of the board, from the RP2040, to the RP2350. This isn’t a mere numbers bump - the RP2350 packs a lot more punch. It also comes with a lot of interesting features:
- A lot more IO (since we’re using the RP2350B variant)
- 5V-tolerant I/O pins that simplify integration with a variety of existing espresso machine components and eliminate the need for level shifters in some cases
- Support for external PSRAM enabling more sophisticated firmware features
Importantly, since the RP2350 is part of the same RP2 processor family as the RP2040, there’s strong compatibility between them. This doesn’t represent a phasing out of the RP2040, which will remain our MCU of choice for projects like the Gravity where its capabilities are well-matched to the requirements. Writing crates and firmware that works across either processor is very possible, maintaining continuity in the development ecosystem.
ESP32-C6
Switching to the more powerful RP2350 made another change possible - switching the ESP32-S3 to a ESP32-C6. Now, granted, the ESP32-C6 isn’t a pure upgrade. It is a less powerful chip than the ESP32-S3, but it does bring benefits.
- The ESP32-S3 is based on the Xtensa LX7 architecture. This is a pretty esoteric architecture, and it doesn’t have first-class support in e.g.
rustc
. The C6 on the other hand is a RISC-V MCU, which has excellent support. - The ESP32-C6 supports newer communications protocols, like Wifi 6, Bluetooth 5, Zigbee and Thread. Since it’s meant as a communications co-processor, those are significant upgrades.
As with the RP2 family, the ESP32-C6 does remains part of the ESP32 processor family, allowing for significant code sharing and compatibility (albeit more of a hassle to compile on the S3). All in all, I still like the ESP32-S3 - it’s a powerful MCU, and one that can still be useful in our projects. That being said, the future of the ESP32-S3 in our projects will largely depend on the evolution of Xtensa support in the Rust ecosystem.
Carrier Boards
Alongside the APEC SoM, I’m working on a couple of carrier boards, both for my own use, and to ensure that the module is useful in the real world.
Debug Carrier Board
First up is a debug carrier board that breaks out all of the SoM’s pins and adds debug ports. This board will be using Flexypins for easy connection between the carrier and the module. As the name suggests, this carrier’s primary purpose is to perform engineering validation tests, and I’ve ordered a revision of this board alongside the EV1 revision of the APEC SoM.
Rancilio Silvia Carrier
As I’ve written about previously, my old Silvia is my dev rig, and as such, it’ll get the first “real” carrier. This carrier will be quite specialized for my modded Silvia, and as such, it’ll have connections for:
- OLED display (Specifically, an EyeSPI connector)
- Rotary encoder (This too will be over the EyeSPI connector, using the additional IO provided)
- PT100 RTD temperature sensor
- Pressure transducer
- Flow sensor
- FG304 gear pump
- Relays for the Silvia’s solenoid and boiler
The plan is to power this board fully from the Gear Pump’s 24V PSU and make this carrier fit into a Hammond Manufacturing 1593W enclosure.
Lelit Bianca Carrier
I’m also designing a specialized carrier for my Lelit Bianca that will showcase the full potential of the APEC SoM. This carrier will include connectors for:
- The Open LCC
- FG304 gear pump
- Pressure transducers
- Flow sensor
- All standard sensors and actuators of the Bianca
Since the FG304 (similar to the Silvia) needs a 24V PSU, the idea here is also to redesign the HV board, removing some unused relays and instead adding in a 24V-to-12V DC-DC converter.
Open LCC
Enough about the APEC - let’s talk Open LCC! The Open LCC has been stable hardware-wise for a few years now, and I’m not planning any major changes to it. That being said, I do have some plans to enhance it - specifically:
- Replacing the current OLED display connector with an EyeSPI connector
- Adding USB connector(s) and debug connectors to the board (possibly with a USB hub), removing the need for the debug board.
If you already have an Open LCC, this is by no means a game changer, and that’s by choice.
Gravity
The Gravity has been performing well in its current hardware revision. I have R3A manufactured, and I’ve committed an R3B revision to the repository. Hardware wise, the only enhancement I’m considering is adding a battery connector and battery charging IC to the back (standalone) side of the board. This would provide more flexibility for portable or standalone operation, but I’m not sure how useful it would be.
I’m particularly interested in community feedback on whether this battery option would be valuable to you. Would it enhance your projects or use cases? Let me know what you think!