Skip to content

Hardware

This section provides basic info on the wESP32™ hardware. For more details, please refer to the wESP32 Product Brief.

GPIO header pinout

wESP32 GPIO pinout

Pin Signal SPI UART I2C SDCARD ANALOG CAN
1 GND
2 3.3V
3 IO23 VSPI-MOSI
4 IO36 A0
5 IO39 UART2-RX A3
6 IO34 A6
7 IO32 VSPI-MISO A4 / TCH9
8 IO35 A7 CAN-RX
9 GND
10 IO33 UART2-TX I2C1-SDA A5 / TCH8
11 IO18 VSPI-SCK
12 IO5 VSPI-SS I2C1-SCL CAN-TX
13 IO13 HSPI-MOSI UART1-RX SD-DAT3
14 IO14 HSPI-SCK SD-CLK
15 IO4 I2C0-SCL SD-DAT1 TCH0
16 IO12 HSPI-MISO UART1-TX SD-DAT2
17 IO15 HSPI-SS I2C0-SDA SD-CMD
18 IO2 SD-DAT0 TCH2
19 GND
20 V+

Pin 1 is by the mounting hole that is not plated.

The pins used for many peripherals can be dynamically adjusted, these are default mapping of peripherals when using the Arduino development environment (and other environments with the concept of “board files” follow this layout). Please note that other development environments such as ESP32-IDF and MicroPython provide more flexibility, and allow many of these functions to be mapped to any available pin. However, if compatibility with future add-on boards that work with Arduino is desired, it may make sense to stick to these mappings even for those development environments.

NOTE: This default pinout was changed from the original documentation at release. The original pinout had I2C0-SDA on IO2, but since this pin needs to be held low to correctly enter the serial bootloader for programming, this was a bad choice for an I2C pin since I2C requires a pull-up. Also, UART1-RX used to be on IO12, which could cause issues with selecting the wrong flash voltage if an idle UART bus was connected at boot that pulled this pin high. So UART1-RX and UART1-TX are now swapped. Please ensure that your application does not pull either IO2 or IO12 high during boot and use the current default pin assignments instead of the old ones.

Programming port pinout

Pin Name
1 IO0 (DTR of programmer)
2 EN (RTS of programmer)
3 GND
4 TXD (RXD of programmer)
5 RXD (TXD of programmer)
6 V+

Pin 1 is toward the middle of the board, pin 6 near the edge of the board.

Heat sink mounting hole

The plated mounting hole by the Ethernet jack can be used to sink heat away from the PD controller when using high output power. Please note that this hole is electrically connected to the PSE and not locally isolated, so it should not be connected to any metal that can be touched by the user.

5V solder jumper

By default the wESP32 V+ voltage is 12 V. When this is selected, 13 W of power is available. If you bridge the "5V" solder jumper, the V+ voltage is 5 V with a reduced power of 5 W.

HG solder jumper

By bridging the "HG" solder jumper, the plated mounting hole can be used to connect the isolated circuit ground to local ground. This should not be electrically connected to the plated mounting hole by the Ethernet jack as this would negate the isolation.

Revision changes

The board revision can be found next to the Ethernet jack. From revision 7 onward, a 4-layer PCB with 1 oz copper is used, while older revisions use a 2-layer PCB with 2 oz copper.

From revision 7 onward, the ESP32 module is an ESP32-WROOM-32E with 16 MB of flash, while older revisions used an ESP32-WROOM-32 module with 4 MB of flash. No software change is required, the boards with 16 MB of flash will work fine with images created for modules with 4 MB of flash, but the software has to be changed if the user wants to take advantage of the extra flash.

From revision 7 onward, the board uses an RTL8201FI Ethernet PHY chip for increased reliability versus older revisions that used a LAN8720AI Ethernet PHY. A software change is necessary to support the new PHY. In most cases, the only thing that changes is the definition of the PHY declared in the code.

3D models

A customer kindly provided this basic 3D model for SketchUp that can be helpful for designing a case. Another customer kindly shared their wESP32 case design for SketchUp that can be used as a base for other cases.