Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/beeb/coffee-scale-app
Firmware and Progressive Web App to connect to a DIY bluetooth enabled coffee and espresso scale.
https://github.com/beeb/coffee-scale-app
coffee coffee-scale esp32 js micropython vuejs
Last synced: 5 days ago
JSON representation
Firmware and Progressive Web App to connect to a DIY bluetooth enabled coffee and espresso scale.
- Host: GitHub
- URL: https://github.com/beeb/coffee-scale-app
- Owner: beeb
- License: mit
- Created: 2020-05-25T19:27:27.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2024-12-28T21:19:59.000Z (about 1 month ago)
- Last Synced: 2025-01-20T06:11:34.702Z (12 days ago)
- Topics: coffee, coffee-scale, esp32, js, micropython, vuejs
- Language: Rust
- Homepage: http://coffee.beeb.li
- Size: 1.43 MB
- Stars: 113
- Watchers: 2
- Forks: 9
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
![alt text](./screenshot.jpg)
# DIY Smart Coffee and Espresso Scale
This project contains all the necessary software to program the
[ESP32 microcontroller](https://learn.sparkfun.com/tutorials/esp32-thing-hookup-guide) and interface with it through a
Bluetooth API-enabled web browser (Chrome, Opera).The `rs` folder contains the source code for the Rust firmware that need to be flashed onto the ESP32. See the
[README](rs/README.md) for instructions.The `src` folder contains the source for the Progressive Web App that allows to retrieve the scale's reading in real
time as well as the battery level.The application is hosted at [coffee.beeb.li](https://coffee.beeb.li) for convenience of users desiring building the
scale.## Settings
The app works as a timer to achieve the desired extraction in the desired time. A reference curve is displayed, taking
into account the user parameters:- **Coffee Weight**: how much coffee grounds were put in the basket (the "Read" button puts the current scale value into
this field)
- **Target Ratio**: the ratio of "coffee out" to "grounds in". The expected output weight is displayed next to the
field.
- **Pre-infusion Time**: this is an amount of time that is added to the timer as soon as >0.5g are detected in the cup.
This allows to indicate the desired total brew time including pre-infusion. It's the user responsibility to perform
the pre-infusion with this amount of time.
- **Total Time**: the total brew time, including any pre-infusion.## Workflow
- The basket or portafilter is put on the scale and tared with the scale's button.
- The desired amount of coffee grounds is put inside the basket
- the basket or portafilter is put back on the scales, thereby measuring the weight of the coffee grounds
- In the Settings pane, the "Read" button next to the "Coffee Weight" input is clicked to read the current value into it
- The cup is placed on the scale and it is tared with the button
- The "Start recording" button is pressed (only available when the scale reads 0g). The app now waits for an increase in
weight.
- As soon as the weight exceeds 0.5g, the timer starts counting from the pre-infusion time (default 5s).
- The extraction can be followed in real time and should match the grey reference curve (in a direct drive lever machine
, the user would adjust the pressure to match the curve)
- When the extraction is finished, the cup is lifted from the scale, thus stopping the recording.## Features
- Dual-core microcontroller allows for fast sampling rate of the load cell and fast refresh rate of the 128x32 OLED
display
- Load cell input is filtered with a Kalman filter for fast response and good smoothing
- The weight is communicated through Bluetooth Low Energy every 200ms
- The microcontroller can charge a LiPo or Li-ion battery and report its charge level
- The web-app persists user settings in the browser's local storage
- Can be added to the home screen of smartphones (_e.g._ with Chrome on Android, look almost like a native app)## Design files
The 3D printable parts are available from the
[prusaprinters page of this project](https://www.prusaprinters.org/prints/36112-diy-bluetooth-coffeeespresso-scale).## Forked version for ESP32 Feather breakout
User Nkawu forked part of this repo at the following location: https://github.com/Nkawu/coffee-scale-firmware
This alternative version uses a different microcontroller board and doesn't have any power button, as well as two
tactile function buttons.## Acknowledgments
This project was made possible by the following projects and people (amongst others). Thanks to them!
- [esp-rs](https://github.com/esp-rs/)
- [signalo](https://github.com/signalo/signalo)
- [hx711](https://github.com/DaneSlattery/hx711) by DaneSlattery
- [esp32-nimble](https://github.com/taks/esp32-nimble/) by taks
- [ssd1306](https://github.com/jamwaffles/ssd1306) by jamwawaffles
- [chart.js](https://www.chartjs.org/)## License
Distributed under the MIT License