A Gaggia Classic temperatue control project using arduino hw.

Overview

gaggiuino

WIP

UPDATE: I have taken photos and started editing them preparing the whole step by step guide, soon ( i'm thinking next week ) it should be all ready and published here.

Better documenting coming soon, just delayed a bit by some job/life things i need to sort out now

Gaggiuino started as an idea to improve an already cappable coffee machine while keeping the machine looks and buttons functionality as close as possible to the original, an important part is that no internal cables/connectors were modified, all the connections were made by creating splitters using the purchased spade connectors.

First and foremost please do not underestimate the danger of electricity or overestimate your ability to work around it, only start working on your machine while it's completely disconnected from the mains power socket, also by agreeing to follow the bellow guide i cannot be deemed responsible for any of the damage you induce to your house appliances, yourself, your cat, friend or gold fish and it will be entirely your fault!

I will assume you have the necessary components and installed the related software, for the sake of not gettign stuck at some point just double check again the list bellow.

<< PROJECT REQUIREMENTS >>

Software needed:

  1. Arduino IDE

    Needed to upload the code ".ino" to the arduino ROM

  2. Nextion Editor

    Only necessary if planning on editing the ".HMI" file to ammend the LCD functionality

  3. CH340 USB Driver

    USB driver so your system recognizes the Arduino clone board, let's say i have found this the hard way as apparetly the majority of cloned arduinos use a cheaper USB controller comparing to "genuino"

Hardware requirements:

  1. Arduino Nano - Be sure to buy the AT328 version, also if you're buying the mini usb version buy the cable from them, you'll save yourself a lot of problems.
  2. Nextion touch screen (i used a 2.4 inch one)
  3. MAX7765 thermocouple
  4. C-M4 screw K-Type thermocouple sensor
  5. 40DA SSR Relay
  6. Thermo-resistant cables AWG 15 ( 1m black/red ) and AWG 30 ( 1m black/red/yellow )
  7. Spade connectors M/F 6.3mm
  8. 5v power supply - for powering the arduino board once it's inside the machine.

I used an old mobile charger i had lying around which conveniently had a USB port for plugging the cable that came with the board.

Optional:

GaggiaPID1

First you need to understand what goes where, the schematics isn't really rocket science but for someone who's never disasembled or has no experience working with electrical circuits it might get very confusing real fast so i will try to describe it as simple as possible, sometimes adding some photos as well. First you need to check your setup works as expected outside the machine so you don't ahve it all installed and realise just afterwards it's not reading any temperature because of a faulty thermocouple or any other element, or your relay doesn't go between the ON/OFF modes.

  1. The first step will be connecting the max6675 module to the arduino board using the pins defined in the code, you can find them defined at the top of the .ino file ( pins 4,5,6 )
  2. Connect the relay, for now only connect the circuit controlling ports to check whether the relay LED indicates the power states.

Relay 3 to Arduino GND, Relay 4 to Arduino D8, the ports 1 and 2 on the relay are the high voltage circuit breaker

  1. Plug the arduino board using the mini usb cable that came with it and upload the code to the arduino board.

Note: uploading won't work with the LCD connected

  1. Upload the .HMI file on a microSD card

Note: card needs to be FAT32 formatted

  1. Insert the card in the LCD card reader slot and connect the LCD to the arduino board.

Nextion TX goes to Arduino RX, and RX to TX, VCC goes to Arduino 5V and GND to GND

  1. After upload finished get the card out and power cycle the LCD.
  2. You should see temp readings on your screen if everything went according to the plan.

Don't forget to test the thermocouple/relay combo operation, apply some heat to the thermocouple end and see whether the relay led operates in HIGH/LOW modes

At this point if all the above works as expected you're ready to install it all inside the machine, for this we'll need to prepare some splitters that we'll use to connect to the Gaggia internals without introducing any permanent modifications so in the event of a desire to revert to stock it's a few disconnects away!

Comments
  • Arduino controlled brew display timer

    Arduino controlled brew display timer

    Similar to https://github.com/Zer0-bit/gaggiuino/pull/249 but for dev branch instead of nano.

    I was unable to test, but has been tested by other STM user: https://discord.com/channels/890339612441063494/890339805588783104/1008962071276290108

    opened by tylerjroach 7
  • Add static code analyzers stm32

    Add static code analyzers stm32

    Summary of what this PR do:

    • Enables cppcheck and clang-tidy and adds them to the github workflow (only critical issues break the build)
    • Clang-tidy gives more false positives it seems but it's still good to have it
    • Clang-tidy can be fine tuned in terms of what plugin it uses, I chose a very basic set
    • Clang-tidy doesn't work well with ino files, so I renamed the main sketch to gaggiuino.cpp, this makes using Arduino IDE difficult, but I hope that everyone uses something better already. Moreover once the code begin to get bigger and more structured we need to introduce cpp/h files anyway (which would make using Arduino IDE impossible probably).
    • Fixes most of the issues reported by cppcheck, the most critical one is this 1d4b2e549493f3b3f6a3be36e0e5cc6b8c1e3dcf
    • Adds -Wall build flag and strict lib_compat_mode to all platforms
    • Bumps Nextion library to the revision with boolean->bool fixes
    opened by MartinHruza 4
  • Best place to leave the USB charger?

    Best place to leave the USB charger?

    I'm undecided on where to leave the USB charger for Arduino. Whether inside/outside the back of the machine :)

    Outside:

    • look uglier
    • practical for Arduino code updates
    • more safe in terms of water leaks / contact

    Inside:

    • neat look
    • risk of getting wet
    • less practical for updating Arduino code

    Did you already experiment with the different possibilities? Where did you left yours?

    opened by dlime 4
  • Brew timer now controlled by nano due to nextion inconsistencies

    Brew timer now controlled by nano due to nextion inconsistencies

    Brew timer now controlled by Arduino, instead of Nextion.

    Nextion showed inconsistencies between basic and discovery. Since Arduino is able to keep a brew start time using millis(), it should be able to maintain a near real time value, instead of relying on the increment/wait timer function on the Nextion.

    opened by tylerjroach 3
  • Convert all files to LF file ending

    Convert all files to LF file ending

    Hi again, since my previous (first!) pull request was appreciated I prepared another, more radical, one.

    LF is the defacto standard since it's used by Mac and Linux and Windows are mostly fine with it (batch files may be the only exception where LF endings cause troubles). Until this commit most of the files in this repo used a LF line endings anyway, the only exception were *.ino files which mostly used CRLF with couple of lines with LF. These mixed line endings cause troubles to those using VSCode since it doesn't support it (https://github.com/microsoft/vscode/issues/127) so it's impossible to save a changed file without normalizing its line endings (and making the commit much bigger). This commit also introduces .gitattribute and .editorconfig files which will ensure correct formating in the future (strangely Arduino IDE doesn't support the latter one https://github.com/arduino/Arduino/issues/8804).

    I'm aware that this commit will make using of git blame and exploring of the project history a bit more difficult but it's better to bite the bullet now than later. Also I didn't send this pull request just to make the repo nice and tidy but to prepare the surface for more pull requests I have in the queue.

    Here's a nice blog post about git and line edings if you want to learn more: https://www.aleksandrhovhannisyan.com/blog/crlf-vs-lf-normalizing-line-endings-in-git/

    Thanks!

    opened by MartinHruza 3
  • Question about the Gaggia Classic Pro Steam Control wiring

    Question about the Gaggia Classic Pro Steam Control wiring

    Is your feature request related to a problem? Please describe. On dev branch, I see your update on the Steam control wiring which connect gnd and a7 to the switch. That's smart. But I think there is an issue for the steps:

    1. Move steam switch wire 4 to steam switch pole 1.
    2. Unplug and secure steam switch wire 5.
    3. Replace the SSR brew thermostat connected wires with the steam thermostat wires.
    4. Bridge the brew thermostat wires(the wires we just disconnected from te SSR in favour of the steam thermostat ones)

    Describe the solution you'd like

    1. I think there is no need to move steam switch wire 4 to switch pole 1. It can be disconnected directly. Instead move the wire 4 to pole 1. The LED light white wire which connect to wire 4 could be disconnected from LED and have a wire connect the LED light to switch pole 1. My thought is that, when steam switch is on, we could set boiler (brew) SSR to HIGH to make the boiler keep heating until the desired steam temperature reached. And leave the steam thermostat as a safety fallback. The steam thermostate max at 145 C, as long as the steam temperature is not beyond 145 C, it will allow the boiler keep heating if the brew SSR is high.
    2. Steam thermostat and wires should remain unchanged as a safety fallback.

    My understanding on Gaggia Wire Diagram, the steam thermostat and brew thermostat is kind of in serials. The steam thermostat's output connect directly to boiler, and it has two input source: one is steam switcher, another is the output of brew thermostat. So when steam switch is OFF, the power came from the brew thermostat if it is not exceeding the brew temperature. If the temperature exceeds the brew temperature, then the brew thermostat shut off the power. If steam switch is ON, then the brew thermostat will be shortcut by the steam switch and only steam thermostat in effect.

    So with the arduino controlling the brew thermostat (brew SSR), there is no need to have a second power source from steam switch to the steam thermostat and only need to connect the LED to the steam switch to keep the light indication working.

    Not an electrician, would love to hear your feedbacks.

    Describe alternatives you've considered A clear and concise description of any alternative solutions or features you've considered.

    Additional context Add any other context or screenshots about the feature request here.

    opened by LindenLiu 3
  • Refactor the kThermoRead a bit

    Refactor the kThermoRead a bit

    This is awesome project. While I'm waiting for my hardware delivered, I'm reading through the code and figuring out how I could adapt it to the RTD Pt100 which I purchased.

    The original code looks like doing 1 read (fail) -> 1 read (fail) - empty loop for GET_KTYPE_READ_EVERY milliseconds -> read -> empty loop -> read. Which seems not matching the minimal interval between two reads. It is two immediately reading and then follow the interval. Is that on purpose?

    opened by LindenLiu 3
  • Variable Screen Size Files

    Variable Screen Size Files

    I have all the items on order that you have listed but I mistakenly got the 3.5" screen. I have loaded up everything in HMI and found that the software wont scale the content to the new screen size. What would be the best way to scale this? Could you share your PNG files?

    opened by kwood94xj 3
  • Choosing an Arduino variant to order

    Choosing an Arduino variant to order

    On the link provided there are some variations, and in all other hardware listings the variant is very handily specified.

    So I'm wondering does it matter which of these I order? Can I order the USB-C one without issue?

    image

    Thanks for this project!

    opened by joshcomley 3
  • Features + overview in the README

    Features + overview in the README

    Is your feature request related to a problem? Please describe. The README does a great job at describing how to build the Gaggiuino. However, the description and feature list is incredibly sparse. I'm not 100% sure what this project would let me do or not do. The videos are a start, but they're not a replacement for documentation.

    Describe the solution you'd like

    overview

    First, a nice OVERVIEW at the top of the README. For example, "this mod lets you control the temperature and pressure profiles of your Gaggia. It allows you to preinfuse your shots. Future features include a built-in scale that lets you graph your shot over time and even automatically stop a shot (will it?). The overall parts list costs around $100 USD (or whatever) if you buy in the United States, or XXX currency in YYY country. However, pre-built machines with similar amounts of control cost many thousands of dollars. You should buy the parts ASAP, because they are back-ordered."

    An extended "Features / Uses" section in the README

    Each of the bullet points in the "Features / Completeness" list could be its own subsection of the README. I'm not sure what exactly all of these features are, or why I would want them necessarily.

    • Temp control: Like the PID mods, this project improves the infamously bad temperature control of the Gaggia. We use a simple pulse-width modulation temperature control system to control temperature. You can set whatever temperature you want (can you?) etc. etc.
    • Steam control and alerting: what does this mean?
    • Preinfusion: does it just allow for 5 second 1-bar preinfusion? can you do profiles? I'm not sure!
    • Realtime pressure feedback:does this require the "pressure sensor" in the EXTENDED FUNCTIONALITY section of the assembly instructions?
    • Pressure profiling (realtime feedback loop)
    • Manual pressure control: does this require the dimmer module?
    • Realtime values update: what values?
    • Saving selected values: what selected values?
    • Descale program
    • Brew start sense: what does this mean?
    • Auto shot timer: what does this mean?

    A description of the "Extended functionality" parts

    What features do I need these parts for?

    TL;DR: documentation!

    opened by jbohnslav 3
  • Documentation Update

    Documentation Update

    Not a big git person, but I did mark up the Classic Pro wiring schematic to make it a little more clear what goes where. Not sure if this is something you want to include in the instruction GAGGIA_CLASSIC_2019_Wiring_Schematic.pdf s.

    opened by matate99 3
Releases(release-nano-final-v4)
Owner
mr.toor
Just passing by to have fun with tools.
mr.toor
Control Heidelberg Wallbox Energy Control over WiFi using ESP8266 and configure your own local load management

< scroll down for English version and additional information > wbec WLAN-Anbindung der Heidelberg WallBox Energy Control über ESP8266 Die Heidelberg W

null 88 Nov 27, 2022
Model of the classic Ibanez Tube Screamer 808 using Nodal Analysis and WDF with a few new features added!

TS-808-Ultra Model of the classic Ibanez Tube Screamer 808 using Nodal Analysis and WDF with a few new features added! Download Windows vst3 and Mac v

James Stubbs 50 Nov 13, 2022
Bobby Cooke 316 Nov 29, 2022
Budgie Control Center is a fork of GNOME Control Center for the Budgie 10 Series.

Budgie Control Center Budgie Control Center is a fork of GNOME Settings / GNOME Control Center with the intent of providing a simplified list of setti

Buddies of Budgie 13 Sep 2, 2022
An IoT based project using Wi-Fi Module and MIT App Inventor with intuitive control

Phone Controlled (joystick) Robot Car Project An IoT based project using Wi-Fi Module and MIT App Inventor with intuitive control. A 4 wheeler robot c

Sukritee Sharma 2 Nov 3, 2022
use classic context menu in Windows 11 file explorer

Classic Context Menu for Windows 11 Shell32Patcher allows you to use classic context menu in Windows 11 file explorer. Usage Uncheck 'Launch folder wi

null 18 Sep 17, 2022
Emulation of classic VA synths of the late 90s/2000s that featured the Motorola 56300 family DSP

Gearmulator Emulation of classic VA synths of the late 90s/2000s that used the Motorola 56300 family DSP This project aims at emulating various musica

null 157 Dec 4, 2022
The Sensor Watch is a board replacement for the classic Casio F-91W wristwatch.

The Sensor Watch is a board replacement for the classic Casio F-91W wristwatch.

null 648 Nov 28, 2022
Plua is a superset of Lua for classic PalmOS devices with added support for graphics, UI, networking, events and sound.

Plua2c Plua is a superset of Lua for classic PalmOS devices with added support for graphics, UI, networking, events and sound. This is the source code

Cameron Kaiser 8 May 16, 2022
Classic iPod mod with Raspberry Pi Zero and color screen

ipodrpi Classic iPod mod with Raspberry Pi Zero and color screen. Suitable for OSMC and plain Raspbian install. Install OSMC: Burn SD card with Raspbe

null 26 Nov 25, 2022
The Classic Game of Snake. This time with Bezier Curves

Snake A rather rudimentary game with a rather rudimentary twist Setting Up Camp: By Hand: compile ssw gcc -c ssw.c -o ssw.o -lX11 compile bezier.c gcc

MLouden 4 Sep 14, 2022
Augmentinel is re-skinned version of the Geoff Crammond classic: The Sentinel

Augmentinel By Simon Owen ([email protected]) Introduction Augmentinel is re-skinned version of the Geoff Crammond classic: The Sentinel (aka The Se

Simon Owen 3 May 18, 2022
BKM-10Rduino is an Arduino based alternative for the Sony BKM-10R control unit typically used with Sony broadcast monitors like the BVM-D20F1a/e/u

BKM-10Rduino BKM-10Rduino is an Arduino (natch) based alternative for the Sony BKM-10R control unit typically used with Sony broadcast monitors like t

Aaron Bonham 11 Oct 5, 2022
Use Arduino to realize IR remote control of equipment supporting Onkyo RI

OnkyoIRRemote 使用红外遥控控制支持OnkyoRI的设备 可用ArduinoNano制作 ID列表(这是我自己测试出来的我的安桥收音机的代码) 3072 列表下一个电台(全组切换) 3073 列表上一个电台(全组切换) 3080 SLEEP 90 3081 FM 3082 AM 3088

null 1 Oct 24, 2021
An Arduino library to control 2-bit (4 gray level) LCD displays

TwoBitDisplay (2-bpp LCD library) Project started 10/23/2021 Copyright (c) 2021 BitBank Software, Inc. Written by Larry Bank [email protected] The pur

Larry Bank 8 Mar 21, 2022
A Fingerprint Door Lock using a microprocessor named Arduino UNO and programming through Arduino IDE

INSTRUCTIONS - The codes for the Fingerprint Door lock are present in the Code For Fingerprint Door Lock folder The instructions of how to operate the

Akhil Sahukaru 15 Mar 3, 2022
Internet of things created using arduino IoT cloud, consisting of esp and arduino boards

Internet of things created using arduino IoT cloud, consisting of esp and arduino boards. Goal of the project is to create a 3D printed RFID protected (with PIN) lock, including surveillance.

null 2 Sep 1, 2022
This project design to mine Duino-Coin using an Esp8266 as a master and Arduino as a slave.

DuinoCoinI2C This project design to mine Duino-Coin using an Esp8266/Esp32 as a master and Arduino as a slave. Using the I2C communication to connect

Luiz Henrique Cassettari 152 Nov 28, 2022
ESP32, ESP8266 based MIDI Organ using the ML_SynthTools library (little example arduino project)

esp32_esp8266_organ ESP32, ESP8266 based MIDI Organ using the ML_SynthTools library (little example arduino project) link to the video The required li

Marcel 18 Nov 16, 2022