Peridot

The Decent Espresso DE1 is a compelling machine, but its touch interface lacks the good feelings and accessibility of something more tactile. Even worse, the BLE connection is flaky at best.

Thus, I created Peridot, a device that allows one to interact with the DE1 through physical buttons. Inspired by the Synesso Hydra MVP, Peridot has a paddle that mounts onto the DE1's group head which gives you a tactile way of interacting with the machine.

Peridot is connected directly to the DE1's control board. Now I can reliably pull a shot, flush the group, pour hot water, steam milk, and importantly - stop the current action, even if BLE has dropped!

Before Peridot, I made the "Grouphead Paddle" controller, or GHP for short. It was a BLE HID which connected to the DE1's tablet. Latent in the DE1's app code was some basic keyboard control functionality. But when I stumbled upon it, it was broken and not easily configurable. So I first wrote the keyboard_control plugin. The GHP was a really simple device I put together with Adafruit's nRF52832-based Bluefruit LE.

With some optimization and a 500mAh battery, I had a little accessory that could run over four months between charges. But in reliability testing, I discovered just how unpredictable the bluetooth on the DE1's tablet really was. The GHP was great, most of the time, but it turned out to be not possible to achieve 100% reliability - the tablet would drop a packet eventually. No fun when that packet was from you trying to stop the machine!

Since tablet's control cannot do what I wanted, I had to try something else. Now, the DE1 has an auxiliary RJ45 port on the back, but the firmware does not utilize the exposed communication bus - it only does basic switching for the refill kit. That left only one option - the UART between the BLE module and the main control board.

Peridot sits between the DE1's main MCU and its BLE module. It relays messages between them as if it wasn't even there, but can inject commands - like "Start Espresso!" The DE1 responds as if the command came from the tablet through the BLE interface. Power is sourced from the aforementioned RJ45 port. Peridot also listens in to the messages to extract information like the pressure and flow during a shot, so it can display them on a sweet ring of 24 RGB LEDs. 

I designed Peridot with the RP2040 for my first experience with the Foundation's neat little MCU. The custom hardware is tested and functioning, and I have the firmware in a good place, ready for fancier animations, configuration, and so forth. Now I just need to take the plunge and drill a hole in my grouphead cover for routing the cable!