2024-10-20: Dev Rig and Gravity
First up - progress has been slow these past weeks. This is a hobby-level project, and the amount of time I have to dedicate to it will naturally vary with time. Wanting to keep a cadence in the log though, I thought I’d give a short update on the Dev Rig and talk a little bit more about the Gravity.
Current focus areas
- Getting the Dev Rig closed up
- OTA flashing the RP2040 via the ESP32-S3
- variegated-board
- Restructuring the variegated-rs repository(/ies)
An update on the APEC Dev Rig
We all know a picture says more than a thousand words, so here’s more than two thousand words.
Let me give you a little bit of a tour. As I’ve mentioned before, the Dev Rig used to be a regular Rancilio Silvia. Up top, you can see two major differences, one of them is fairly large 128x64 px OLED display, and the other is a rotary encoder. Those (along with the buttons) will be connected to a small EyeSPI adapter board, and then to the APEC.
The boiler is a fairly normal affair, albeit with PT100 instead of the factory thermostat. That’s a temporary solution. The plan is to drill and tap a hole to place a PT100 probe inside the boiler instead of on the outside. Barely visible in the picture is that below the OPV there’s an XDB401 pressure transducer.
Looking at the bottom, there are a lot of differences. On the right, you have a FG304 gear pump with *ahem* a slightly ugly mount. The plan is to manufacture a nice (and short, because there’s not a lot of height clearance when everything is assembled) mount. That’s hooked up to the Digmesa Nano-brass I mentioned last time. If you’ve seen a Gicar flow sensor, you’ll be astounded at how small that sensor is. There’s also the SSR I’ll be using for the boiler - a Carlo Gavazzi RF1A23M25 - also a super tiny unit compared to most SSRs. On the far left is a Gicar box, containing the APEC and the HV board. I may try to replace a couple of fittings with two 90° fittings or something to reposition the flow sensor, and get a little more room for the electronics box, but on the other hand, this should work, so I’m not in a hurry.
So what’s left?
Well, for one, my longest EyeSPI cable is too short (35 cm), and neither Digikey nor Mouser sells longer cables. Luckily, vendors on AliExpress have me covered, but shipping isn’t exactly fast.
There’s also (still) the whole issue of firmware updates for the APEC. The variegated-serial-bootloader
crate should work, and I hope to verify it soon. I’ve also been experimenting with the ESP32-S3 firmware, and having found the esp-hal-ota crate, I’ve finally settled on using esp-hal
for the ESP32-S3 firmware.
The future of Gravity
As you might be able to tell, I like the Gravity board.
Using a scale
Lot’s of things in an espresso machine becomes better with a scale. Ideally, they’re how we dose our coffee, and how we know when to stop brewing. In the enthusiast home market, using a scale when brewing your coffee has become a shibboleth; gravimetric shots is becoming more common in prosumer espresso machines. There’s projects like the shotStopper, using a Bluetooth scale to allow gravimetric shots on almost any espresso machine.
As someone who has been using smart scales integrated with their espresso machine for years, this is a welcome development, but Bluetooth scales have drawbacks. Maintaining a Bluetooth connection is a lot more complex than a UART, SPI or I2C peripheral. Bluetooth scales also require a separate power source, usually a battery, which needs to be kept charged. Battery powered devices also like to power down when not in use. That makes sense, but it’s kind of unnecessary when you have a thousands-of-watts line powered machine sitting right next to it, consuming the data from it.
The Gravity is the Variegated Coffee answer to that problem. It’s meant as a simple way to integrate a bus-powered scale module into your espresso machine. It’s meant as an integrated part of your espresso machine electronics, not as a stand-alone device.
On the commercial side of the market
And yet, if we look outside the prosumer market, gravimetric shots aren’t the only interesting thing happening with scales. La Marzocco introduced “Auto Brew Ratio” back in 2015, where you configure the desired ratio in the machine, weigh the loaded portafilter (the weight of the portafilter also having been programmed into the machine), et voilà, the machine brews pulls a shot with your desired ratio.
Very cool, and totally doable with a Bluetooth scale, or the Gravity.
Simultaneously, on the grinder side of the commercial market, Grind-by-Weight has become a thing. That too makes a lot of sense. Before Grind-by-Weight commercial grinders were usually Grind-by-Time, which meant that your dose-to-dose variance could be as high as a couple of grams. I don’t need to tell you that dosing 18 grams or 20 grams in the same portafilter basket makes a huge difference. Grind-by-Weight solves this problem nicely - you get dose-to-dose consistency, which helps with drink consistency. Of course, Grind-by-Weigth requires that you have a beans in a hopper. In a café that’s not a problem. You’re probably grinding through at least a kilo of beans a day, so you can just keep the beans in the hopper without fear of them going stale.
At home it’s a different story, so the prosumer market took a different approach, getting grinders with low retention and single dosing. If you’re really confident in your grinders low retention, you can just weigh your beans, and assume that all of the ground coffee goes into your portafilter. If you’re like me, you’re probably weighing out like half a gram extra, and weighing your ground dose. A little fiddlier, but still fine. Plus, since your weighing your final dose anyway, you can totally still implement something similar to Auto Brew Ratio!
Of course, the espresso machine market and grinder market doesn’t exist in separate vacuums, and companies like La Marzocco and Mahlkönig like to keep innovating. Last year they introduced a new thing, and it’s really cool. It’s called Grind-by-Sync. Basically the idea is that since your grinder already know the dose it just ground, it can just tell your espresso machine the dose. That’s a nice feature, but it doesn’t stop there. See, Mahlkönig’s latest and greatest grinders are electronically adjusted. Since the espresso machine knows how the shot you just pulled at a particular burr gap went, it can adjust the grind size based on how the shot pulled. Shot a little fast? Grind finer. Automatically. Mind blown.
Looping back to the Gravity
And so we return to the Gravity. I don’t have a fancy EK Omnia (just a slightly less fancy EK43), but I imagine that some people out there have fancy electronically adjusted grinders - or better yet, are building their own fancy electronically adjusted grinders. Possibly even with built in load cells. The Gravity being the Variegated Coffee answer to weighing things, I think it only makes sense that the Gravity should be possible to use in a Grind-by-Sync type use case.
I think I’ve come up with a pretty nice way of doing just that. It’s still just on paper, but I’m confident it can work.
I’m making a two-sided board. On the top side, it’s the Gravity board we all love and know from before - an RP2040 (or maybe a RP2350, depending on if that’s easily available whenever I’m sending this off to manufacturing), one or two NAU7802 modules, and QWIIC connectors. On the bottom side, there’s an ESP32-C6 and an EyeSPI connector, as well as some more exposed IO.
The idea here is that if you’re just using the Gravity as a scale module, you just assemble the top side. If you want to be able to use the Gravity as a stand-alone module (e.g. a grinder controller), you assemble both sides. You can connect peripherals via either EyeSPI (which has a ton of IO) or QWIIC.
Like I said, this is still just on paper, but I think it makes sense. Let me know what you think!