ESP32 Heater Controller


Okay. I had to move R4 and J7. Sorry if that messes anything up.
Also. There are still issues. RT6 is only connected on one side. C23. RT4 C25. C14. Countless others are only wired up on one size.
Also, ESP32 devkits have a capacitor? Or resistor? That is wired in so you can flash firmware without the S1 and S2 buttons. And I'm not sure if the buttons are necessary, so I'm happy to save money if we can safely nix them.
I’ll re-check the layout after your R4/J7 move, distinguish PCB airwires from actual schematic one-sided wiring, then evaluate whether BOOT/RESET buttons can be removed in favor of ESP32-S3 native USB auto-download behavior.
Done.
Accomplished:
  • Verified RT6/C25, RT4/C23, C14, and related passives are schematic-connected on both sides; the issue was PCB routing/airwires, not one-sided schematic wiring.
  • Removed optional S1 BOOT and S2 RESET buttons to save BOM/assembly cost.
  • Kept the important ESP32 support: R4 GPIO0 pull-up, R3 EN pull-up, and C11 EN reset-delay cap.
  • Cleaned stale routing from your R4/J7 move and re-routed.
  • Final checked categories are clean: no airwires, dangling traces, copper overlaps, invalid layers, or relevant ERC errors.
Open items:
  • If we want best serviceability, add tiny labeled test pads for GPIO0/BOOT and EN/RESET later; they are cheaper than buttons and useful for recovery.
Suggested next steps:
  1. Visually inspect the routed PCB.
  2. Add/verify GND pours and antenna keepout.
  3. Run full manufacturing DRC before export.
  4. Update firmware/bring-up docs to note USB flashing without BOOT/RESET buttons.
Pours, keepout, docs
Add test pads
Verify GND pours
Check antenna keepout
Update docs
Manufacturing review

J1
U3
U2
U5
C24
Capacitance
100nF
C25
Capacitance
100nF
C1
Capacitance
10uF
C21
Capacitance
100nF
C9
Capacitance
100nF
C4
Capacitance
47nF
C13
Capacitance
1uF
C22
Capacitance
100nF
C12
Capacitance
1uF
C23
Capacitance
100nF
C50
Capacitance
10nF
C11
Capacitance
1uF
C20
Capacitance
100nF
C5
Capacitance
10uF
C8
Capacitance
100nF
C3
Capacitance
10uF
C14
Capacitance
100nF
C6
Capacitance
22uF
C7
Capacitance
22uF
C15
Capacitance
100nF
C2
Capacitance
1uF
C52
Capacitance
100nF
C10
Capacitance
10uF
C51
Capacitance
10nF
Q1 S - Q2 S
Q1 S - Q2 S
RT1 2 - RT2 2
SW1 C - C50 P2
J1 SHIELD - C1 P2
Q1 S - Q2 S
U2 EP - U2 VSYS
J1 SHIELD - C1 P2
D3
J1 SHIELD - C1 P2
GND
C6 P2 - C7 P2
Q1 S - Q2 S
Q1 S - Q2 S
U2 EP - U2 VSYS
RT1 2 - RT2 2
RT1 2 - RT2 2
RT1 2 - RT2 2
RT1 2 - RT2 2
J1 SHIELD - C1 P2
C6 P2 - C7 P2
SW1 C - C50 P2
RT1 2 - RT2 2
RT1 2 - RT2 2
SW1 C - C50 P2
U1 GND_11 - J6 1
Q1 S - Q2 S
Q1 S - Q2 S
C6 P2 - C7 P2
SW1 C - C50 P2
C6 P2 - C7 P2
C6 P2 - C7 P2
C6 P2 - C7 P2
J1 SHIELD - J1 SHIELD
U2 EP - U2 VSYS
J1 SHIELD - J1 SHIELD
GND
J1 SHIELD - C1 P2
Q1 S - Q2 S
J1 SHIELD - C1 P2
SW1 C - C50 P2
RT1 2 - RT2 2
SW1 C - C50 P2
SW1 C - C50 P2
GND
J1 SHIELD - C1 P2
C6 P2 - C7 P2
J1 SHIELD - C1 P2
RT1 2 - RT2 2
U2 EP - U2 VSYS
C6 P2 - C7 P2
D2
C6 P2 - C7 P2
C6 P2 - C7 P2
RT1 2 - RT2 2
J1 SHIELD - C1 P2
J1 SHIELD - C1 P2
J1 SHIELD - C1 P2
RT1 2 - RT2 2
C6 P2 - C7 P2
GND
RT1 2 - RT2 2
U2 EP - U2 VSYS
U1 GND_11 - J6 1
L1 P2 - U3 FB
U2 VBUS_EN_SNK - R9 P2
J1 DP2 - U5 I/O1
U1 TXD0 - J7 3
U1 IO18 - SW1 B
U1 IO8 - U2 SCL
J1 VBUS_B - C1 P1
U1 IO8 - U2 SCL
U4 DV/DT - C4 P1
Q1 D - J2 2
U1 IO1 - R30 P2
U1 IO4 - R33 P2
U1 IO3 - R32 P2
U1 IO13 - R23 P1
U2 VREG_1V2 - C12 P1
L1 P2 - U3 FB
J1 DP2 - U5 I/O1
U1 IO6 - R35 P2
Q3 D - J4 2
U4 EN - R2 P2
U1 IO16 - R42 P1
U1 RXD0 - J7 4
L1 P2 - U3 FB
U1 IO19 - J1 DN1
U1 IO4 - R33 P2
U1 IO2 - R31 P2
U1 IO9 - U2 SDA
J1 VBUS_B - C1 P1
U1 IO21 - SW1 2
R20 P2 - Q1 G
J1 CC2 - U2 CC2
J1 VBUS_B - C1 P1
J1 CC1 - U2 CC1
L1 P2 - U3 FB
U1 IO6 - R35 P2
U4 ILIMIT - R1 P1
U1 EN - R3 P2
U1 IO18 - SW1 B
J1 CC1 - U2 CC1
U3 SW - L1 P1
L1 P2 - U3 FB
U2 VBUS_EN_SNK - R9 P2
Q1 D - J2 2
U1 IO9 - U2 SDA
U1 IO18 - SW1 B
U1 IO1 - R30 P2
U1 IO2 - R31 P2
Q3 D - J4 2
U1 IO6 - R35 P2
U1 IO8 - U2 SCL
U1 IO5 - R34 P2
U4 SOURCE - C3 P1
U1 IO1 - R30 P2
L1 P2 - U3 FB
U4 SOURCE - C3 P1
U1 TXD0 - J7 3
U3 SW - L1 P1
U1 EN - R3 P2
U1 IO5 - R34 P2
U2 ALERT - R8 P2
U1 IO10 - R20 P1
L1 P2 - U3 FB
U1 IO5 - R34 P2
R21 P2 - Q2 G
U1 IO14 - R40 P1
U2 VBUS_VS_DISCH - R5 P2
U1 IO3 - R32 P2
Q2 D - J3 2
J1 VBUS_B - C1 P1
U1 RXD0 - J7 4
U1 IO5 - R34 P2
U1 IO19 - J1 DN1
R22 P2 - Q3 G
U1 IO10 - R20 P1
U1 IO21 - SW1 2
U1 IO21 - SW1 2
J1 VBUS_B - C1 P1
Q4 D - J5 2
R20 P2 - Q1 G
J1 CC2 - U2 CC2
U4 SOURCE - C3 P1
U2 ALERT - R8 P2
L1 P2 - U3 FB
U1 IO6 - R35 P2
U1 IO17 - SW1 A
U1 IO17 - SW1 A
L1 P2 - U3 FB
R21 P2 - Q2 G
L1 P2 - U3 FB
U1 IO9 - U2 SDA
R41 P2 - D3 K
U1 IO19 - J1 DN1
U4 SOURCE - C3 P1
U4 SOURCE - C3 P1
U1 IO2 - R31 P2
L1 P2 - U3 FB
L1 P2 - U3 FB
L1 P2 - U3 FB
U1 IO11 - R21 P1
L1 P2 - U3 FB
L1 P2 - U3 FB
U1 IO4 - R33 P2
U1 IO17 - SW1 A
R42 P2 - D4 K
L1 P2 - U3 FB
R22 P2 - Q3 G
J1 VBUS_B - C1 P1
R40 P2 - D2 K
U1 IO8 - U2 SCL
J1 CC2 - U2 CC2
J1 VBUS_B - C1 P1
R23 P2 - Q4 G
J1 VBUS_B - C1 P1
L1 P2 - U3 FB
U2 VREG_2V7 - C13 P1
U1 IO19 - J1 DN1
U1 IO11 - R21 P1
U1 EN - R3 P2
U1 IO1 - R30 P2
U1 IO3 - R32 P2
U1 IO0 - R4 P2
U1 IO15 - R41 P1
L1 P2 - U3 FB
U1 IO12 - R22 P1
U1 IO20 - J1 DP1
U4 SOURCE - C3 P1
J1 VBUS_B - C1 P1
U4 SOURCE - C3 P1
U4 SOURCE - C3 P1
U1 IO3 - R32 P2
L1 P2 - U3 FB
U2 ALERT - R8 P2
U1 IO16 - R42 P1
U3 SW - L1 P1
U1 IO20 - J1 DP1
R41 P2 - D3 K
U4 SOURCE - C3 P1
R23 P2 - Q4 G
U4 ILIMIT - R1 P1
Q2 D - J3 2
R20 P2 - Q1 G
U2 VREG_2V7 - C13 P1
L1 P2 - U3 FB
U1 IO2 - R31 P2
U4 EN - R2 P2
R21 P2 - Q2 G
L1 P2 - U3 FB
R22 P2 - Q3 G
J1 VBUS_B - C1 P1
R40 P2 - D2 K
U3 BST - C8 P1
U4 DV/DT - C4 P1
U3 BST - C8 P1
L1 P2 - U3 FB
U1 IO0 - R4 P2
L1 P2 - U3 FB
U1 IO13 - R23 P1
L1 P2 - U3 FB
U1 IO17 - SW1 A
U2 VREG_1V2 - C12 P1
U1 IO19 - J1 DN1
U1 IO12 - R22 P1
R42 P2 - D4 K
U1 IO21 - SW1 2
U2 VBUS_VS_DISCH - R5 P2
R23 P2 - Q4 G
J1 DP2 - U5 I/O1
L1 P2 - U3 FB
U1 IO9 - U2 SDA
L1 P2 - U3 FB
J1 CC1 - U2 CC1
U1 IO18 - SW1 B
J1 VBUS_B - C1 P1
U1 IO4 - R33 P2
U1 IO15 - R41 P1
Q4 D - J5 2
L1 P2 - U3 FB
U1 IO14 - R40 P1
RT2
Resistance
10kΩ
RT6
Resistance
10kΩ
RT1
Resistance
10kΩ
Q1
J2
RT5
Resistance
10kΩ
J3
J5
Q4
D4
Q3
DS1
RT3
Resistance
10kΩ
RT4
Resistance
10kΩ
Q2
J4
R42
Resistance
220Ω
R33
Resistance
10kΩ
R5
Resistance
470Ω
R27
Resistance
100kΩ
R8
Resistance
4.7kΩ
R41
Resistance
220Ω
R52
Resistance
10kΩ
R40
Resistance
560Ω
R3
Resistance
10kΩ
R24
Resistance
100kΩ
R51
Resistance
10kΩ
R1
Resistance
1.1kΩ
R30
Resistance
10kΩ
R32
Resistance
10kΩ
U1
R7
Resistance
4.7kΩ
R6
Resistance
4.7kΩ
R31
Resistance
10kΩ
R50
Resistance
10kΩ
R20
Resistance
100Ω
R34
Resistance
10kΩ
R9
Resistance
100kΩ
R23
Resistance
100Ω
R35
Resistance
10kΩ
R2
Resistance
300kΩ
R4
Resistance
10kΩ
R25
Resistance
100kΩ
R21
Resistance
100Ω
R26
Resistance
100kΩ
R22
Resistance
100Ω
U4
L1
Inductance
4.7µH
J7
D1
SW1
Project Specification — ESP32 Heater Controller
Project Overview
Status: Draft / requirements capture
This project is an ESP32-based shelf device that controls four low-voltage adhesive polyimide film heaters while monitoring local safety temperatures and ambient room temperature. The device is intended to be production-minded from the start: cost-conscious for an approximately $40 retail product, but with deliberate spending on safety, reliability, USB-C user experience, and supply-chain resilience.
Intended Use
  • Product sits on a bookshelf or similar indoor environment.
  • Four off-board 5 V / 1 W adhesive polyimide heater strips heat their target items.
  • Heater target behavior: each 1 W heater may operate at 100% duty while its target remains below 38 °C.
  • Heating is primarily open-loop because direct measurement of the heated item is impractical.
  • PCB-mounted temperature sensors provide safety monitoring near the off-board heaters and ambient room temperature sensing.
  • Device is expected to remain installed and reliable for roughly 5–10 years.
What the Device Should Do
  • Independently control four heater outputs with PWM or equivalent power modulation.
  • Allow quick heater installation using green pluggable screw-terminal connectors for bare wires.
  • Monitor four heater-adjacent safety temperature sensors.
  • Monitor two ambient temperature sensors placed caddy-corner on the PCB.
  • Provide USB-C for both power and ESP32 flashing/debug.
  • Work with both simple/dumb 5 V USB-C adapters and USB-C PD laptop chargers.
  • Provide a small display, rotary encoder with pushbutton, and front RGB status LED.
  • Support WiFi and Bluetooth through the ESP32 module.
  • Survive reasonable user/environmental abuse such as common ESD events and power interruptions.
Main Features
  • ESP32-based WiFi/Bluetooth controller.
  • 4 low-voltage heater outputs.
  • 6 total PCB-mounted temperature sensors:
    • 4 heater safety sensors in a straight line, approximately 55 mm apart.
    • 2 ambient sensors placed caddy-corner and exposed to isolated ambient airflow paths.
  • USB-C power + programming connector.
  • USB-C PD sink behavior plus fallback/default 5 V sink behavior.
  • I2C display, likely small OLED unless cost/availability pushes a better alternative.
  • Continuous-turn clicking rotary encoder with pushbutton.
  • RGB status indicator.
  • Input protection, ESD protection, current limiting/fusing, and power-rail robustness.
System Architecture

Diagram


USB-C Port ESD + Fuse/Input Protection USB-C PD Sink / node_5V Fallback Front End 5V Rail 4x Heater Outputs via MOSFETs 3.3V Regulator ESP32-S3 Module I2C Bus Small Display 6x Temperature Sensors Rotary Encoder + Button RGB Status LED USB D+ / D-
Hardware Subsystems
Controller
  • Preferred direction: ESP32-S3 module with native USB, WiFi, and Bluetooth.
  • Use a module rather than bare ESP32 silicon to reduce RF design and certification risk.
  • Preserve required boot/reset strap behavior and provide reliable flashing access over USB-C.
  • Keep antenna placement/keepout as a first-class layout constraint.
USB-C Power and Programming
  • Single USB-C port provides power and ESP32 programming/debug.
  • Must accept default 5 V from non-PD USB-C supplies.
  • Must negotiate or behave correctly when connected to USB-C PD laptop chargers.
  • Include USB data-line ESD protection.
  • Include input current limiting/fuse protection and transient protection appropriate for consumer USB-powered hardware.
Heater Outputs
  • Four independent 5 V heater channels.
  • Each heater is nominally 1 W at 5 V, approximately 200 mA.
  • Use low-side logic-level N-MOSFET switching unless a later reason favors a different topology.
  • MOSFETs should be conservatively rated so they run comfortably cool at the expected load.
  • No heatsinking is allowed; all heat dissipation must be acceptable in a passively cooled enclosure with the heaters also adding heat nearby.
  • Heater connectors should be comfortably rated above expected current and suitable for repeated bare-wire installation.
Temperature Sensing
  • Four safety sensors are PCB-mounted near the heater exits/locations, approximately 55 mm apart in a straight line.
  • Two ambient sensors are PCB-mounted caddy-corner, with enclosure airflow tubes exposing them to room air while isolating them from heater-local air.
  • Prefer stable, reputable, commonly available sensors with good long-term drift characteristics.
  • Avoid cheap or fragile sensor constructions if they create lifetime drift, adhesive/epoxy degradation, or supply-chain risk.
  • Address planning is required if digital I2C sensors are used; use an I2C mux or mixed addressing if needed.
User Interface
  • Small screen on device front; I2C OLED is the initial preferred direction.
  • Continuous-turn rotary encoder with tactile clicks and integrated pushbutton for menu navigation.
  • Front RGB LED for at-a-glance system status.
Protection and Robustness
  • Reasonable ESD protection on USB and externally accessible interfaces.
  • Power input fuse/current limit and transient protection.
  • Firmware/hardware fail-safe assumptions should prevent heater runaway where practical.
  • Consider watchdog behavior, safe boot defaults, and safe state on brownout or reset.
Interfaces and Connections

Table


InterfacePurposeNotes
USB-C receptaclePower input and ESP32 flashing/debugMust support dumb 5 V and PD chargers gracefully
4x heater screw-terminal outputsConnect 5 V / 1 W heatersGreen pluggable screw terminals preferred
I2C busDisplay and temperature sensorsAddress planning required
Rotary encoder pinsUser menu navigationInclude pushbutton input
RGB LED outputsSystem statusUse current limiting or driver as needed
ESP32 RF antennaWiFi/BluetoothBoard-edge antenna keepout required
Power and Runtime Expectations
  • Primary input: USB-C.
  • No battery specified.
  • Heater load: 4 × 1 W = 4 W maximum heater power.
  • Expected 5 V heater current: 4 W / 5 V = 0.8 A maximum heater load.
  • Logic/display/sensor current is expected to be much lower than heater current but must be budgeted during part selection.
  • Practical USB-C target: design for at least 5 V / 1.5 A input capability; 5 V / 2 A or 3 A adapters provide comfortable margin.
  • PD should improve compatibility with laptop chargers, not require obscure adapters.
Power Tree and Preliminary Power Budget

Diagram


USB-C node_5V Input Resettable Fuse or Current Limit Input/ESD Protection USB-C PD Sink / CC Control Protected node_5V Rail Heater 1: node_200mA Heater 2: node_200mA Heater 3: node_200mA Heater 4: node_200mA 3.3V Regulator ESP32 + Sensors + OLED + LED

Table


LoadRailEstimated CurrentNotes
Heater 15 V200 mA1 W heater
Heater 25 V200 mA1 W heater
Heater 35 V200 mA1 W heater
Heater 45 V200 mA1 W heater
ESP32 module3.3 VTBDWiFi peak current must be accounted for
OLED/display3.3 V or 5 VTBDDepends on selected module
6x temperature sensors3.3 VTBDDepends on selected sensor family
RGB LED3.3 V or 5 VTBDDepends on LED type/current target
Manufacturing and Assembly Expectations
  • Target product retail price: approximately $40.
  • PCB and component choices should be affordable for the specification, not premium without reason.
  • Prefer common, well-stocked, RoHS/lead-free components.
  • Avoid EOL, niche small-run, leaded, or single-source parts.
  • Prefer standard packages and parts with reasonable alternates.
  • Use generic passives where practical.
  • Include useful test points for power rails, USB, I2C, programming, and heater outputs.
  • Favor manufacturable footprints and assembly-friendly part choices.
Firmware-Relevant Hardware Requirements
  • ESP32 native USB flashing/debug via the same USB-C port used for power.
  • PWM-capable GPIO for each heater channel.
  • I2C bus for display and temperature sensors.
  • GPIO inputs for rotary encoder A/B and pushbutton.
  • GPIO/PWM or serial LED interface for RGB status LED.
  • Safe heater-off default during boot, reset, firmware update, brownout, and watchdog reset.
  • Brownout and watchdog behavior should be part of firmware bring-up.
Physical Design Expectations
  • Enclosure maximum: 130 mm × 200 mm.
  • PCB target maximum: ≤125 mm × 195 mm.
  • No heatsinks.
  • Passively cooled environment only.
  • Current PCB outline target: 124 mm × 190 mm.
  • Board coordinate/orientation convention:
    • Back is the side with the USB-C connector.
    • Front is opposite the USB-C connector.
    • Side A is the user-interface side with the OLED and rotary encoder.
    • Side B is the heater/service side with heater sensors, heater connectors, and heater MOSFETs.
  • OLED/display placement: centered on the front area of Side A.
  • Rotary encoder/knob placement: front-right corner area of Side A.
  • USB-C placement: centered on the back edge.
  • Four heater safety temperature sensors should be placed in a straight line approximately 55 mm apart.
  • Heater-side grid target: RT1–RT4 on the long-axis centerline at approximately 55 mm spacing; Q1–Q4 on a parallel line to the right of the corresponding sensors, also at approximately 55 mm spacing.
  • Heater connectors should be on Side B in two paired groups between adjacent heater-sensor positions, aligned on an axis perpendicular to the heater-sensor line.
  • Two ambient sensors should be placed caddy-corner with enclosure air-tube access and thermal isolation from heater zones.
  • USB-C connector should be accessible from the back of the device.
  • Display, rotary encoder, and RGB LED are expected to be front-facing or front-panel accessible.
  • ESP32 antenna must remain inside the PCB limits unless the board outline is intentionally shaped to support any antenna/keepout overhang.
Environmental and Thermal Requirements
  • Required operating environment: approximately 0 °C to 40 °C.
  • Preferred operating environment: -20 °C to 50 °C if cost impact is reasonable.
  • Product must run comfortably without heatsinking.
  • Internal electronics must remain within rated temperature while four 1 W heaters may be active nearby.
  • Heater control target: heater item remains below 38 °C even at continuous operation.
  • Thermal design must account for passive enclosure conditions and local heater-induced air/board warming.
Compliance and Future UL Readiness
  • Design should not claim UL certification now, but should avoid obvious choices that make future UL-style review difficult.
  • Follow conservative practices for:
    • Connector current ratings and wire retention.
    • Fusing/current limiting.
    • Temperature derating.
    • Clear labeling of power input and heater outputs.
    • PCB trace width and copper temperature rise.
    • Safe default states and fail-safe behavior.
  • Wireless module choice should consider FCC/CE modular certification paths.
  • Use RoHS/lead-free components and assembly assumptions.
Important Design Decisions
  • ESP32-S3 module is the current preferred controller because it provides WiFi, Bluetooth, enough GPIO, and native USB programming.
  • USB-C should use a PD-capable/friendly sink approach while still accepting default 5 V.
  • Heater drivers should be simple low-side MOSFET switches unless a later safety or sensing need changes this.
  • MOSFETs should be intentionally oversized for cool operation and long life, but not expensive beyond what the low current requires.
  • Temperature sensors should be selected for reliability, availability, and cost balance rather than only the cheapest BOM line item.
Assumptions
  • Heater strips are externally sourced 5 V / 1 W adhesive polyimide heaters.
  • The PCB does not need to directly measure the heated target item.
  • The heater safety sensors are PCB-mounted, not cable-mounted.
  • No battery, charging, or standalone runtime is required.
  • Device is indoor consumer/office use, not wet/outdoor use.
  • The display, encoder, RGB LED, and USB-C connector are expected to align mechanically with the enclosure, but exact front/back panel geometry is not yet defined.
Change Notes
  • Captured requirement for four heater safety sensors spaced approximately 55 mm apart in a straight line.
  • Captured requirement for USB-C compatibility with both dumb 5 V sources and USB-C PD laptop chargers.
  • Captured enclosure and PCB size limits.
  • Captured cost-conscious $40 retail target and 5–10 year reliability goal.
  • Captured supply-chain preference against EOL, small-run, leaded, and single-source parts.
  • Captured future UL-readiness preference.
  • Captured no-heatsink/passive-cooling requirement and heater target of continuous operation below 38 °C.
  • Captured front/back and Side A/Side B placement convention, including UI-on-Side-A and heater/service components-on-Side-B constraints.
  • Project Overview

  • Intended Use

  • What the Device Should Do

  • Main Features

  • System Architecture

  • Hardware Subsystems

  • Controller

  • USB-C Power and Programming

  • Heater Outputs

  • Temperature Sensing

  • User Interface

  • Protection and Robustness

  • Interfaces and Connections

  • Power and Runtime Expectations

  • Power Tree and Preliminary Power Budget

  • Manufacturing and Assembly Expectations

  • Firmware-Relevant Hardware Requirements

  • Physical Design Expectations

  • Environmental and Thermal Requirements

  • Compliance and Future UL Readiness

  • Important Design Decisions

  • Assumptions

  • Change Notes