Skip to content
hallboyone edited this page Oct 6, 2022 · 4 revisions

Welcome to the RaspberryLatte project! The goal of the project is to develop and maintain a low-cost solution to improve single boiler espresso machines such as the Gaggia Classic. Its key features are

  1. PID boiler control
  2. Automatic preinfusion
  3. Flow control
  4. Mobile based GUI (TODO)
  5. Brew diagnostics and troubleshooting
  6. Less than $100 for all hardware components
  7. Minimal external changes.

Pulling a Shot with RaspberryLatte

Using a RaspberryLatte equipped machine is very intuitive, providing a good balance between customization and simplicity. The user interfaces with two switches, one 4-throw dial, and three LEDs.

  • ⚡ Power Switch: Directly switches main power.
  • 💧 Pump Switch: Activates the pump and/or solenoid (mode dependent).
  • 🕛 Mode Dial: Select between auto brew, manual brew, hot water, and steam modes.
  • 💡+⚡ Power LED: Indicates if Power Switch is on.
  • 💡+🌡️ Temp LED: Indicates when boiler is at temperature set point.
  • 💡+ ⚖️ Scale LED: Indicates if scale is above dose set point.

An example of using the machine could look like the following. Turn on the Power Switch to start heating the machine. Place a bean tray on the scale and turn the Mode Dial to zero the scale. Pour beans into the bean tray until the Scale LED turns on. Grind and tamp the beans into the portafilter, turn the Mode Dial to auto brew, and place you cup on the scale under the portafilter. Turn on the Pump Switch and sit back. The machine will preinfuse the beans and then pull the shot until the desired yield is reached. Turn the Pump Switch off and switch the Mode Dial to steam mode. Prepare you milk while you wait for the machine to heat. Once you milk has been steamed, turn the Mode Dial back to manual brew mode and clean your machine. In manual brew, the pump is directly connected to the Pump Switch so you can clean it like a standard machine.

Project Structure

The project includes custom hardware, firmware, and software. This provides a natural separation into the following groups.

Hardware

The custom hardware includes new sensors and switches installed within the espresso machine, and a custom PCB carrying the MCU and peripheral hardware. The only visible hardware changes are a 4-throw dial to select the machine's mode (auto, manual, hot water, or steam), and an option OLED display. Only basic tools are required to make the hardware changes. However, since modification requires working with line-voltage, a certain level of skill and care is required to ensure the project is a success.

More details about the hardware can be found here.

Firmware

The firmware is written in C and runs on the Raspberry Pi Pico W. Each src file can be broadly split into three groups:

  1. Hardware interface: Abstract basic operations with the Pico's hardware. For example, the binary_input source sets up a group of GPIO pins as inputs and reads them as a multi-throw switch.
  2. Sensor/driver interface: Code specific to a certain sensor or output used in the project. For example, the nau7802 source sets reads from the NAU7802 Wheatstone Bridge amplifier for the scale readings.
  3. Logic function: Defines how the machine will actually operated. For example, the pid source defines a PID controller that is used to control the boiler.

The Pico uses the RP2040 MCU which is a 2-core system. Everything mentioned above runs on core 0. This leaves core 1 open for future networking requirements.

More details about the software can be found here.

Mobile UI (TODO)

To keep the machine's stock look and keep the hardware cost down, the on-board UI was kept very primitive. This will be offset by a mobile UI that connects to the custom hardware over Bluetooth. This will allow the operator quickly tune brew parameters, visualize their shot's characteristics in real time, and troubleshoot any issues they may be having. This part of the project is pending the addition of BLE support to the Pico's SDK.