
We developed the device-side software for a heated vest for a US wearable brand. The hardware is designed and supplied by the customer; we delivered all device-side software — firmware development, BLE interface definition and integration, the OTA update chain, and production-test and integration support. The device is powered by a USB-C power bank, contains two heaters and two fans, shows status on an on-board OLED, and connects over BLE to phone and watch apps for settings and status.
Dual-zone independent temperature control
Built on the ESP32-S3 platform, a 20 Hz control loop aggregates system state and runs independent PID control on each heater, with a soft-start ramp and output limiting to avoid inrush and overshoot, plus left/right zone balancing.
Thermal safety system
Four temperature channels are calibrated, filtered and fault-diagnosed before being used in decisions: if the sensor associated with a heater fails, that heater stops; if both fail, all heating stops. Over-temperature protection is redundant, combining firmware policy with a hardware thermal fuse.
Fan/heater interlock
The fans support PWM speed control and tachometer feedback with stall and loss-of-signal detection. If a fan is judged faulty, heater output is cut immediately to prevent heat build-up.
Multi-page OLED interface
Display is driven by a state machine: boot page, operating page (setpoint, current temperature, battery, lock icon), temperature-adjust state, settings page, cool-down page and shutdown page — each with fixed wording and layout.
BLE interface for mobile apps
A custom BLE service with unified TLV characteristics: the read characteristic returns device information, the notify characteristic pushes periodic system snapshots, and the write characteristic accepts control commands. Notifications are throttled while faults are reported immediately, balancing connection stability with responsiveness.
Fail-safe OTA updates
A dual-partition OTA design decouples BLE reception from flash writing so reception is never blocked. Heaters are forced off and the system enters a safe state during updates, and a failed update can be rolled back, so an interrupted upgrade cannot brick the device.
Power modes
Two power-saving levels cap the maximum heating power and warn the user when the estimated remaining runtime is low.