Skip to the content
PCBKitNew board
2 layers155 × 80 mmESP32Controller, the printed circuit board in 3D

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

7

README

README.md

ESP32Controller

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.

BoardMCUDriversMosfetsThermistorsComm.
R3ESP32-S21055USB
R2ESP32533USB to UART
R1ESP32432+2USB 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

R3

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

R2

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

R1

Parts

171
QtyValueFootprintReferences
1510kResistor_SMD:R_0603_1608MetricR1, R2, R3, R4, R16, R17, R18, R19, R20, R21, R22, R23, R24, R25, R41
10100uF/35VCapacitor_SMD:CP_Elec_6.3x7.7C23, C24, C25, C26, C27, C28, C29, C30, C31, C32
10Conn_02x02_Odd_EvenConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ1, J2, J9, J10, J11, J21, J23, J24, J33, J34
10Conn_02x04_Odd_EvenConnector_PinHeader_2.54mm:PinHeader_2x04_P2.54mm_VerticalJ3, J4, J12, J15, J16, J22, J27, J28, J35, J36
10TMC2209ESP32Controller:pololuJ5, J6, J13, J17, J18, J25, J29, J30, J37, J38
8100nFCapacitor_SMD:C_0603_1608MetricC3, C4, C8, C14, C15, C16, C17, C33
710uFCapacitor_SMD:C_0805_2012MetricC9, C10, C11, C12, C13, C21, C22
74.7kResistor_SMD:R_0603_1608MetricR5, R6, R7, R8, R9, R11, R12
50Resistor_SMD:R_0603_1608MetricR26, R29, R32, R35, R38
510Resistor_SMD:R_0603_1608MetricR27, R30, R33, R36, R39
5100kResistor_SMD:R_0603_1608MetricR28, R31, R34, R37, R40
5Q_NMOS_GDSPackage_TO_SOT_SMD:TO-252-2Q1, Q2, Q3, Q4, Q5
4220Resistor_SMD:R_0603_1608MetricR44, R45, R46, R47
474HC595Package_SO:TSSOP-16_4.4x5mm_P0.65mmU2, U3, U4, U5
3NCCapacitor_SMD:C_0603_1608MetricC5, C6, C7
21kResistor_SMD:R_0603_1608MetricR10, R13
25.1kResistor_SMD:R_0603_1608MetricR42, R43
2D_TVSDiode_SMD:D_SOD-523D5, D6
2FuseESP32Controller:Fuse_holder_0679HF1, F2
2JumperConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJP1, JP2
1220uF/35VCapacitor_SMD:C_1210_3225MetricC20
122uFCapacitor_SMD:C_0805_2012MetricC2
14.7uF/35VCapacitor_SMD:C_0805_2012MetricC19
1470uF/35VCapacitor_SMD:CP_Elec_10x10C18
168uHInductor_SMD:L_7.3x7.3_H3.5L1
1B340ADiode_SMD:D_SMAD1
1BLTOUCHConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ55
1Conn_01x02Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ57
1D_SchottkyDiode_SMD:D_SOD-323_HandSolderingD2
1ESP32-S2-WROOMESP32Controller:esp32-s2-wrooomU1
1EXTConnector_IDC:IDC-Header_2x03_P2.54mm_VerticalJ56
1HSPIConnector_IDC:IDC-Header_2x03_P2.54mm_VerticalJ42
1I2CConnector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_VerticalJ53
1I2S EXTConnector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_VerticalJ43
1IO0Button_Switch_SMD:SW_Push_1P1T_NO_6x6mm_H9.5mmSW2
1LEDLED_SMD:LED_0805_2012MetricD4
1MOS0ESP32-footprints-Lib:TERM_2-WAY_6.35mmJ59
1MOS1TerminalBlock:TerminalBlock_bornier-2_P5.08mmJ61
1MOS2TerminalBlock:TerminalBlock_bornier-2_P5.08mmJ64
1MOS3TerminalBlock:TerminalBlock_bornier-2_P5.08mmJ66
1MOS4TerminalBlock:TerminalBlock_bornier-2_P5.08mmJ69
1Micro_SD_Card_DetESP32Controller:microsdJ68
1RResistor_SMD:R_0603_1608MetricR15
1RESETButton_Switch_SMD:SW_Push_1P1T_NO_6x6mm_H9.5mmSW1
1S0Connector_JST:JST_XH_B3B-XH-A_1x03_P2.50mm_VerticalJ45
1S1Connector_JST:JST_XH_B3B-XH-A_1x03_P2.50mm_VerticalJ49
1S2Connector_JST:JST_XH_B3B-XH-A_1x03_P2.50mm_VerticalJ52
1STEPPER0Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_VerticalJ7
1STEPPER1Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_VerticalJ8
1STEPPER2Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_VerticalJ19
1STEPPER3Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_VerticalJ20
1STEPPER4Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_VerticalJ31
1STEPPER5Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_VerticalJ32
1STEPPER6Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_VerticalJ39
1STEPPER7Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_VerticalJ40
1STEPPER8Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_VerticalJ14
1STEPPER9Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_VerticalJ26
1T0Connector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_VerticalJ41
1T1Connector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_VerticalJ46
1T2Connector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_VerticalJ48
1T3Connector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_VerticalJ51
1T4Connector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_VerticalJ54
1TLV1117-33Package_TO_SOT_SMD:SOT-223-3_TabPin2U7
1UARTConnector_IDC:IDC-Header_2x04_P2.54mm_VerticalJ44
1USB_C_Receptacle_USB2.0ESP32Controller:USB_CJ67
1VBEDESP32-footprints-Lib:TERM_2-WAY_6.35mmJ70
1VINESP32-footprints-Lib:TERM_2-WAY_6.35mmJ47
1VSPIConnector_IDC:IDC-Header_2x03_P2.54mm_VerticalJ50
1XL1509Package_SO:SOIC-8_3.9x4.9mm_P1.27mmU6

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 mmESP32-Touch board, the printed circuit board in 3D

    ESP32-Touch board

    kamil2466/SiD-ON

    Smart Home Projects

    49 parts4GPL-3.0
  • 2 layers96 × 97.3 mmDO AN DKTD, the printed circuit board in 3D

    DO AN DKTD

    PHAP0610/ThaoRDBoard

    All file include and source in this: https://github.com/nguyentrungthao/STM32/tree/dev

    164 parts
  • 4 layers120 × 108 mmDk2 06, the printed circuit board in 3D

    Dk2 06

    mattybrad/drumkid2

    189 parts12GPL-3.0
  • 2 layers191.5 × 116 mmPiDaughterBoard, the printed circuit board in 3D

    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 mmNanoaltair, the printed circuit board in 3D

    Nanoaltair

    dankar/nanoaltair8800

    Pocket sized Altair 8800 clone, with blinking lights.

    104 parts11
  • 2 layers27.9 × 92.7 mmESP32-S2-WROOM, the printed circuit board in 3D

    ESP32-S2-WROOM

    ccadic/ESP32-S2-DevBoardTFT

    Esp32-S2 dev board with 240x240 IPS display

    29 parts79
  • 2 layers51.1 × 30 mmFranzininho WIFI, the printed circuit board in 3D

    Franzininho WIFI

    Franzininho/Franzininho-WIFI-dev-edition

    Versão da Franzininho para teste e validação do ESP32-S2

    31 parts39