Kiln Controller — Host / MCU Architecture
Open-source kiln controller with a split architecture:
- Control Panel (Host) — Python + FastAPI web application running on a Raspberry Pi (or any Linux PC). Handles the UI, firing engine, PID loop, and data logging.
- IO (MCU) — PlatformIO firmware on an ESP32. Reads thermocouples, drives SSR/relays, runs a TFT display, and handles hardware safety watchdogs.
The two halves communicate over USB Serial using a newline-delimited JSON protocol.
Features
- Web Interface — SvelteKit dashboard for live temperature monitoring, firing program editing, and settings.
- Firing Engine — Executes Ramp/Soak firing programs or manual mode via PID control.
- TFT Display — Embedded HMI on the ESP32: shows live PV/SP, segment progress, and allows starting/stopping firing directly at the kiln.
- Thermal Simulation — Full FOPDT simulation model (both host-side and on the MCU) so the whole stack can be developed and tested without hardware.
- Data Logging — Records temperature history to CSV (always) and InfluxDB (optional, for Grafana dashboards).
- Safety Watchdogs — Hardware-level comms timeout and control-loop heartbeat: the kiln de-energises automatically if the host stops responding.
Quick Start
No hardware needed — the app runs in simulation mode out of the box.
# 1. Build the frontend
cd "Control Panel/frontend"
bun install && bun run build
# 2. Install Python dependencies
cd ..
uv sync
# 3. Start
uv run python main.py
Open http://localhost:8000.
See Control Panel/README.md for Docker deployment, serial hardware setup, and InfluxDB/Grafana configuration.
See IO/README.md for firmware build, flash instructions, and thermocouple driver selection.
See docs/ for architecture, HMI design, simulation model, and protocol reference.
Hardware
The IO firmware targets the same PCB as the standalone esp32-kiln-controller. See that repository for PCB fabrication files and assembly notes.
Roadmap
- UI cleaning up (impeccable skill critique): better color palettes and fonts. I want a more industrial HMI look.
- Add window in dashboard with embedded grafana
- Proper architecture diagram
- Proper hardware e-stop (safety relay self-check + current sensing)
- PID auto-tune
- Ethernet driver for host ↔ MCU communication (with OTA firmware updates)
- Possibility: compatability with the standalone controller with a 3D printer control kinda architecture.
- Tauri desktop app with python sidecar
Known bugs:
- graph changes from moving to settings when using sim mode and alpha = 30 it looks like it simplifies data
- can't switch firing modes from python app when using serial esp32 io board
To test:
- Thermocouple type selector from dashboard
Contributing
Contributions are welcome. Feel free to open an issue or submit a pull request.
License
Firmware and software source code are licensed under the MIT License. See LICENSE.
Disclaimer
This is an early-stage project developed with the help of AI cooding tools like Claude and GitHub Copilot. It has not been as battle-tested as the standalone esp32 kiln controller. My aim if time permits is to develop this project fully, use at your own risk.