Skip to content

Quick Start Guide

This guide gets you from unboxing to blinking LED in about 5 minutes.

Prerequisites

  • ESP32-S3-DevKitC-1-N16R8 board
  • Micro-USB cable (data-capable, not charge-only)
  • Computer with USB port

Connection

  1. Connect the USB cable to the UART port (labeled on PCB).

  2. Verify connection - The red power LED should illuminate.

  3. Check device detection:

    Terminal window
    dmesg | tail -10
    # Look for: cp210x converter now attached to ttyUSB0
    ls /dev/ttyUSB*
  1. Install ESP-IDF (if not already installed):

    Terminal window
    mkdir -p ~/esp && cd ~/esp
    git clone -b v5.2 --recursive https://github.com/espressif/esp-idf.git
    cd esp-idf && ./install.sh esp32s3
    source export.sh
  2. Create and configure project:

    Terminal window
    cd ~/esp
    cp -r $IDF_PATH/examples/get-started/blink .
    cd blink
    idf.py set-target esp32s3
    idf.py menuconfig

    In menuconfig, set Example Configuration → Blink GPIO number to:

    • 38 for V1.1 boards
    • 48 for V1.0 boards
  3. Build, flash, and monitor:

    Terminal window
    idf.py build
    idf.py -p /dev/ttyUSB0 flash
    idf.py -p /dev/ttyUSB0 monitor

The RGB LED should now be blinking! Press Ctrl+] to exit the monitor.

  1. Create project:

    Terminal window
    mkdir esp32s3-blink && cd esp32s3-blink
    pio init -b esp32-s3-devkitc-1
  2. Configure for N16R8 - Edit platformio.ini:

    [env:esp32-s3-devkitc-1]
    platform = espressif32
    board = esp32-s3-devkitc-1
    framework = arduino
    ; N16R8 memory configuration
    board_build.flash_mode = qio
    board_build.psram_type = opi
    board_upload.flash_size = 16MB
    board_build.arduino.memory_type = qio_opi
    monitor_speed = 115200
  3. Write the blink code - Create src/main.cpp:

    #include <Arduino.h>
    // V1.1 uses GPIO38, V1.0 uses GPIO48
    #define RGB_LED_PIN 38
    void setup() {
    Serial.begin(115200);
    pinMode(RGB_LED_PIN, OUTPUT);
    Serial.println("ESP32-S3-DevKitC-1 Blink Example");
    }
    void loop() {
    digitalWrite(RGB_LED_PIN, HIGH);
    Serial.println("LED ON");
    delay(500);
    digitalWrite(RGB_LED_PIN, LOW);
    Serial.println("LED OFF");
    delay(500);
    }
  4. Build and upload:

    Terminal window
    pio run -t upload
    pio device monitor

Using the RGB LED Properly

For full RGB control with NeoPixel library:

#include <Arduino.h>
#include <Adafruit_NeoPixel.h>
#define RGB_LED_PIN 38 // V1.1
#define NUM_LEDS 1
Adafruit_NeoPixel led(NUM_LEDS, RGB_LED_PIN, NEO_GRB + NEO_KHZ800);
void setup() {
led.begin();
led.setBrightness(50); // 0-255
}
void loop() {
// Cycle through colors
led.setPixelColor(0, led.Color(255, 0, 0)); // Red
led.show();
delay(500);
led.setPixelColor(0, led.Color(0, 255, 0)); // Green
led.show();
delay(500);
led.setPixelColor(0, led.Color(0, 0, 255)); // Blue
led.show();
delay(500);
}

Add to platformio.ini:

lib_deps = adafruit/Adafruit NeoPixel@^1.12.0

Troubleshooting

Board Not Detected

  1. Try a different USB cable (must be data-capable)
  2. Try the other USB port on the board
  3. Install CP210x drivers

Upload Fails

  1. Hold BOOT button while pressing RST, then release both
  2. Try lower upload speed: upload_speed = 460800
  3. Check that no other program is using the serial port

LED Not Blinking

  1. Verify GPIO number matches your board version (38 vs 48)
  2. Check that you’re using the correct LED library for addressable LEDs

Next Steps