Gaggia Espresso Temp Gauge With Latte Art Screen

by rabbitcreek in Circuits > Microcontrollers

410 Views, 7 Favorites, 0 Comments

Gaggia Espresso Temp Gauge With Latte Art Screen

IMG_8700.jpeg
espressoTemp

This Instructable is an upgrade to the my previous efforts ( https://www.instructables.com/Expresso-Temp/) to improve my espresso machine a Gaggia Classic. I originally wanted to improve the temp monitoring on the group-head by having a thermometer to inform me when the temp for pulling shots had reached the recommended 195 degrees but it worked by replacing one idiot light with another--my flashing red ring over the cup. In this iteration, I wanted to improve the obsessive experience by providing a monitoring screen to watch the temp as it went up. I upgraded the Xiao ESP32S3 with its mated Xiao branded 240x240 round screen. This allowed me to use a variety of screens that were AI created with the addition of a Latte Art Drawing screen for wiling away the 5 minutes involved in getting it up to temp. The total cost for the build is around $30 and requires minimal wiring and just a few 3D prints. It has a long life litho battery to keep it running and easy monitoring of battery level. It is mounted to the top of the Gaggia with internally placed magnets and the only wire connection is the K thermocouple taped to the rim of the portafilter just like the previous model.

Supplies

IMG_8617.jpeg
IMG_8603.jpeg
IMG_8592.jpeg
  1. Seeed ESP32 S3 microcontroller $7--This unit is so good!
  2. Xiao round display for ESP32S3 240 x 240 $18
  3. Adafruit I2C thermocouple amp MCP9600 $15
  4. Thermocouple Type-K glass Braid $10 Adafruit
  5. Adafruit push button power breakout $5
  6. Litho Battery 1000 mah $3
  7. Supermagnet 15mm $1

The ESP32S3 microcontroller is a great little machine but unfortunately when mated with the Xiao round display all of the GPIO pins become occupied. That is the reason for switching to the I2C amplifier from Adafruit from the original one in my other Instructable that used several GPIO pins. The new amp is attached to the I2C pins which can share the common bus with the other components that use it on the round display---the RTC. The choice of the power breakout rather than a simple on/off button was to try it on a project and see whether it allowed charging in a backwards direction through it--it does! However, if the pushbutton is not a requirement for your design aesthetics feel free to replace it with a standard on/off switch.

3D Print Housing

renderOne.jpg
RenderTwo.jpg

The files consist of the main body which holds the computer disc in place as well as two clips that allow the round screen to be attached to the main body. The magnet carrier has spaces for the 4 magnet mounts. The various parts are all printed in PLA-Matt finish. The main body requires support the rest of the parts not so much. The accent ring can be printed in contrasting colors. I used a Bambu printer which again produces flawless results.

Wire It

IMG_8610.jpeg
IMG_8604.jpeg
IMG_8611.jpeg

The wiring for this device is very straight forward. The Xiao ESPS3 clips into the headers on the Xiao round screen board after soldering on a row of pins on both sides. The only pins that you can really use are piggy backed onto D4 and D5 for SDA and SCL respectively as well as powering the unit from the 3 volts and ground. The nice connector from the MCP9600 is broken out and power and ground are soldered on and the SDA and SCL are also soldered on--see photo. The battery is first connected to the break-out board ON/OFF and then connected through the J1 connector to the battery in on the round display. All the rest of the connections to the screen are done through the mount and are complete.

Build It

IMG_8596.jpeg
IMG_8619.jpeg
IMG_8620.jpeg
IMG_8612.jpeg
IMG_8653.jpeg
IMG_8655.jpeg

The display has three inboard 2mm screw mounts on its back. Two of these are connected to the 3D plastic mount with screws. The printed back plate is then superglued to the plastic mount. This should be centered over the screen. The main body of the device has a round flange located down its throat to accommodate the round display. The back plate is superglued onto this flange allowing the face of the screen to come to the edge of the units opening. Make sure the wires connecting the unit with the power on plate go through the openings in the back plate. The on/off rim housing is superglued to the switch and glued into position with the button going through its hole in the back. The battery is glued to the lower unit cover after the magnets have been glued into their slots. Make sure the polarity of the supermags are all aligned alike. The magnets face into the unit and the cover is glued into the bottom. Finally, the front rim is glued into place.

Program It

theLastCup.jpg
pikaso_enhance__vivid_2K_Standard_r_c_-3.png
coffeeDone.jpg
battIndicator.jpg

The Xiao round display is a little bit tricky to get going. You have to follow the instructions on their wiki quite carefully: https://wiki.seeedstudio.com/seeedstudio_round_display_usage/. The things to look out for are the particular versions of libraries that they suggest will work with the display. If you have newer versions or other versions download theirs and carefully replace them otherwise nothing will display. Also of note is to follow the instructions on changing the wording in the libraries to make their particular wiring hookups for the round display work. This has to been done in simple word editing software but will work if you do it right.

The screens that I adapted were all designed in AI using the usual prompts. Download the full size square renderings and then using Gimp reduce the size to 240 X 240. This can also be a good time to crop the JPEG. Then go to: https://javl.github.io/image2cpp/ and download your picture into the unit. Leave Image Settings as is and change the Output to Arduino Code for output format and under draw mode: Horizontal - 2 bytes per pixel(565) and then type generate code. This will adapt any photo for use as a background screen in this program if you don't like the ones I included.

The code is pretty straightforward. At the top are all the #include statements for the files of 2 byte 240 x 240 picture descriptions. It's nice that the ESP32S3 has so much memory! The Adafruit MCP9601 library is also included. Battery full and low values are also included...these are different than the ones defined in the Xiao round screen wiki but they worked with a single lipo battery. TempLimit is where you change the value for what the Gaggio plateaus out to. In this case I set it for 185F. The next set of arrays hold the values for the x,y for where the end of the pointer will go based on the number of degrees they move. The PinMode is set up for receiving touch commands from the screen. The next section initializes the screen and sets up a large sprite. This is followed by an algorithm for setting up the arrays with values that correspond to where on the screen the temp value will show for various degrees. The MCP9601 is initialized. In the loop section if the screen is touched it either goes to the drawing function or to the battery function depending on location. If not touched the temp is checked and plotted on the sprite and the picture and temp readings are pushed onto the screen. If the temp is reached the background screen is changed. The drawing program maps a small yellow circle to wherever your finger touches and then shuts down after ten seconds. The battery program checks the value of D0 through a split resistor on the board and figures the voltage of the battery and plots it through a mapping program. It delays for 2 seconds and then returns to the loop.

Using It

IMG_8670.jpeg
IMG_8710.jpeg

To charge the battery the push button ON/OFF switch must be in the on position. It usually takes about 2 hours to bring the battery up to full charge. The temp sensor with the screen on can be active for 30 hours or so before the battery is depleted so if you use it for checking the temp on your latte it should last about a month without charging. The units microcontroller is accessible through the port on the side of the unit (make sure you point the USB-C through this hole when assembling) -- charging and changing the program are all done through through this port. You should be able to easily monitor the battery through the touch screen. The unit is magnetically attached to the top of the Gaggia and the only wire is from the K type thermistor that must be carefully taped to the group head in a location that won't interfere with its operation. Use Kapton high temperature tape for securing the end of the thermistor to the metal. This seems to work well and has been in operation on my machine for over a year. Its actually rather pleasant to draw late art on the screen while waiting for the brew temperature to come up although your pallet is rather limited and the results disappear after a short time sort of like the real thing. When the temp hits its maximum the picture shifts to the angelic hands of the barista with the floating ethereal projection of the perfect cup...ahhh AI!