
HotPlate
Markuselectronics/DIY-USB-C-Reflow-Hotplate
A compact, open-source DIY Reflow Hotplate powered by USB-C PD and STM32. Features a custom aluminum PCB heater, OLED display, and PID temperature control for portable SMD soldering.

STM32F103 reflow oven controller: K-type thermocouple via MAX6675, 160 W element through a solid state relay, on-MCU PI loop, browser UI over SWD, and a 7in Nextion panel in progress.
Reflow Project Kicad is an open-source printed circuit board by Sensei82013, from the Sensei82013/Reflow-Oven repository on GitHub. It is a 2-layer board of 40.6 × 49.8 mm with 51 parts on 55 nets, routed with 227 tracks and 22 vias.
It is built around the STM32F103C8T6, MAX6675ISA+T and AMS1117-3.3, with the BSS138 among its other parts. Its parts include 11 capacitors, 10 resistors, 5 connectors, 4 diodes and 3 ICs. It belongs with the home automation and IoT boards and the STM32 boards of this library.
A toaster oven converted into a PCB reflow oven, driven by a custom STM32F103 board with a K-type thermocouple, a solid state relay and a 7" Nextion touch panel.
The firmware runs a PI loop on the MCU. A host can steer it either from a small web app over SWD (working today) or from the Nextion panel (in progress).
flowchart LR
MAINS["120 V AC mains"] --> PSU["PSU<br/>120 VAC to 24 VDC"]
PSU -->|24 V| SSR["SSR-25DD<br/>solid state relay<br/>3-32 V in, 25 A"]
SSR -->|switched 24 V| HEAT["Heating element<br/>3.6 ohm, 160 W"]
HEAT -.->|heat| TC["K-type thermocouple"]
TC --> MAX["MAX6675<br/>cold-junction comp<br/>+ 12-bit ADC"]
MAX -->|SPI| MCU["STM32F103C8T6<br/>custom PCB"]
MCU -->|PA8 PWM<br/>TIM1_CH1| SSR
MCU <-->|USART1<br/>PA9/PA10| NEX["Nextion NX8048P070-011C<br/>7in 800x480 capacitive"]
MCU <-->|SWD| HOST["Host PC<br/>OpenOCD + web app"]
PSU5["5 V supply, 1 A"] --> NEX| Part | Detail | Notes |
|---|---|---|
| MCU | STM32F103C8T6 | Custom PCB, OSHPark. 64 MHz from HSI - the 8 MHz crystal Y1 is not populated |
| Temperature | K-type thermocouple to MAX6675 | SPI, 0.25 °C resolution, 220 ms conversion. Terminal block J5 |
| Heater switch | SSR-25DD | DC-DC, 3-32 V control, 5-200 V DC out, 25 A. Driven from PA8 |
| Heating element | 3.6 Ω at 24 V | 6.7 A, 160 W. Hugely oversized for bench setpoints - see skill.md |
| Power | 120 VAC to 24 VDC | Feeds the element through the SSR |
| Display | Nextion NX8048P070-011C | 7", 800x480, capacitive, Intelligent series. Needs its own 5 V at 1 A - no USB power |
| Debug | ST-Link V2 on J2 | 3V3 / SWDIO / SWCLK / GND only. No NRST |
| Signal | MCU pin | Net / test point |
|---|---|---|
MAX6675 ~CS | PA4 | Thermo_CS, TP2, indicator D4 |
MAX6675 SCK | PA5 | Thermo_SCK, TP3 |
MAX6675 SO | PA6 | Thermo_SO, TP4 |
| SSR control | PA8 | Relay, J6, TIM1_CH1, indicator D3 |
| USART1 TX -> Nextion RX | PA9 | TP6 |
| USART1 RX <- Nextion TX | PA10 | TP5 (5 V tolerant) |
| SWD | PA13 / PA14 | J2 |
Two board quirks worth knowing before wiring anything:
Hardware/
KiCad/ schematic, PCB, gerbers, BOM, 3D step
Software/
webapp/ browser UI + Python bridge (bridge.py, index.html)
run_webapp.ps1 build, flash, serve the web app
run_profile.ps1 open-loop step tests, PI profiles, hardware probes
run_monitor.ps1 plain thermocouple monitor
Display/ Nextion HMI designs
Embedded/
Thermo_Monitor/ the live firmware (all current work)
Reflow_Oven_STM32_SOURCE_V1_1/ original 2021 firmware, Nextion HMI
Reflow_Oven_STM32_Source/ earlier revision
skill.md project goal, architecture and the pitfalls found so farEverything is driven from Software/, with the ST-Link connected. The
STM32CubeIDE toolchain is used in place, so nothing extra needs installing;
make comes from Git Bash.
# live temperature only
.\run_monitor.ps1 -Seconds 30
# browser UI: setpoint + Kp/Ki in, temperature and duty out
.\run_webapp.ps1 -Kp 0.2 -Ki 0.002 -MaxDuty 1.5
# then open http://127.0.0.1:8770/
# open-loop step test, for characterising the plant
.\run_profile.ps1 -Mode step -PwmHz 1 -StepDuty 10 -BaseSeconds 180 -Seconds 500 -Csv step.csvThe firmware builds in several modes, selected at compile time:
MODE= | What it does |
|---|---|
| (none) | thermocouple monitor, no heating |
pi | fixed 30/40/50 °C profile with dwells |
step | open-loop step at a fixed duty, for plant characterisation |
hold | park the output at a duty so the driver can be probed |
server | PI loop steered from the host over SWD - used by the web app |
nextion | PI loop driven from the Nextion panel - Start/Stop arm it, Apply sets setpoint and gains, telemetry goes back to the screen |
hmi | Nextion first-contact probe - baud sweep, pin checks, frame dump |
tx / rx | continuous transmit / raw receive capture, for tracing wiring |
Working: thermocouple readings, SSR drive, PWM on TIM1_CH1, PI loop on the MCU, web app with live charts and a dead-man switch, all the safety cutoffs.
Working on the panel: wire it straight to PA9 / PA10 - not J4, whose
level shifters are miswired. MODE=nextion is a full controller driven from
the screen: Start and Stop arm and disarm the loop, Apply sets the setpoint
and gains, and the firmware pushes temperature, setpoint, duty, error, state,
the status LED, the P/I split and the trend waveform back to the panel. The
object map is Software/Display/README.txt.
Remaining on the panel: a run on real hardware to confirm the arming path
end to end. Note the trend waveform's add command takes a single byte, so
the trace clips above about 91 °C - fine for bench work, not for a reflow
profile.
Not started: reflow profiles proper (soak / ramp / peak / cool), enclosure, mains-side safety.
See skill.md for the detail, and especially for the things that cost real
time to discover.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 6 | 100n | Capacitor_SMD:C_0402_1005Metric | C1, C2, C3, C4, C5, C18 |
| 5 | 10k | Resistor_SMD:R_0603_1608Metric | R1, R6, R7, R8, R9 |
| 5 | 1k5 | Resistor_SMD:R_0603_1608Metric | R2, R3, R4, R5, R10 |
| 5 | GND | MountingHole:MountingHole_3.2mm_M3_DIN965_Pad | H1, H2, H3, H4, H5 |
| 2 | 15p | Capacitor_SMD:C_0402_1005Metric | C7, C8 |
| 2 | 1760510000 | footprints:CONN2_1760510000_WED | J5, J6 |
| 2 | 1u | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C16, C17 |
| 2 | BSS138 | Package_TO_SOT_SMD:SOT-23 | Q1, Q2 |
| 2 | Conn_01x04_Pin | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | J2, J4 |
| 2 | GREEN | LED_SMD:LED_0603_1608Metric | D1, D2 |
| 2 | RED | LED_SMD:LED_0603_1608Metric | D3, D4 |
| 1 | 10u | Capacitor_SMD:C_0805_2012Metric | C6 |
| 1 | AMS1117-3.3 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U3 |
| 1 | ATS08A-E (8MHz) | ATS08A_E (1):ATS08A-E | Y1 |
| 1 | LOGO | LOGO | |
| 1 | MAX6675ISA_ | MAX6675ISA_T (5):SOIC127P600X175-8N | U4 |
| 1 | STM32F103C8T6 | Package_QFP:LQFP-48_7x7mm_P0.5mm | U1 |
| 1 | SW_Nidec_CAS-120A1 | EG1271A:SW_EG1271A | SW1 |
| 1 | SW_Push | Button_Switch_THT:SW_PUSH_6mm | SW2 |
| 1 | Thermo_CS | TestPoint:TestPoint_THTPad_1.0x1.0mm_Drill0.5mm | TP2 |
| 1 | Thermo_SCK | TestPoint:TestPoint_THTPad_1.0x1.0mm_Drill0.5mm | TP3 |
| 1 | Thermo_SO | TestPoint:TestPoint_THTPad_1.0x1.0mm_Drill0.5mm | TP4 |
| 1 | USART1_RX | TestPoint:TestPoint_THTPad_1.0x1.0mm_Drill0.5mm | TP14 |
| 1 | USART1_RX_v2 | TestPoint:TestPoint_THTPad_1.0x1.0mm_Drill0.5mm | TP5 |
| 1 | USART1_TX | TestPoint:TestPoint_THTPad_1.0x1.0mm_Drill0.5mm | TP13 |
| 1 | USART1_TX_v2 | TestPoint:TestPoint_THTPad_1.0x1.0mm_Drill0.5mm | TP6 |
| 1 | USB_B_Micro | Connector_USB:USB_Micro-B_Molex-105017-0001 | J1 |

Markuselectronics/DIY-USB-C-Reflow-Hotplate
A compact, open-source DIY Reflow Hotplate powered by USB-C PD and STM32. Features a custom aluminum PCB heater, OLED display, and PID temperature control for portable SMD soldering.



Mounith-H/Portable_temperature_sensor
wireless IoT temperature monitoring device based on the ESP8266 NodeMCU platform. It uses a MAX6675 thermocouple interface to measure temperatures up to 1024°C with high precision, making it suitable for industrial…

SimonDaniel605/Hydrogel-3D-Printer
Development of a custom hydrogel 3D printer for tissue engineering and research applications for Stellenbosch University.

uob-hep-cad/dune_timing_system_gib_slow_control_d001-25_dga
Slow Control Interface Board for the DUNE Timing System GIB


It measures 40.6 × 49.8 mm and has 2 copper layers, 1.6 mm thick.
51 parts, built around the STM32F103C8T6, MAX6675ISA+T, AMS1117-3.3 and BSS138. 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.
From the Sensei82013/Reflow-Oven repository on GitHub, at the commit this page was made from: the board is Hardware/KiCad/Reflow Project Kicad.kicad_pcb and its schematic Hardware/KiCad/Reflow Project Kicad.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask Sensei82013 before reusing the design.