Embedded & IoT
Dual-ESP32 firmware for a connected kitchen appliance
ESP-IDF firmware for a countertop appliance on two custom ESP32 boards: an LVGL touchscreen with WiFi and BLE on one, the heat plate and boiler on the other, linked over UART.
- Client
- Kitchen appliance startup
- Services
- Firmware engineering, Embedded UI, Wireless connectivity, Board-to-board protocol design
- Date
- July 2026

A countertop appliance that boils, brews and fries, with a 3.5-inch touchscreen, preset programs, guided recipes and a companion app. We wrote the firmware for both of its custom ESP32 boards on ESP-IDF, from the touch driver up.
The challenge
Running an LVGL interface, WiFi, HTTP and BLE on the same chip that switches a boiler is asking for trouble. A slow network call or a burst of BLE events can block long enough to stall the render loop, and a stalled loop next to a heating element is not something to leave to chance. The product also had to schedule cooking runs hours ahead and keep them going if the phone or the network went away mid-cycle.
What we built
We split the work across two boards. The control board does one job: drive the heat plate and boiler on a tight, predictable timing loop with its own safety checks. It never touches a network stack. The UI board handles everything the user sees or touches: the touchscreen, WiFi, HTTP sync, BLE and the scheduler.
The two talk over a small UART protocol rather than a raw passthrough. The UI board sends start, stop and schedule commands. The control board answers with state, temperature and fault status on a fixed interval. The screen never waits on a reply: it sends a command and redraws from the next status frame, so it always shows what the control board is actually doing. If the UI board reboots, the control board carries on with its safety logic, and the UI picks up the last known state when it comes back.
The interface runs LVGL on top of ESP-IDF, with a touch driver written for this specific panel instead of lifted from a reference example. It covers boil and brew presets with doneness levels, delayed starts (start after or start at a set time), live timers with pause, resume and +30s, a weighing screen with tare and unit switching, recipe search, step-by-step guided recipes with per-step timers, and exporting ingredient lists by email.
WiFi provisioning runs on the device itself, with an on-screen keyboard and network list, and periodic HTTP sync lets the appliance report status and pull config and recipes without a phone nearby. BLE handles first-time setup and the companion app. Schedules live on the UI board and become a start command at the right moment, so a dropped connection never affects a run in progress.
- Two custom ESP32 boards on ESP-IDF, no dev boards or Arduino framework
- Heating and safety timing isolated on a board with no network stack
- Command and status UART protocol that keeps the UI responsive
- LVGL touchscreen UI with a custom touch driver
- Scheduler for delayed and timed starts that survives WiFi or app dropouts
- On-device WiFi provisioning, HTTP sync and a BLE companion app





