PinoutESP32-S344 pins

ESP32-S3 PinPulse Shield pinout

Every hole on the Lonely Binary ESP32-S3 PinPulse Shield: 44 nets on a male pin and a female socket each, the LED on all 36 GPIOs, and what that LED costs the pin.

ESP32-S3 PinPulse ShieldInteractiveOpen the S3 PinPulse in 3DTurn the real board over and click any of its 44 holes. Every pad is placed from this design’s own net list.Open in 3D →

Reading this board

The shield has no chip of its own. An ESP32-S3 Gold Edition plugs into the socket down the middle, antenna end toward the display connector, and the shield brings each of its 44 header pins out twice: once on a male pin at the outer edge, once on the yellow female socket beside it. The two rows on each side are the same nets, hole for hole, so there are 88 holes and 44 pins: 36 GPIO and eight power.

The order is the S3 Gold's own, read from this design's net list, so anything that is true of a pin on the S3 Gold pinout is true of the same pin here. The one difference in print is that this silkscreen labels the serial pins 43 and 44 rather than TX and RX. Open the shield in 3D and click either row; the handbook covers using it.

The LEDs

Every GPIO has an LED, lit while the pin is high. The pin does not drive it. Each GPIO goes to one input of a 74HC04 inverter (six chips, 36 gates), the gate output sinks the LED, and the LED's anode goes to 3.3 V through 5.1 kΩ. A high pin pulls the gate output low and the LED lights.

What that costs the pin is one CMOS input: at most 1 µA of leakage and 10 pF. A sensor, a bus or a PWM output does not notice it, and the LED current comes off the 3.3 V rail through the inverter rather than out of the GPIO. Any visible LED drops at least 1.5 V, which leaves under 0.4 mA each, so all 36 lit draw less than 15 mA.

The cost shows up the other way round. A pin nothing is driving flickers. An inverter input left floating picks up whatever is nearby, so a GPIO your sketch never set lights and dims when a hand comes close. The back of the board says as much. Set the pin as an output, or give it INPUT_PULLUP, and it stops. A pin toggling faster than the eye can follow shows as a glow, not a blink.

The marks beside the numbers

MarkPinsMeaning
~GPIO1 to 10ADC1, which keeps working with Wi-Fi on
#GPIO8, 9I²C defaults: SDA 8, SCL 9
^GPIO10 to 13SPI defaults: SS 10, MOSI 11, SCK 12, MISO 13

The back repeats those buses as text, and one line is misprinted: it reads I2S - SDA(8), SCL(9). It means I²C. It also lists UART as TX 43, RX 44 and native USB as D− 19, D+ 20.

The display connector

A 15-way FPC socket on a 1.0 mm pitch at the top of the board. Nothing switches its lines: all thirteen signals are the same nets as the header holes, so a fitted display owns those GPIOs, and their LEDs show its traffic.

ContactSignalContactSignal
1GND9GPIO10
23V310GPIO1
3GPIO4111GPIO15
4GPIO4212GPIO7
5GPIO213GPIO4
6GPIO1314GPIO6
7GPIO1215GPIO5
8GPIO11

The net list names three of those lines BL, DC and CS: GPIO41, GPIO2 and GPIO10.

What the plugged-in board already uses

The shield adds nothing to any net except its inverter input, so the pins to leave alone are the S3 Gold's. On the N16R8 module it ships with, GPIO35, 36 and 37 carry the octal PSRAM and must not be driven. GPIO0, 3, 45 and 46 are sampled at reset. GPIO19 and 20 are the native USB port, GPIO43 and 44 the serial bridge, and GPIO48 the RGB LED. The table below names each one.

Power

3V3, 5V and RST are the S3 Gold's own pins passed straight through; the shield has no regulator. 3V3 comes from the S3 Gold's AMS1117, and the shield's six inverters and 36 LEDs are on it before you add anything. All four GND pins are the same net, on both rows.

Pins to leave alone

  • GPIO15 — ADC2, so analogRead stops working the moment Wi-Fi starts. Unaffected as a digital pin.
  • GPIO16 — ADC2, so analogRead stops working the moment Wi-Fi starts. Unaffected as a digital pin.
  • GPIO17 — ADC2, so analogRead stops working the moment Wi-Fi starts. Unaffected as a digital pin.
  • GPIO18 — ADC2, so analogRead stops working the moment Wi-Fi starts. Unaffected as a digital pin.
  • GPIO3 — Strapping pin. Selects the JTAG source. Floating at reset is the normal state.
  • GPIO46 — Strapping pin. Controls the ROM boot message. Must be low at reset.
  • GPIO11 — ADC2, so analogRead stops working the moment Wi-Fi starts. Unaffected as a digital pin.
  • GPIO12 — ADC2, so analogRead stops working the moment Wi-Fi starts. Unaffected as a digital pin.
  • GPIO13 — ADC2, so analogRead stops working the moment Wi-Fi starts. Unaffected as a digital pin.
  • GPIO14 — ADC2, so analogRead stops working the moment Wi-Fi starts. Unaffected as a digital pin.
  • GPIO43 — UART0 TX, wired to the USB-UART bridge behind the second USB-C port.
  • GPIO44 — UART0 RX, wired to the USB-UART bridge behind the second USB-C port.
  • GPIO37 — Octal PSRAM strobe on the N16R8. The pad is still on the header, which is what makes it a trap: drive it and you corrupt the module's own traffic, which usually takes the chip down. Free on a module that does not need the line.
  • GPIO36 — Octal PSRAM data line on the N16R8. The pad is still on the header, which is what makes it a trap: drive it and you corrupt the module's own traffic, which usually takes the chip down. Free on a module that does not need the line.
  • GPIO35 — Octal PSRAM data line on the N16R8. The pad is still on the header, which is what makes it a trap: drive it and you corrupt the module's own traffic, which usually takes the chip down. Free on a module that does not need the line.
  • GPIO0 — BOOT button, with a 10 kΩ pull-up. Held low at reset it drops the chip into the ROM bootloader.
  • GPIO45 — Strapping pin. Sets VDD_SPI to 3.3 V or 1.8 V. Must be low at reset on a 3.3 V module.
  • GPIO48 — WS2812B RGB LED, single-wire at 800 kHz. The silkscreen says RGB@IO48.
  • GPIO20 — Native USB-C, D+ . Wired straight to the USB-Serial-JTAG peripheral, no bridge chip in the path.
  • GPIO19 — Native USB-C, D− . Wired straight to the USB-Serial-JTAG peripheral, no bridge chip in the path.

Every pin

PinNameFunctionsNotes
3V33.3 V railpowerL1. Output of the on-board regulator. Everything on the board runs from it, so budget what the regulator can spare, not what USB can deliver. A steady 3.3 V supply can also power the board through it, but never with USB plugged in at the same time.
3V33.3 V railpowerL2. Output of the on-board regulator. Everything on the board runs from it, so budget what the regulator can spare, not what USB can deliver. A steady 3.3 V supply can also power the board through it, but never with USB plugged in at the same time.
RSTEN / resetpowerL3. The regulator enable line, pulled up. Tie it to ground through a button and you have a reset button.
GPIO4GPIO4gpio, adc1, touchL4
GPIO5GPIO5gpio, adc1, touchL5
GPIO6GPIO6gpio, adc1, touchL6
GPIO7GPIO7gpio, adc1, touchL7
GPIO15GPIO15gpio, adc2ADC2, so analogRead stops working the moment Wi-Fi starts. Unaffected as a digital pin.
GPIO16GPIO16gpio, adc2ADC2, so analogRead stops working the moment Wi-Fi starts. Unaffected as a digital pin.
GPIO17GPIO17gpio, adc2, uartADC2, so analogRead stops working the moment Wi-Fi starts. Unaffected as a digital pin.
GPIO18GPIO18gpio, adc2, uartADC2, so analogRead stops working the moment Wi-Fi starts. Unaffected as a digital pin.
GPIO8GPIO8gpio, adc1, touch, i2cL12. Arduino default: Wire (I²C) SDA.
GPIO3GPIO3gpio, adc1, touchStrapping pin. Selects the JTAG source. Floating at reset is the normal state.
GPIO46GPIO46gpioStrapping pin. Controls the ROM boot message. Must be low at reset.
GPIO9GPIO9gpio, adc1, touch, i2cL15. Arduino default: Wire (I²C) SCL.
GPIO10GPIO10gpio, adc1, touch, spiL16. Arduino default: SPI (HSPI) SS.
GPIO11GPIO11gpio, adc2, touch, spiADC2, so analogRead stops working the moment Wi-Fi starts. Unaffected as a digital pin.
GPIO12GPIO12gpio, adc2, touch, spiADC2, so analogRead stops working the moment Wi-Fi starts. Unaffected as a digital pin.
GPIO13GPIO13gpio, adc2, touch, spiADC2, so analogRead stops working the moment Wi-Fi starts. Unaffected as a digital pin.
GPIO14GPIO14gpio, adc2, touchADC2, so analogRead stops working the moment Wi-Fi starts. Unaffected as a digital pin.
5V5 V railpowerL21. The USB rail, upstream of the regulator. Feed the board here if you are not using USB, or take 5 V out if you are.
GNDGroundpowerL22. Ground. Several holes so a breadboard build has one nearby wherever it needs it.
GNDGroundpowerR1. Ground. Several holes so a breadboard build has one nearby wherever it needs it.
GPIO43GPIO43gpio, uartUART0 TX, wired to the USB-UART bridge behind the second USB-C port.
GPIO44GPIO44gpio, uartUART0 RX, wired to the USB-UART bridge behind the second USB-C port.
GPIO1GPIO1gpio, adc1, touchR4
GPIO2GPIO2gpio, adc1, touchR5
GPIO42GPIO42gpio, jtagR6
GPIO41GPIO41gpio, jtagR7
GPIO40GPIO40gpio, jtagR8
GPIO39GPIO39gpio, jtagR9
GPIO38GPIO38gpioR10
GPIO37GPIO37gpio, spiOctal PSRAM strobe on the N16R8. The pad is still on the header, which is what makes it a trap: drive it and you corrupt the module's own traffic, which usually takes the chip down. Free on a module that does not need the line.
GPIO36GPIO36gpio, spiOctal PSRAM data line on the N16R8. The pad is still on the header, which is what makes it a trap: drive it and you corrupt the module's own traffic, which usually takes the chip down. Free on a module that does not need the line.
GPIO35GPIO35gpio, spiOctal PSRAM data line on the N16R8. The pad is still on the header, which is what makes it a trap: drive it and you corrupt the module's own traffic, which usually takes the chip down. Free on a module that does not need the line.
GPIO0GPIO0gpioBOOT button, with a 10 kΩ pull-up. Held low at reset it drops the chip into the ROM bootloader.
GPIO45GPIO45gpioStrapping pin. Sets VDD_SPI to 3.3 V or 1.8 V. Must be low at reset on a 3.3 V module.
GPIO48GPIO48gpioWS2812B RGB LED, single-wire at 800 kHz. The silkscreen says RGB@IO48.
GPIO47GPIO47gpioR17
GPIO21GPIO21gpioR18
GPIO20GPIO20gpio, adc2, usbNative USB-C, D+ . Wired straight to the USB-Serial-JTAG peripheral, no bridge chip in the path.
GPIO19GPIO19gpio, adc2, usbNative USB-C, D− . Wired straight to the USB-Serial-JTAG peripheral, no bridge chip in the path.
GNDGroundpowerR21. Ground. Several holes so a breadboard build has one nearby wherever it needs it.
GNDGroundpowerR22. Ground. Several holes so a breadboard build has one nearby wherever it needs it.

For this board

  • Electronics Starter Kit: Breadboard, Power Module and Loose Parts — A boxed set of the parts most breadboard circuits start with: an 830-point breadboard, a USB-C power module switchable between 3.3 V and 5 V, jumper wires, resistors, capacitors, LEDs, buttons, potentiometers, diodes, transistors, MOSFETs and two sensors. How to read the parts, set up the bench, and build the first circuits.
  • Door Sensor — A TinkerBlock board that takes the two bare wires of a magnetic door or window sensor on a screw terminal and puts it between VCC and SIGNAL. A closed sensor reads HIGH; open, SIGNAL floats, because the board has no pull-down, so you set one in setup(). The red LED lights while the sensor is closed: it is not a power light.
  • ESP32-S3 Expansion Base pinout — Every hole on the Lonely Binary ESP32-S3 Expansion Base: two 20-way strips a side on the same nets, 28 of the 36 GPIOs at the edge, the eight that stay on the sockets, and the 15-way display connector.
  • ESP32-S3 Pluggable Terminal Base pinout — Every way on the Lonely Binary ESP32-S3 Pluggable Terminal Base: 24 GPIOs on two 12-way push-in blocks, two 4-way power blocks, the display connector, and the twelve pins that stay off the edge.
  • ESP32-S3 Screw Terminal Base pinout — Every way on the Lonely Binary ESP32-S3 Screw Terminal Base: two 15-way screw blocks, 26 GPIOs once each, 3V3 on the left and 5V on the right, and the ten GPIOs that do not come out.
  • 3-Axis Accelerometer — A Silan SC7A20H accelerometer on a TinkerBlock board: tilt, orientation, shakes and drops over two shared I²C wires, at address 0x19, with the pull-ups fitted. 3.3 V only.
  • PCA9685 16-Channel Servo Driver: Sixteen Servos on Two I²C Wires — A PCA9685 board that keeps sixteen servo pulses running by itself while the microcontroller talks to it over I²C. Servo power on V+ from USB-C or a screw terminal, the chip on VCC, six address pads, and a header on each edge so boards plug into each other. Three boards a box, headers soldered.
  • HotSwap Arcade Kit: Buttons, Joystick and Coin Acceptor for ESP32-S3, Nano, Pico and Zero 2 W — One mainboard for ten buttons, a joystick, a 12 V coin acceptor and an SPI screen, and four adapters that plug it into an ESP32-S3, a classic Arduino Nano, a Raspberry Pi Pico or a Zero 2 W. Pin tables for every adapter, the power arrangement, and the code.

Edit this page — content/pinouts/s3pinpulse.mdx