wwong / OpenEspressoProfiler

DIY BLE espresso pressure profiler using an ESP32

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Open Espresso Profiler

A DIY alternative to commercial BLE sensors for Espresso pressure profiling. Based on the ESP32 and off-the-shelf components.

Compatible with BeanConqueror and Pressensor CoffeFlow apps.

Full Assembly with electronics in the background

Hardware

Shopping list

This list below contains links to the parts that I bought. Total part cost comes out to around $80, but you can save a little bit by getting rid of the Tee fitting setup (not recommended if you ever need to calibrate your pressure sensor).

  • ESP32 - I used ESP-WROOM-32 dev boards, but any should be workable
  • Pressure Transducer - Must be capable of reading at least 150 PSI and run on 5V.
  • Fittings for Flair58 - The stock gauge uses G1/8 fittings, which should be equivalent to 1/8" BSPP
    • 1/8" NPT to 1/8" BSPP - Adapter in case you bought an 1/8" NPT transducer like I did.
    • 1/8" BSPT Tee Adapter - Probably not the right thread, but this is what I bought. We really want BSPP (not BSPT) on either end.
    • PTFE Tape - Useful to help seal up leaky connector fittings.
  • Electronics Misc
    • Dupont wires - Useful for prototyping. I soldered the transducer's included cables to some pin headers to make (dis)connecting easier. Considering crimping them into a three-wire connector.
    • Breadboard - Might want to get a few colored spools of solid strand wire to keep things tidy.
    • Resistors - Really only need a 10k and a 15k Ohm resistor
  • Optional - quality of life stuff
    • Outlet extender with USB - This lets me power an OEP off of the same outlet as my Flair 58. Combine with a smart outlet and Home Assistant for auto power off, too.
    • Dupont connectors and crimper - make the transducer wires easier to quickly connect
  • Tools
    • Soldering Iron
    • Wire cutter / stripper

Planning to calibrate your own transducer? These tools might also be useful:

Wiring it up

Wiring Diagram Picture of a breadboard with wires attached

The ESP32's built-in ADC can only read up to about 3.3V, so we need to step down the voltage coming from our transducer's output pin. I've opted for a simple voltage divider using 15k Ohm and 10k Ohm resistors to go from 5V to 3V reference.

Be sure to put the resistors in the correct order when wiring it up. The lower resistance should be between the transducer and the ADC pin.

If you need to use a different pin for analog readings, make sure to consult the ESP32 documentation to see which pins are connected to ADC1. We may choose to implement some Wi-Fi functionality in the future, which would disable ADC2.

Software

Building and Flashing

  1. Install PlatformIO
  2. Plug in your ESP32 and update the upload_port in platformio.ini
  3. Edit config.h to match your setup
  4. Build and upload by running the following command in this directory: platformio run -e espwroom32 -t upload

What's next?

  • 3D-printed Case

  • Web-based UI

    • Web Bluetooth connection to this (and other) BLE pressure sensors
    • Smart Scale support (targeting Acaia Lunar first)
    • Import from visualizer.coffee/BeanConqueror/CoffeeFlow/Decent/etc
    • Overlay imported profiles on graph
    • Export to other apps and sync to Cloud/NAS
  • Publish to MQTT or direct export to time-series DBs

About

DIY BLE espresso pressure profiler using an ESP32

License:MIT License


Languages

Language:C++ 88.6%Language:CMake 9.0%Language:C 2.3%