

ESP32Controller
ESP32-based 3D printer controller
- Size
- 155 × 80 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 171
- Nets
- 206
- Pads
- 833
- Tracks, vias
- 2,271, 285
- Pours
- 8
- Routed
- Yes
- KiCad
- KiCad 5 (file 20171130)
- Created
- 5 Jul 2018
- Updated
- 6 Jul 2021
Overview
ESP32Controller is an open-source printed circuit board by simon-jouet, from the simon-jouet/ESP32Controller repository on GitHub. It is a 2-layer board of 155 × 80 mm with 171 parts on 206 nets, routed with 2,271 tracks and 285 vias.
It is built around the ESP32-S2-WROOM-N4, XL1509-3.3 and 74HC595, with the TLV1117-33DCY, 100UF/35V and TMC2209 among its other parts. Its parts include 65 connectors, 46 resistors, 32 capacitors, 7 ICs and 5 diodes. It belongs with the robots and motor control boards and the ESP32 and RISC-V boards of this library.
Main components
7ESP32-S2-WROOM-N4
SMD,31x18mm-40℃~+85℃ -97dBm 19.5dBm 2.4GHz 310mA 3V~3.6V 63mA ESP32-S2 On-board PCB Antenna UART、SPI、I2C、GPIO、I2S SMD,31x18mm WiFi Modules ROHSEspressif SystemsWiFi ModulesXL1509-3.3
SOP-8-40℃~+125℃@(TJ) 1 150kHz 2A 2mA 3.3V 4.5V~40V Buck Buck Built-in Fixed No SOP-8 DC-DC Converters ROHSUMWDC-DC Converters74HC595
SOP-16-40℃~+85℃ 1 100ns@5V,50pF 10MHz 2V~6V 74HC 8 Serial-to-Serial or Parallel Tri-State SOP-16 Shift Registers ROHSGRShift RegistersTLV1117-33DCY
UncategorisedTexas Instruments100UF/35V
C1812C1812 SMT ROHSJLCPCB AssemblyUncategorisedTMC2209
UncategorisedTRINAMICB340A
SMA(DO-214AC)-55℃~+150℃ 1 Independent 3A 40V 500mV@3A 500uA@40V 80A SMA(DO-214AC) Schottky Diodes ROHSDiodes IncorporatedSchottky Diodes
README
README.mdESP32Controller
ESP32Controller is an open source hardware controller for 3d printers, laser cutter/engraver and other CNC machines.
Overview
There are currently 3 iterations of the board all based on either the ESP32 or ESP32-S2. The ESP32 is a dual core Xtensa LX6 with 34 GPIOs and the ESP32-S2 is a single core Xtensa LX7 with 43 GPIOs and built-in USB support.
| Board | MCU | Drivers | Mosfets | Thermistors | Comm. |
|---|---|---|---|---|---|
| R3 | ESP32-S2 | 10 | 5 | 5 | USB |
| R2 | ESP32 | 5 | 3 | 3 | USB to UART |
| R1 | ESP32 | 4 | 3 | 2+2 | USB to UART |
R3 Board
This third iteration of the board moves away from the ESP32 to the ESP32-S2 to gain 9 GPIOs at the cost of having only a single core (albeit more efficient).
Using the newly available GPIOs the number of mosfets and thermistors on the board have increased to 5.
In the R2 board the I2S stream has been used to drive 5 drivers but could address more than that. In the R3 board the number of drivers increased to 10 as the cost of adding support for that many drivers is minimal and should cover most of the use cases.
This board was also designed with TMC2209 drivers in mind (although not required), by allowing UART communication for 8 of the 10 drivers through jumpers on the board and connecting the diag pins to the endstops for the first three driver slots allowing sensorless homing without external jumper wires.
- 10 pololu stepper drivers over I2S
- 5 mosfets
- 5 thermistors
- 3 endstops (connected to stepper DIAG pins for the first three drivers)
- USB type C -- OTG port on the ESP32-S2
- micro SD card slot
- jumpers for UART communication to the first 8 drivers

R2 Board
The primary issue with using an ESP32 as the main controller for a CNC controller is the general lack of GPIOs on the controller limiting considerably the number of drivers, thermistors and endstpos that can be controlled.
This second iteration main goal was to move away from direct GPIO control of the drivers and instead move to use the I2S stream to provide real time and highly accurate stepper pulses while only using 3 pins on the ESP32.
The redesign also removed some of the unused features of the R1 design most notably the external ADC and the GPIO expander.
- 5 pololu stepper drivers over I2S
- 3 mosfets
- 3 thermistors
- 3 endstops
- USB type C -- CH340G USB to UART converter
- micro SD card slot

R1 Board
This is the first standalone board based on the ESP32. This board was designed as a barebone controller with the minimum required to support an i3 style printer.
- 4 pololu stepper drivers (X, Y, Z, E0) with direct GPIO connection
- 3 mosfets (Bed, Hotend, Part cooling fan)
- ADS1015 external ADC for the thermistors (over i2c)
- 2 thermistors to the ESP32
- 2 thermistors to the ADS1015
- SX1509 GPIO expander (over i2c)
- 3 endstops direct to the the ESP32
- 3 endstops to the GPIO expander
- USB micro b -- CH340G USB to UART converter
- micro SD card slot

Parts
171| Qty | Value | Footprint | References |
|---|---|---|---|
| 15 | 10k | Resistor_SMD:R_0603_1608Metric | R1, R2, R3, R4, R16, R17, R18, R19, R20, R21, R22, R23, R24, R25, R41 |
| 10 | 100uF/35V | Capacitor_SMD:CP_Elec_6.3x7.7 | C23, C24, C25, C26, C27, C28, C29, C30, C31, C32 |
| 10 | Conn_02x02_Odd_Even | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | J1, J2, J9, J10, J11, J21, J23, J24, J33, J34 |
| 10 | Conn_02x04_Odd_Even | Connector_PinHeader_2.54mm:PinHeader_2x04_P2.54mm_Vertical | J3, J4, J12, J15, J16, J22, J27, J28, J35, J36 |
| 10 | TMC2209 | ESP32Controller:pololu | J5, J6, J13, J17, J18, J25, J29, J30, J37, J38 |
| 8 | 100nF | Capacitor_SMD:C_0603_1608Metric | C3, C4, C8, C14, C15, C16, C17, C33 |
| 7 | 10uF | Capacitor_SMD:C_0805_2012Metric | C9, C10, C11, C12, C13, C21, C22 |
| 7 | 4.7k | Resistor_SMD:R_0603_1608Metric | R5, R6, R7, R8, R9, R11, R12 |
| 5 | 0 | Resistor_SMD:R_0603_1608Metric | R26, R29, R32, R35, R38 |
| 5 | 10 | Resistor_SMD:R_0603_1608Metric | R27, R30, R33, R36, R39 |
| 5 | 100k | Resistor_SMD:R_0603_1608Metric | R28, R31, R34, R37, R40 |
| 5 | Q_NMOS_GDS | Package_TO_SOT_SMD:TO-252-2 | Q1, Q2, Q3, Q4, Q5 |
| 4 | 220 | Resistor_SMD:R_0603_1608Metric | R44, R45, R46, R47 |
| 4 | 74HC595 | Package_SO:TSSOP-16_4.4x5mm_P0.65mm | U2, U3, U4, U5 |
| 3 | NC | Capacitor_SMD:C_0603_1608Metric | C5, C6, C7 |
| 2 | 1k | Resistor_SMD:R_0603_1608Metric | R10, R13 |
| 2 | 5.1k | Resistor_SMD:R_0603_1608Metric | R42, R43 |
| 2 | D_TVS | Diode_SMD:D_SOD-523 | D5, D6 |
| 2 | Fuse | ESP32Controller:Fuse_holder_0679H | F1, F2 |
| 2 | Jumper | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | JP1, JP2 |
| 1 | 220uF/35V | Capacitor_SMD:C_1210_3225Metric | C20 |
| 1 | 22uF | Capacitor_SMD:C_0805_2012Metric | C2 |
| 1 | 4.7uF/35V | Capacitor_SMD:C_0805_2012Metric | C19 |
| 1 | 470uF/35V | Capacitor_SMD:CP_Elec_10x10 | C18 |
| 1 | 68uH | Inductor_SMD:L_7.3x7.3_H3.5 | L1 |
| 1 | B340A | Diode_SMD:D_SMA | D1 |
| 1 | BLTOUCH | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J55 |
| 1 | Conn_01x02 | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J57 |
| 1 | D_Schottky | Diode_SMD:D_SOD-323_HandSoldering | D2 |
| 1 | ESP32-S2-WROOM | ESP32Controller:esp32-s2-wrooom | U1 |
| 1 | EXT | Connector_IDC:IDC-Header_2x03_P2.54mm_Vertical | J56 |
| 1 | HSPI | Connector_IDC:IDC-Header_2x03_P2.54mm_Vertical | J42 |
| 1 | I2C | Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical | J53 |
| 1 | I2S EXT | Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical | J43 |
| 1 | IO0 | Button_Switch_SMD:SW_Push_1P1T_NO_6x6mm_H9.5mm | SW2 |
| 1 | LED | LED_SMD:LED_0805_2012Metric | D4 |
| 1 | MOS0 | ESP32-footprints-Lib:TERM_2-WAY_6.35mm | J59 |
| 1 | MOS1 | TerminalBlock:TerminalBlock_bornier-2_P5.08mm | J61 |
| 1 | MOS2 | TerminalBlock:TerminalBlock_bornier-2_P5.08mm | J64 |
| 1 | MOS3 | TerminalBlock:TerminalBlock_bornier-2_P5.08mm | J66 |
| 1 | MOS4 | TerminalBlock:TerminalBlock_bornier-2_P5.08mm | J69 |
| 1 | Micro_SD_Card_Det | ESP32Controller:microsd | J68 |
| 1 | R | Resistor_SMD:R_0603_1608Metric | R15 |
| 1 | RESET | Button_Switch_SMD:SW_Push_1P1T_NO_6x6mm_H9.5mm | SW1 |
| 1 | S0 | Connector_JST:JST_XH_B3B-XH-A_1x03_P2.50mm_Vertical | J45 |
| 1 | S1 | Connector_JST:JST_XH_B3B-XH-A_1x03_P2.50mm_Vertical | J49 |
| 1 | S2 | Connector_JST:JST_XH_B3B-XH-A_1x03_P2.50mm_Vertical | J52 |
| 1 | STEPPER0 | Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical | J7 |
| 1 | STEPPER1 | Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical | J8 |
| 1 | STEPPER2 | Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical | J19 |
| 1 | STEPPER3 | Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical | J20 |
| 1 | STEPPER4 | Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical | J31 |
| 1 | STEPPER5 | Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical | J32 |
| 1 | STEPPER6 | Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical | J39 |
| 1 | STEPPER7 | Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical | J40 |
| 1 | STEPPER8 | Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical | J14 |
| 1 | STEPPER9 | Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical | J26 |
| 1 | T0 | Connector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_Vertical | J41 |
| 1 | T1 | Connector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_Vertical | J46 |
| 1 | T2 | Connector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_Vertical | J48 |
| 1 | T3 | Connector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_Vertical | J51 |
| 1 | T4 | Connector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_Vertical | J54 |
| 1 | TLV1117-33 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U7 |
| 1 | UART | Connector_IDC:IDC-Header_2x04_P2.54mm_Vertical | J44 |
| 1 | USB_C_Receptacle_USB2.0 | ESP32Controller:USB_C | J67 |
| 1 | VBED | ESP32-footprints-Lib:TERM_2-WAY_6.35mm | J70 |
| 1 | VIN | ESP32-footprints-Lib:TERM_2-WAY_6.35mm | J47 |
| 1 | VSPI | Connector_IDC:IDC-Header_2x03_P2.54mm_Vertical | J50 |
| 1 | XL1509 | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | U6 |
The 167 most common of 171 parts.
Questions
How big is the ESP32Controller PCB?
It measures 155 × 80 mm and has 2 copper layers, 1.6 mm thick.
What parts does the ESP32Controller use?
171 parts, built around the ESP32-S2-WROOM-N4, XL1509-3.3, 74HC595 and TLV1117-33DCY. 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 ESP32Controller KiCad files?
From the simon-jouet/ESP32Controller repository on GitHub, at the commit this page was made from: the board is esp32controller.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Can I use the ESP32Controller design in my own project?
Its repository states no licence, so its author keeps all rights: ask simon-jouet before reusing the design.
Similar boards
- 2 layers43 × 43 mm

- 4 layers91.4 × 54.6 mm

StepperDriver Shield FRDM MCXA153
Fi-schi/StepperDriver-Shield_FRDM-MCXA153
StepperDriver Shielf for the NXP FRDM-MCXA153 Board..
72 parts1 - 2 layers96 × 97.3 mm

DO AN DKTD
PHAP0610/ThaoRDBoard
All file include and source in this: https://github.com/nguyentrungthao/STM32/tree/dev
164 parts - 4 layers120 × 108 mm

- 2 layers191.5 × 116 mm

PiDaughterBoard
mekatrol/electronics
This repository contains the electronics, embedded firmware, support software, and reference material for a collection of home-automation and workshop projects.
175 parts - 2 layers85.6 × 53.8 mm

- 2 layers27.9 × 92.7 mm

- 2 layers51.1 × 30 mm

Franzininho WIFI
Franzininho/Franzininho-WIFI-dev-edition
Versão da Franzininho para teste e validação do ESP32-S2
31 parts39