Skip to content

bitbarista/CaffePeso

Repository files navigation

CaffePeso ☕

Note

This project is under active development. Features and hardware design may evolve. Feedback and contributions welcome.

Weigh smarter. Pull better.

License Platform Framework

A smart, automated espresso scale with a web interface — no custom PCBs required.

Armed auto-start • Auto-stop • Live brew ratio • Shot history • Target yield alert • GaggiMate BLE • Beanconqueror BLE • Wi-Fi web UI

FeaturesHardwareInstallationDocumentationAttribution

CaffePeso

📖 What is CaffePeso?

CaffePeso is a fork of WeighMyBru² by 031DevStudios, adding brewing automation to an already excellent DIY espresso scale. It runs on an ESP32-S3 and hosts its own web interface over Wi-Fi — no external server or hub required.

It is designed to work alongside GaggiMate via Bluetooth, or as a standalone scale. Inspired by the EspressiScale approach, but built from easily sourceable off-the-shelf parts — no custom PCBs.


✨ Features

⏱️ Armed Auto-Start

Hold tare to arm the scale before your shot. The timer starts automatically when the first drip hits the cup — no button press needed at the machine.

🔄 Auto-Re-Arm

The scale remembers your cup weight. On the next shot, place the same cup and tap tare — it recognises the cup and arms itself automatically.

📊 Live Brew Ratio

Set your dose once. The OLED displays a live 1:X ratio as yield builds in the cup, so you always know where you are in the extraction.

🔔 Target Yield Alert

Configure a target ratio (e.g. 1:2.0). When yield approaches your target, the OLED flashes and the web UI turns amber — giving you time to stop the shot.

📜 Shot History

The last 10 shots are automatically saved to non-volatile memory: dose, yield, time, and ratio. Survives reboots and power loss. Displayed in the web UI dashboard.

📱 Wi-Fi Web Interface

A full dashboard hosted directly on the ESP32-S3 — calibration, settings, shot history, OTA firmware updates, and real-time graphs. No app required.

🛑 Auto-Stop on Flow Cessation

Once flow has been active for at least 8 seconds, the timer stops automatically when flow drops below 0.5 g/s and remains there for 2 seconds. No manual stop needed at the end of a shot.

🔵 Bluetooth Scale Support

Native Bluetooth scale support for GaggiMate and Beanconqueror. CaffePeso uses the same BLE protocol as WeighMyBru² — GaggiMate's existing WeighMyBru support works with CaffePeso without any changes on either side. Beanconqueror can connect to CaffePeso for real-time weight, tare, and timer control.


🛠️ Hardware

The hardware is identical to the original WeighMyBru² project. See the original WeighMyBru² repository for:

  • Bill of Materials (BOM) with purchase links
  • Wiring guides and pin assignments
  • Enclosure CAD files and print instructions

Supported boards:

  • ESP32-S3 SuperMini (4 MB flash) — default
  • XIAO ESP32S3 (8 MB flash)

📦 Installation

🌐 Web-Based (Recommended)

No software installation required — flash directly from your browser:

  1. Visit the flash page
  2. Connect your ESP32 board via USB
  3. Click Install Firmware and select your board
  4. Follow the prompts

✅ No VS Code or PlatformIO needed ✅ Installs firmware + filesystem in one step ✅ Works on Chrome, Edge, and Opera

🔧 PlatformIO (Advanced)

Requires VS Code with the PlatformIO extension.

# Upload firmware (default: esp32s3-supermini)
pio run --target upload

# Upload filesystem (required for web interface)
pio run --target uploadfs

# For XIAO ESP32S3 explicitly:
pio run -e esp32s3-xiao --target upload
pio run -e esp32s3-xiao --target uploadfs

Important: Always flash firmware and filesystem using the same environment. Flashing the wrong environment (e.g. xiao firmware onto a supermini) causes a boot crash due to flash size mismatch (4 MB vs 8 MB).


📚 Documentation

Full user guide: docs/USER_GUIDE.md

For hardware build guides and video walkthroughs, see the original project.


🤝 Contributing

Contributions welcome — bug fixes, features, and documentation improvements are all appreciated. Please test your changes before submitting a pull request.


📜 Attribution

This project is a derivative of WeighMyBru² by 031devstudios, licensed under CC BY-NC-SA 4.0.

Additions in this fork:

  • CaffePeso branding — dark warm-brown web UI theme, Playfair Display italic title, OLED splash
  • Armed auto-start: hold tare to arm; timer triggers on first drip; auto-re-arms when same cup detected
  • Live OLED brew ratio during extraction
  • Target yield alert: OLED flashes and web UI turns amber when approaching target ratio
  • Cup weight persistence across reboots (NVS)
  • Shot history: last 10 shots stored in NVS, displayed in web UI
  • Power button redesigned: tap cycles timer (start → pause → reset); hold 1 s = status page; hold 3 s = sleep
  • Wi-Fi always-on: toggle removed; device deep-sleeps to save power instead
  • Auto-stop on flow cessation: timer stops automatically when espresso flow ends
  • Auto-tare on vessel placement: tares automatically when a stable weight is detected (configurable threshold)
  • Post-brew idle reset: auto-resets and re-tares after a configurable idle period
  • Arm button in web UI: arm/disarm directly from the dashboard without touching the physical button

This derivative is also released under CC BY-NC-SA 4.0.


🙏 Acknowledgments

  • WeighMyBru² by 031devstudios — the hardware design and original firmware this project is built on (CC BY-NC-SA 4.0)
  • GaggiMate by jniebuhr — for native BLE scale support
  • EspressiScale — inspiration for the approach

Built with ☕ by a home espresso enthusiast

Not affiliated with any espresso machine manufacturer