Skip to the content
PCBKitNew board
2 layers92 × 92 mmPreheater, the printed circuit board in 3D

The controller supports multiple heating zones, thermocouple monitoring, fan control, and a modern web-based interface for managing the entire process directly from a browser.

Size
92 × 92 mm
Copper layers
2
Thickness
1.6 mm
Parts
158
Nets
118
Pads
489
Tracks, vias
1,175, 207
Pours
6
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
18 Oct 2026
Updated
18 Oct 2026

Overview

Preheater is an open-source printed circuit board by hetii, from the hetii/preheater repository on GitHub. It is a 2-layer board of 92 × 92 mm with 158 parts on 118 nets, routed with 1,175 tracks and 207 vias.

It is built around the ESP32-WROOM-32E, MAX31855KASA+T and LM2596S-ADJ, with the MOC3041M, AMS1117-3.3 and TC1 among its other parts. Its parts include 42 resistors, 35 capacitors, 14 ICs, 13 inductors and 8 diodes. It belongs with the ESP32 boards of this library.

Main components

6

README

README.md

BGA REWORK STATION

Advanced Open-Source BGA Preheater Controller with Web Interface, Multi-Zone Heating, and Thermal Profile Management.


📖 Overview

BGA Rework Station is a fully open-source project designed for controlling professional and DIY BGA/PCB preheating systems.

The controller supports multiple heating zones, thermocouple monitoring, fan control, and a modern web-based interface for managing the entire process directly from a browser.

The project is suitable for:

  • BGA rework stations
  • PCB preheaters
  • SMT/reflow experiments
  • Electronics repair workshops
  • DIY thermal control systems

✨ Features

🔥 Multi-Zone Heater Control

  • Control up to 5 independent heaters (time-proportional switching, no zero-cross / phase control)
  • Separate heating zones
  • Real-time power management
  • Suitable for IR heaters, ceramic heaters, hotplates, and custom heating systems

🌡️ Thermocouple Monitoring

  • Support for 6 MAX31855 based thermocouples and ds18b20 sensors over 1 wire
  • Real-time temperature acquisition
  • Multi-point PCB temperature tracking
  • Accurate thermal feedback for safe BGA processing

🌀 Fan Control

  • PWM two fan control support
  • Automatic or manual cooling operation
  • Active thermal stabilization

🌐 Web Interface

Built-in web application accessible from any browser.

Features include:

  • Real-time temperature monitoring
  • Heater control
  • Fan management
  • Profile editor
  • System status monitoring
  • Live thermal charts

💾 BGA Profile Management

  • Save and load BGA heating profiles
  • Custom temperature curves
  • Repeatable rework processes
  • Profile storage directly in the system

🛠️ Hardware Capabilities

FeatureSpecification
Heater OutputsUp to 5
Thermocouple Inputs6
Fan Control2 x PWM Supported
InterfaceWeb Browser
Profile StorageSupported
Open SourceYes

📂 Project Structure

text
├── docs
│   ├── datasheets
│   ├── img
│   └── pdf
├── hardware
│   ├── gerbers
│   ├── gerbers.sh
│   └── kicad
├── README.md
└── software
    ├── backend
    ├── frontend
    ├── Makefile
    ├── mock
    └── secrets.yaml

Layout

  • backend/ — reserved for the real ESP32 (Arduino) firmware, stage 2
  • frontend/ — Preact + TypeScript web UI (WebSocket telemetry + REST config)
  • mock/ — Python mock of the ESP32 backend (aiohttp; full thermal simulation)

Usage

sh
make deps      # install npm + python dependencies
make dev       # run mock backend (:8000) + vite dev server (:5173)
make test      # pytest for all REST/WS endpoints and the simulation
make lint      # ruff + eslint + tsc
make frontend  # production bundle (later embedded in ESP32 flash)

Useful during development: MOCK_TIME_SCALE=10 make mock runs the thermal simulation 10x faster than wall clock.

Contract

  • WebSocket /ws: telemetry pushed every 500 ms, events (step_done, profile_done, operator_needed, alarm), commands (start, pause, resume, stop, confirm, set_fans).
  • REST: GET/POST /api/profiles, GET/PUT/DELETE /api/profiles/{id}, GET/PUT /api/settings, GET /api/status.

The real ESP32 firmware (stage 2) must keep this contract unchanged.

Parts

158
QtyValueFootprintReferences
18.TestPoint:TestPoint_Pad_D1.5mmTP1, TP2, TP3, TP4, TP5, TP6, TP7, TP10, TP11, TP12, TP13, TP14, TP15, TP16, TP17, TP18 +2
13100nFCapacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolderC7, C8, C9, C10, C11, C12, C13, C16, C17, C21, C24, C28, C35
11BLM18PG471SN1DInductor_SMD:L_0603_1608Metric_Pad1.05x0.95mm_HandSolderL2, L3, L4, L5, L6, L8, L9, L10, L11, L12, L13
101kResistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR21, R22, R27, R29, R31, R32, R33, R34, R35, R36
10330Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR1, R4, R5, R8, R9, R10, R15, R16, R17, R20
910nFCapacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolderC1, C2, C3, C4, C5, C6, C14, C15, C23
910uFCapacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolderC18, C19, C25, C27, C29, C30, C31, C33, C34
6MAX31855KASAPackage_SO:SOIC-8_3.9x4.9mm_P1.27mmU6, U8, U9, U10, U11, U12
5330Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_HorizontalR3, R7, R12, R14, R19
5360Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR2, R6, R11, R13, R18
5BT139-800BPackage_TO_SOT_THT:TO-220-3_VerticalQ1, Q2, Q3, Q4, Q5
5LEDLED_SMD:LED_1206_3216Metric_Pad1.42x1.75mm_HandSolderD1, D2, D3, D4, D5
5MOC3041MPackage_DIP:DIP-6_W7.62mm_Socket_LongPadsU1, U2, U3, U4, U5
410kResistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR23, R25, R40, R41
2100Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR24, R26
21N4148Diode_SMD:D_MicroMELF_HandsolderingD6, D7
21nFCapacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolderC26, C32
2FL024ZPackage_TO_SOT_SMD:SOT-223-3_TabPin2Q6, Q7
2FerriteBeadInductor_THT:L_Axial_L7.0mm_D3.3mm_P10.16mm_Horizontal_Fastron_MICCFB1, FB2
2RXD_SELECTResistor_SMD:R_0201_0603MetricNT1, NT2
1*66Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR42
110Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR39
11N5825Diode_SMD:D_MicroMELF_HandsolderingD8
11k68Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR28
1220Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR37
1220uFCapacitor_THT:CP_Radial_D8.0mm_P3.50mmC22
1470uFCapacitor_THT:CP_Radial_D8.0mm_P3.50mmC20
147uHInductor_SMD:L_Bourns_SRR1260L1
14k7Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR38
1560Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR30
1AMS1117-3.3Package_TO_SOT_SMD:SOT-223-3_TabPin2U14
1BLM18PG471SN1DResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderL7
1BOOTButton_Switch_SMD:SW_SPST_PTS645Sx43SMTR92SW1
1BuzzerBuzzer_Beeper:Buzzer_12x9.5RM7.6BZ1
1DisplayConnector_PinHeader_2.54mm:PinHeader_2x05_P2.54mm_VerticalJ6
1ESP32-WROOM-32ERF_Module:ESP32-WROOM-32DU13
1FerriteBeadInductor_THT:L_Axial_L7.0mm_D3.3mm_P2.54mm_Vertical_Fastron_MICCFB3
1H1MountingHole:MountingHole_3.2mm_M3_Pad_ViaH1
1H2MountingHole:MountingHole_3.2mm_M3_Pad_ViaH2
1H3MountingHole:MountingHole_3.2mm_M3_Pad_ViaH3
1H4MountingHole:MountingHole_3.2mm_M3_Pad_ViaH4
1HeatersTerminalBlock_Altech:Altech_AK300_1x12_P5.00mm_45-DegreeJ5
1LM2596S-ADJPackage_TO_SOT_SMD:TO-263-5_TabPin3U7
1LOGOLOGO...
1RESETButton_Switch_SMD:SW_SPST_PTS645Sx43SMTR92SW2
1TC1TerminalBlock_Altech:Altech_AK100_1x02_P5.00mmJ1
1TC2TerminalBlock_Altech:Altech_AK100_1x02_P5.00mmJ2
1TC3-4-FAN1TerminalBlock_Altech:Altech_AK100_1x06_P5.00mmJ3
1TC5-6-FAN2TerminalBlock_Altech:Altech_AK100_1x06_P5.00mmJ4
1VCCTerminalBlock_Altech:Altech_AK100_1x02_P5.00mmJ7

The 157 most common of 158 parts.

Questions

How big is the Preheater PCB?

It measures 92 × 92 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Preheater use?

158 parts, built around the ESP32-WROOM-32E, MAX31855KASA+T, LM2596S-ADJ and MOC3041M. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Preheater KiCad files?

From the hetii/preheater repository on GitHub, at the commit this page was made from: the board is hardware/kicad/preheater.kicad_pcb and its schematic hardware/kicad/preheater.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Preheater design in my own project?

Its repository states no licence, so its author keeps all rights: ask hetii before reusing the design.

Similar boards

  • 2 layers72 × 72 mmReflowESP, the printed circuit board in 3D

    ReflowESP

    Weissnix4711/ReflowESP

    ESP32 powered reflow controller

    64 parts3
  • 2 layers90 × 100 mmOlivia control, the printed circuit board in 3D

    Olivia control

    AlterMundi-MonitoreoyControl/Proyecto-Incubadora

    Is an innovative project aimed at enhancing the efficiency and productivity of poultry incubators in family farming.

    51 parts4LGPL-2.1
  • 2 layersAutoLightPCB, the printed circuit board in 3D

    AutoLightPCB

    JuanCamilo0509/autoLights

    This project has two main directories: - Software: Two main sub-directories, the light-Module where the code for the esp is maintain, and the "mosquitto-Server" with the ".conf" file for the server.

    13 parts
  • 2 layers138 × 90.6 mmCorne chocolate, the printed circuit board in 3D

    Corne chocolate

    JonMuller/gerbers

    Place to store keyboard gerbers

    83 parts136MIT
  • 4 layers99 × 99 mmPrntrBoardV1, the printed circuit board in 3D

    PrntrBoardV1

    ghent360/PrntrBoard

    3D Printer controller board using STM32 NUCLEO-F446 kit TMC2130/2660/2209 drivers

    238 parts24
  • 2 layers31 × 26.4 mmReflowOvenControl v0, the printed circuit board in 3D

    ReflowOvenControl v0

    Roger-random/tux_lab_thermoformer

    Tux-Lab Thermoforming Machine project

    30 parts3