Firmware, hardware, and PCB design for a DIY automated beer brewing controller. An ESP32-based device reads mash temperature from multiple sensors, drives a GGM IDS2 induction cooktop through PID control, and integrates with CraftBeerPi via MQTT.
This repo tracks the project's evolution across several hardware/firmware generations.
Credit: the GGM IDS2 induction cooktop's RS232/serial protocol — pulse timings, command frames, power levels, and error codes — was reverse-engineered by InnuendoPi in MQTTDevice2. Every generation in this repo builds on that work.
| Folder | Status | Board | Build system | Notes |
|---|---|---|---|---|
| brewingstation | V1 | ESP32 (DOIT ESP32 DEVKIT V1) | Arduino IDE (.ino) or PlatformIO |
One firmware, two hardware variants: breadboard and fabricated PCB. Documented in its own README. |
| brewingstation3 | WIP | ESP32-C6-WROOM-1U | PlatformIO | Full rewrite: PID mash control, multi-sensor support, safety shutdowns, brew timer, KiCad schematic, 3D-printable case. See README, HARDWARE.md, BOM.md, CASE.md. |
brewingstation carries a platformio.ini (src_dir = .) alongside its .ino, so both PlatformIO and the Arduino IDE build from the same source file — pick whichever toolchain you prefer.
All generations share the same core idea: control the GGM IDS2 induction cooktop over its proprietary serial protocol, read temperature from DS18B20/PT100/PT1000/BME sensors, drive a couple of OLED displays and status LEDs, and talk to CraftBeerPi over MQTT.
brewingstation3 is where active development happens; the earlier folders are kept as historical/reference hardware revisions. It is work in progress: firmware compiles but is not yet proven on real hardware — the PCB hasn't been soldered/assembled, nothing has been tested end-to-end, and the 3D-printable case hasn't been printed.
Each own-project folder is self-contained with its own README and config. In general:
- Pick a generation —
brewingstation3for new builds, the earlier folders for reference or repairing existing hardware. - Copy
config_example.h(orinclude/config_example.hforbrewingstation3) toconfig.hand fill in your MQTT/OTA settings (brewingstation3also provisions WiFi separately, via a WiFiManager captive portal on first boot — see its README).config.his gitignored — never commit real credentials. - Build with PlatformIO (
pio run) or open the.inodirectly in the Arduino IDE — see that folder's README for board-specific notes.
The whole repo can also be opened as a single VS Code workspace via brewingstation.code-workspace.
brewingstation3 has a native unit test suite for its hardware-independent logic (calibration math, button-ladder mapping, induction error codes) — runs on the host, no ESP32 toolchain or device required:
cd brewingstation3
pio test -e nativeCI runs both the firmware build and this test suite on every push — see the badge above or .github/workflows/build-brewingstation3.yml.