All Projects → beeb → coffee-scale-app

beeb / coffee-scale-app

Licence: MIT License
Firmware and Progressive Web App to connect to a DIY bluetooth enabled coffee and espresso scale.

Programming Languages

python
139335 projects - #7 most used programming language
Vue
7211 projects
javascript
184084 projects - #8 most used programming language
HTML
75241 projects
SCSS
7915 projects

Projects that are alternatives of or similar to coffee-scale-app

Callisto
A desk clock that uses a Russian IV-18 VFD tube
Stars: ✭ 18 (-41.94%)
Mutual labels:  esp32
ESPecial
ESP32 automation with web interface and telegram bot
Stars: ✭ 77 (+148.39%)
Mutual labels:  esp32
ESP32AudioFramework
Dual core concurrent multi-task processing of continuous real-time audio on the ESP-32
Stars: ✭ 35 (+12.9%)
Mutual labels:  esp32
esptool
esptool.py replacement written in #golang
Stars: ✭ 18 (-41.94%)
Mutual labels:  esp32
cordova-plugin-smartconfig
A cordova plugin for Smart Configure ESP8266 & ESP32 with Espressif Esptouch protocol.
Stars: ✭ 17 (-45.16%)
Mutual labels:  esp32
cafecito
Cafecito es un proyecto hecho en Next.JS con Express.JS y MongoDB para recibir cafés ☕️ a modo de donaciones.
Stars: ✭ 95 (+206.45%)
Mutual labels:  coffee
esp32-custom-vision
A simple face recognition using ESP32 Microcontroller with camera, and leveraging cloud-based inference powered by Azure Custom Vision.
Stars: ✭ 43 (+38.71%)
Mutual labels:  esp32
ESP32-ESP32S2-AnalogWrite
AnalogWrite for ESP32 and ESP32-S2 with LEDC PWM. Includes PWM Phase Control, DAC and Smart GPIO resource management.
Stars: ✭ 17 (-45.16%)
Mutual labels:  esp32
esp-idf-json
Example of JSON Serialize and Deserialize in ESP-IDF
Stars: ✭ 29 (-6.45%)
Mutual labels:  esp32
ESP-Mail-Client
⚡️Arduino Mail Client Library to send, read and get incoming mail notification for ESP32, ESP8266 and SAMD21 devices. The library also supported other Arduino devices using Clients interfaces e.g. WiFiClient, EthernetClient, and GSMClient.
Stars: ✭ 78 (+151.61%)
Mutual labels:  esp32
nanoFramework.M5Stack
📦 Board support package for M5Stack, M5StickC and M5StickCPlus for .NET nanoFramework
Stars: ✭ 18 (-41.94%)
Mutual labels:  esp32
MicroDNSSrv
A micro DNS server for MicroPython to simply respond to A queries on multi-domains with or without wildcards (used on Pycom modules & ESP32)
Stars: ✭ 43 (+38.71%)
Mutual labels:  esp32
RFLink
RFLink for ESP, with MQTT client
Stars: ✭ 52 (+67.74%)
Mutual labels:  esp32
esp32 snow
esp32 evk
Stars: ✭ 74 (+138.71%)
Mutual labels:  esp32
esp32-hid-joystick
No description or website provided.
Stars: ✭ 59 (+90.32%)
Mutual labels:  esp32
interp
Interpreter experiment. Testing dispatch methods: Switching, Direct/Indirect Threaded Code, Tail-Calls and Inlining
Stars: ✭ 32 (+3.23%)
Mutual labels:  esp32
Farm-Data-Relay-System
A system that uses ESP-NOW, LoRa, and other protocols to transport sensor data in remote areas without relying on WiFi.
Stars: ✭ 97 (+212.9%)
Mutual labels:  esp32
Train plus plus
Repo and code of the IEEE UIC paper: Train++: An Incremental ML Model Training Algorithm to Create Self-Learning IoT Devices
Stars: ✭ 17 (-45.16%)
Mutual labels:  esp32
esphome-weather-station
ESPHome version of Elektor weather station v2
Stars: ✭ 140 (+351.61%)
Mutual labels:  esp32
NMEA2000WifiGateway-with-ESP32
This repository shows how to build a NMEA2000 WiFi Gateway with voltage and temperature alarms.
Stars: ✭ 38 (+22.58%)
Mutual labels:  esp32

alt text

DIY Smart Coffee and Espresso Scale

This project contains all the necessary software to program the ESP32 microcontroller and interface with it through a Bluetooth API-enabled web browser (Chrome, Opera).

The firmware folder contains the .py files that need to be uploaded into the ESP32's memory running the MicroPython interpreter.

The firmware code has been tested on esp32-idf4-20200930-unstable-v1.13-77-g0fd0eb00a.bin (later version should work too) and can be flashed with esptool according to the instructions on the micropython site.

To upload the source files to the microcontroller, either use WebREPL or ampy.

The src folder contains the source for the Progressive Web App that allows to retrieve the scale's reading in real time (10Hz refresh rate) as well as the battery level.

The application is hosted at beeb.li/coffee 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 calculated 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
  • 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 basic Kalman filter for fast response and good smoothing
  • The weight is communicated through Bluetooth Low Energy every 100ms
  • 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.

Acknowledgments

This project was made possible by the following projects and people (amongst others). Thanks to them!

License

Distributed under the MIT License

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].