Arduino PID controller for coffee machines
This project is a PID controller for a Gaggia Paros
(or Gaggia Classic) coffee machine using Arduino and a few other components.
This Arduino based controller improves the stability of the water temperature of the coffee machine by controlling the boiler with a PID control loop feedback.
This project is based on lib_coffee_machine which is a C++ library providing an abstraction of a generic coffee machine.
This project implements the library interfaces targeting an Arduino Nano platform and several sensors and displays.
This project depends on the following Arduino libraries:
The Makefile
at the project root directory provides targets to build the code and the documentation.
You can build the code with different approaches:
CoffeeMachine.ino
sketchCoffeeMachine.ino
sketchmake build
using DockerThe code can be built inside a Docker container using docker-compose. The docker-compose.yml
and the Dockerfile
are in the docker
directory. The docker-compose.yml
depends on 2 environment variables that must be defined before starting the build:
Refer to the arduino-cli documentation for the list of available cores and boards.
The following is an example that builds the code for an Arduino Nano board:
$ cd /path/to/repo
$ CORE=avr BOARD=nano make build
The generated build files will be in the CoffeeMachine/build
directory.
After building the Docker image the first time, you can then use the arduino-cli
installed in the Docker image directly with:
$ cd /path/to/repo
$ docker run --rm -it -v $PWD:/build arduino-builder arduino-cli version
arduino-cli Version: 0.10.0 Commit: ec5c3ed
This is the list of components I used for the project:
Read the project documentation at: https://arduinocoffeemachine.readthedocs.io
Or build it locally with:
$ cd /path/to/repo
$ make docs
The tools
directory contains a Python script that can be used to read the Arduino
Serial messages and to plot the current water temperature on a graph. The goal
is to help the PID tuning process showing the realtime results.
$ cd tools
$ poetry install --no-dev
$ poetry run python temp_plotter.py
A big thanks goes to these two other projects that helped me a lot in the understanding of the electric schematics of the coffee machine and the components to use: