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

  • GPIO15ADC2, so analogRead stops working the moment Wi-Fi starts. Unaffected as a digital pin.
  • GPIO16ADC2, so analogRead stops working the moment Wi-Fi starts. Unaffected as a digital pin.
  • GPIO17ADC2, so analogRead stops working the moment Wi-Fi starts. Unaffected as a digital pin.
  • GPIO18ADC2, so analogRead stops working the moment Wi-Fi starts. Unaffected as a digital pin.
  • GPIO3Strapping pin. Selects the JTAG source. Floating at reset is the normal state.
  • GPIO46Strapping pin. Controls the ROM boot message. Must be low at reset.
  • GPIO11ADC2, so analogRead stops working the moment Wi-Fi starts. Unaffected as a digital pin.
  • GPIO12ADC2, so analogRead stops working the moment Wi-Fi starts. Unaffected as a digital pin.
  • GPIO13ADC2, so analogRead stops working the moment Wi-Fi starts. Unaffected as a digital pin.
  • GPIO14ADC2, so analogRead stops working the moment Wi-Fi starts. Unaffected as a digital pin.
  • GPIO43UART0 TX, wired to the USB-UART bridge behind the second USB-C port.
  • GPIO44UART0 RX, wired to the USB-UART bridge behind the second USB-C port.
  • GPIO37Octal 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.
  • GPIO36Octal 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.
  • GPIO35Octal 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.
  • GPIO0BOOT button, with a 10 kΩ pull-up. Held low at reset it drops the chip into the ROM bootloader.
  • GPIO45Strapping pin. Sets VDD_SPI to 3.3 V or 1.8 V. Must be low at reset on a 3.3 V module.
  • GPIO48WS2812B RGB LED, single-wire at 800 kHz. The silkscreen says RGB@IO48.
  • GPIO20Native USB-C, D+ . Wired straight to the USB-Serial-JTAG peripheral, no bridge chip in the path.
  • GPIO19Native 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, not an input. Everything on the board runs from it. Budget what the regulator can spare, not what USB can deliver.
3V33.3 V railpowerL2. Output of the on-board regulator, not an input. Everything on the board runs from it. Budget what the regulator can spare, not what USB can deliver.
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

  • Slim JoystickA thumb stick and six buttons on one long TinkerBlock board, on six pins. X and Y are two potentiometers, read on analog pins; KEY is the click under the stick, LOW at rest and HIGH when pushed; and all six buttons share BTNS, one analog pin, through a ladder of 10 kΩ resistors that gives each its own voltage. One button reads at a time.
  • ESP32-S3 PinPulse Shield: an LED on All 36 GPIOsThe base for the Lonely Binary ESP32-S3: every GPIO on a male pin and a female socket with its own LED, six inverter chips so the lights cost your signals nothing, and a fifteen-way display port.
  • Dual Axis JoystickA thumbstick on a square TinkerBlock board, on six pins: GND, VCC, NC, X, Y and SW. X and Y are two potentiometers from VCC to GND, read on analog pins; SW is the click under the stick, LOW at rest and HIGH when pressed, with its own pull-down. Every line reaches VCC, so VCC is your board's logic voltage. A PWR light and an SW light show power and each click.
  • INA219 and INA3221 Current Monitors: shunt, range and wiringTwo I²C current and voltage monitors: the TK119 with one INA219 on a 100 mΩ shunt, and the INA3221 with three channels on 50 mΩ. What the chip measures and what it works out, why the two resistors differ, the range and step each one gives, and the wiring for both.
  • INA219 Current MonitorA 100 milliohm resistor in the positive wire and a chip that reads the millivolts across it. Current, voltage and power over I²C, up to 3.2 A on a rail of up to 26 V.
  • SD and microSD Card Readers for ESP32: SPI, 1-bit and 4-bitTwo 3.3 V card reader boards with the SD bus brought out in full. What the two NC pins really are, which of SPI, 1-bit and 4-bit to use, what each measured, and the wiring for all three.
  • SHT31 Temperature and Humidity SensorA Sensirion SHT31 on a TinkerBlock carrier: two numbers over two shared wires, calibrated at the factory, with the pull-ups already fitted and two jumpers on the back that set the address and take them away again.
  • 58mm Thermal Printers: the receipt kit, the label kit and the USB-C base boardTwo thermal printer kits that share one Type-C TTL base board. The 9 V a USB port will not give you, which header your microcontroller belongs on, the baud rate printed on each unit, and the commands that put text, barcodes and labels on paper.

Edit this page — content/pinouts/s3pinpulse.mdx