GithubHelp home page GithubHelp logo

zer0-bit / gaggiuino Goto Github PK

View Code? Open in Web Editor NEW
1.7K 90.0 224.0 67.16 MB

A Gaggia Classic control project using microcontrollers.

Home Page: https://gaggiuino.github.io/#/

License: Other

C++ 54.91% Shell 0.31% C 21.49% Python 0.45% CSS 0.07% JavaScript 21.94% HTML 0.27% TypeScript 0.56%
arduino diy dimmer gaggia espresso gc gcp blackpill stm32f411

gaggiuino's Introduction

Gaggiuino

Compile Sketch Discord Chat

Intro

Gaggiuino started as an idea to improve an already capable coffee machine while keeping the machine appearance and button 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.


For install instructions head to the project documentation section.

For project related help join us on discord.

gaggiuino's People

Contributors

banoz avatar havald avatar judahrand avatar kstam avatar likeablebump avatar lis0r avatar majorarkwolf avatar martinhruza avatar matate99 avatar matiasjrossi avatar rkistner avatar somelucky1 avatar spoetnik avatar tt2166 avatar tylerjroach avatar zer0-bit avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gaggiuino's Issues

Wiki: Home.md markdown and formatting edit

Hi friends!
I started making some markdown and formatting edits to the wiki, but there's no way to PR to Wikis on GitHub¹ 😞

My goal is to make both the markdown and the rendered page easier to parse and make edits to later.

So, check out what my suggestion looks like on my fork: EdwardAngert/gaggiuino/wiki

  • here's the commit: 5c07a29
  • here's the markdown if you like it and want to paste it in: Home.md (I'm also happy to make the edits if you're open to it)

I hope to be able to make more edits while I work out whether this is a modification I can take on. I just like formatting markdown in my spare time while I read instructions 🤷


¹ There is a way to enable public editing though. Under the repository settings, uncheck the box next to Restrict editing to collaborators only.

Pump not stopping after flush mode switched off

setPumpToRawValue(0) needs to be added to the following else block

gaggiuino/src/gaggiuino.ino

Lines 686 to 693 in 5be9fac

} else{
closeValve();
brewTimer(0); // stopping timer
brewActive = false;
/* UPDATE VARIOUS INTRASHOT TIMERS and VARS */
brewingTimer = millis();
/* Only resetting the brew activity value if it's been previously set */
preinfusionFinished = false;

otherwise the pump keeps blasting even after the flush mode switched off, in case the pump is not physically being disconnected by the brew switch.

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.

Solenoid Valve not opening

Discord links not working so I'm opening issue here.

everything was working and functional and even pulled a couple of shots. Did a little bit of wire management and then now the solenoid valve is not opening(ie. no water from group head).

Behaviour:

  • Pump works when brew switch is flipped on
  • water comes out of steam wand when brew switch is flipped on

Troubleshooting performed:

  • Cleaned solenoid valve and verified water is able to flow through the 2 very small holes
  • removed plunger inside valve and did a test run. water flows through all 3 outlets (grouphead, steam valve, drip tube)
  • Used a multimeter to test the solenoid coil and got a non-zero, non-infinite resistance reading.
  • AC dimmer can regulate pump so it doesn't seem to be that.
  • Removed ac dimmer and rewired pump to original and still not working

Basically down to the solenoid valve not getting the signal to open when brew switch is flipped. Not sure how to further troubleshoot.

What is ACS712 used for?

The code and wiki contain references to ACS712, but it only seems to be used for detecting the brew state. Also the BOM in the wiki doesn't mention it.

I'm very confused. 😄

Instructions - Ordering

Not a bug exactly, but some thoughts on the installation manual. If you find this valuable, I may submit more thoughts, if you aren't interested, I'll let you be.

Where the instructions say to order:
Thermo-resistant cables AWG15 and AWG20 ( 1m black/red ) and AWG26 ( 5m black/red/yellow/blue )

More explanation may be helpful. I recommend the following:

Thermo-resistant cables
If you want to make your life easy, order all of the following, which will make tracing cables easy
• 1m AWG 15 Black
• 1m AWG 15 Red
• 1m AWG 20 Black
• 1m AWG 20 Red
• 5m AWG26 Black
• 5m AWG26 Red
• 5m AWG26 Yellow
• 5m AWG26 Blue
• 5m AWG26 Green 
• 5m AWG26 Purple

If you want to order less stuff, order the following and use some sharpie or other coloring to color the cables yourself
• 1m AWG 15 White
• 1m AWG 20 White
• 5m AWG26 White

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?

Image links broken in Readme

Hello,

First off - thanks for the work on this project! I've just bought a Gaggia Classic Pro and already excited to try this. A couple issues:

  1. Most of the pictures linked from the Readme in this repo are broken. Are these pictures available elsewhere?
  2. There are some slight differences in the parts list in the Readme vs the website (https://gaggiuino.github.io/#/). Eg included in the readme but not the website is "Hall Current Sensor Module ACS712 - 20A". Which source the most up to date? (Since aliexpress has notoriously slow shipping to Canada, I want to make sure I order all the right parts 😄)

Broken picture looks like this, along with where the direct link goes:
image

Thanks again for the great work!

Edit:

image

- The previous install instruction pictures could still be useful, for the steps that overlap, in case someone still has access to the image files!

Edit 2:

Edit 3

  • Actually it looks like the wiki folder was deleted from the main repo...

Connecting the relay

Describe the bug
After connecting all components, I think my relay isn’t switching. There is no led indicating change.
I have heated up my thermocouple from way below the set temperature, to above the set temperature, and I see no led indicating change.

The pinout in the readme states the ground should be connected to relay pin nr. 3. Is this correct? Shouldn’t this be the 5 volt?

CONTRIBUTING.md?

Is your feature request related to a problem? Please describe.
Any docs on how to contribute to the project? I am interested in working a bit on the webserver and was wondering how contributions work

Describe the solution you'd like
a CONTRIBUTING.md file that contains how contributions work.

Describe alternatives you've considered
I guess a section in the README.md...

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

Replace SSR with a dimmer for boiler?

Considering the differences in how an SSR and a dimmer work, would it make sense to replace the SSR with a dimmer for the boiler? This should make the heating element a bit more "intelligent" and most likely extend its life since it is not going full power every time it is turned on.

Question: Power 220V through DB15 connectors?

I love the idea of using connectors. Do you run 220V through the DB15 connector? Or only data cables?
Do you house the dimmer and current sensor in the coffee machine, or in the printed housing?

I think running 220V from the dimmer, and current-sensor from the 3D printed housing through the DB15 connector to machine is a bit sketchy....

Love where this project is going

I love where this project is going!
Would it be possible to build this project based on a ESP8266? This would add WiFi an Bluetooth for later use.

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?

Pressure?

The readme mentions pressure in the descale function:

flush - 10s x 5 at 2bar
flush - 20s x5 at 1 bar
idle - 5min at 0 bar

There is no pressure gauge in this project. How does it know the pressure? Is it calculated from a baseline, and what is the baseline? A 9 bar modification or a stock Gaggia?

Non-free license

I saw your tool mentioned in arstechnica. The article says gaggiuino is open source, but the license says it is only for non-commercial usage. This reporting error is not your fault.

Non-commercial (NC) clauses are non-free as they are not free software according to the FSF, open source according to the OSI, or free culture according to Freedom Defined. I would recommend using CC-BY-SA-4.0, CC-BY-4.0, or CC-0-1.0 instead which are free culture Creative Commons licenses.

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!

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!

Predictive Weight Start Inaccurate in Flow Mode

When in flow control, predictive weight starts far too early. I end up being short changed by up to ~15g.
When in pressure control, I'm within +/-1 gram. I assumed this to be a machine/setup specific issue, but I'm unsure why the various checks linked below would only need to be applied to Pressure Control. Removing the if statement that checks the mode makes the predictive scale work uniformly for me.

if (phaseTypePressure) {

Optimize Nextion display RAM usage

Hi,

I really like this project. I'm working on adapting the functionality to respect the hardware of Gaggia Classic V2 (SS boiler and no solenoid valve).
I saw your announcement that you are moving project to new UI mainly because of insufficient resources of Nextion display.
Recently I found that you can free sufficient amount of RAM (approximately 230 bytes).
In Nextion Editor all text elements are with predefined length of 50 bytes and respectively so much RAM is reserved for each element. The same applies for all elements with text properties. In brewGraph page, I trimmed the texts and buttons to corresponding length of strings and I ended with:

Page:brewGraph Memory Occupied:1248+2104=3352

Which leaves enough RAM for further customization.

I'm not sure if that matters much, but probably can help other builders to adapt the existing Nextion screen UI that suits their needs.
Thank you again for your efforts in this project!!!

No description on website

Is your feature request related to a problem? Please describe.
There's nothing on the website to explain what gaggiuino is.

Describe the solution you'd like
Put a short description (similar to, or exactly the same as, the github description) on the website.

Scale

Very interested in this project, thank you for posting it. I've got an auber pid on mine at the moment but the dimmer functionality would be great!

Have you thought about adding bluetooth support to link up to scales like an acaia lunar? Looks like this would require a different arduino for that functionality but would allow to stop brew at a predefined ratio. Could be very cool.

[Web Interface] TypeScript?

React and web development standards have been moving towards TypeScript as a rule for a few years now. JavaScript only projects tend to lead to issues down the road, especially when you have consumers (even if the consumers are just deploying/running their own copy).

Strongly typed languages (even in the web world) help with a multitude of things - developer experience, better autocomplete, assurance in what you are getting when variables are accessed, the same result at the end of the day, etc.

Any reasons why the web-interface isn't using TS? If not would a refactor be welcomed?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.