An ESP32 development board is a small programmable board that you load code onto from your computer over USB, with WiFi and Bluetooth built in. It can read a temperature probe, switch a relay, run a small screen or type keystrokes into your computer. The ESP32-S3 has two 240MHz cores, and its USB-C port can act as a USB keyboard, mouse or MIDI controller, which the cheaper ESP32-C3 can't do. This board adds 2MB of PSRAM, the extra memory that makes screen images, sound and small AI models such as wake-word detection practical. The Zero is the one to choose when the board will end up inside your own project: all 18 side pins sit on half-hole edges, so you can solder it flat onto your own circuit board, and its RGB LED has a pin to itself.
It is 23.5 x 18mm, about the size of a $1 coin. Windows, macOS and Linux see it as soon as you plug it in, with no driver to install, and you can program it in Arduino, MicroPython, CircuitPython or ESPHome. The pins run at 3.3V, so any part you add that sends 5V signals will need a logic level converter between it and the board. Of its 26 GPIO pins, 15 are on the side edges, 3 are holes just inside the edge and 8 are flat pads underneath, which a breadboard covers, so start on the side pins. You can choose Soldered to push it straight into a breadboard, or Unsoldered if you have a soldering iron or want to mount it flat on your own board.
Specifications
Datasheets
Wiring & getting started
- Use a USB-C data cable
A charge-only cable powers the board but no port ever appears, so if nothing shows up on your computer, swap the cable before anything else. Most computers need a USB-A to USB-C data cable.
- Fit the pins (Unsoldered, optional)
Push both strips into a breadboard with the long pins down, sit the board on top so every pin comes through a pad, and solder the 18 joints. The breadboard keeps the pins straight while you work. The board then sits across the centre gap with one free hole beside each pin for jumper wires. If you need any of the 8 pads underneath, solder wires to them first, because a breadboard covers them.
- Plug it in
Plug the board into your computer. It shows up as a new port with no driver to install, and Windows lists it as USB Serial Device (COMn). A new board may not show up yet, or it may keep making the USB connect and disconnect sound, which means it is stuck restarting. Hold BOOT, press and release RESET, then let go of BOOT. The sound stops and the port stays, ready for your first upload. You may need this again whenever an upload can't connect. It is common on a new board and is not a fault.
- Set up the Arduino IDE
In Tools > Board > Boards Manager, search esp32 and install the esp32 package, version 3.x. Choose Tools > Board > esp32 > ESP32S3 Dev Module, not the plain ESP32 Dev Module beside it, because the S3 settings only appear once it is picked. Set USB CDC On Boot to Enabled so Serial Monitor works, and PSRAM to QSPI PSRAM so the 2MB is switched on. OPI PSRAM is for other S3 boards: on this one it makes the board restart over and over. Then pick the board's port under Tools > Port.
- Upload the LED test
The board has no plain LED, so the usual Blink example does nothing. Upload this sketch instead. It drives the RGB LED on GPIO21 with no extra library. Arduino shows "Hash of data verified." when the upload has worked. Then open Serial Monitor at 115200.
Example Arduino codeArduino C++
// First test: onboard RGB LED on GPIO21 and the 2MB PSRAM. // No library needed (esp32 board package 3.x). #define RGB_PIN 21 // fixed on the board int step = 0; void setup() { Serial.begin(115200); // over USB-C } void loop() { int r = (step == 0) ? 40 : 0; // 40 of 255: int g = (step == 1) ? 40 : 0; // bright enough int b = (step == 2) ? 40 : 0; rgbLedWrite(RGB_PIN, r, g, b); Serial.printf("%s OK, PSRAM %u bytes\n", ESP.getChipModel(), ESP.getPsramSize()); step = (step + 1) % 3; delay(500); } - Check it works
The RGB LED steps through three colours, one every half second, and Serial Monitor repeats "ESP32-S3 OK, PSRAM 2097152 bytes". If it prints 0, PSRAM is still set to Disabled. If the upload worked but Serial Monitor stays blank, USB CDC On Boot is still off. If the upload finished but nothing runs, press RESET once without holding BOOT. If the port has gone, use the BOOT and RESET steps above, then upload again.
- Connect to WiFi (optional)
Run File > Examples > WiFi > WiFiScan, and Serial Monitor at 115200 lists the networks the board can see. It joins 2.4GHz networks only. Some of these boards see networks but won't join at full transmit power. If yours does, add
WiFi.setTxPower(WIFI_POWER_8_5dBm);straight afterWiFi.begin(), or in ESPHome setoutput_power: 8.5dB. Keep the red ceramic antenna at the end of the board clear of metal, wiring and other circuit boards. If it still won't connect on more than one network, message us and we'll help you. - Wire your parts
Power small sensors from the 3V3 pin, and run every ground back to the single GND pin. For analog readings with WiFi running, use GPIO1 to 10. Leave the underside pad marked 45 unconnected: the chip reads it at power-up, and if anything holds it high the board will not start and looks dead. If you feed the 5V pin from an outside supply, unplug USB-C first and check the polarity, because a reversed or doubled-up supply can damage the board.
