Documentation

ShillehTek ESP32-S3-Nano Dev Board Presoldered WiFi BLE | ShillehTek Product Manual
Documentation / ShillehTek ESP32-S3-Nano Dev Board Presoldered WiFi BLE | ShillehTek Product Manual

ShillehTek ESP32-S3-Nano Dev Board Presoldered WiFi BLE | ShillehTek Product Manual

manualshillehtek

Overview

The ESP32-S3 Nano is a powerful, compact dev board built around Espressif's dual-core Xtensa LX7 processor with built-in Wi-Fi (2.4 GHz) and Bluetooth 5.0 LE. It comes with pre-soldered headers, a USB-C connector, and an Arduino Nano-compatible footprint, making it a drop-in upgrade for projects that have outgrown the classic Nano but still need to fit on a breadboard.

With 8 ADC channels, hardware SPI, I2C, UART, and 17 usable GPIO pins broken out, the S3 Nano is well-suited for IoT projects, BLE peripherals, sensor hubs, small robotics, and anything that needs both wireless connectivity and modern peripheral support. The chip's vector instruction extensions also enable simple AI/ML workloads at the edge.

This board is fully supported in the Arduino IDE (via the ESP32 by Espressif core) as well as MicroPython and CircuitPython. The Type-C USB connection handles both flashing and serial monitoring with no separate programmer required.

At a Glance

MCU
ESP32-S3 Dual-Core
Clock Speed
240 MHz
Wireless
Wi-Fi + BLE 5.0
Logic Level
3.3V
GPIO Pins
17 (D0-D13, B0, B1)
USB Connector
USB Type-C

Specifications

Parameter Value
Microcontroller ESP32-S3 (Xtensa LX7 dual-core, 32-bit)
Clock Frequency Up to 240 MHz
Flash Memory 16 MB QSPI Flash
SRAM 512 KB (on-chip)
Wireless Wi-Fi 802.11 b/g/n (2.4 GHz), Bluetooth 5.0 LE
Operating Voltage 3.3V
Input Voltage (VIN) 5V (via USB-C or VIN pin)
GPIO Logic Level 3.3V (NOT 5V tolerant)
Digital I/O Pins 17 broken-out GPIO
Analog Input (ADC) Channels 8 (A0-A7, 12-bit)
Communication Interfaces I2C, SPI, UART, USB OTG
USB Connector USB Type-C (native USB OTG)
Form Factor Arduino Nano-compatible (45 x 18 mm)
Headers Pre-soldered male pins

Pinout Diagram

ESP32-S3 Nano Dev Board pinout diagram showing GPIO48/D13/SCK, GPIO47/D12/MISO, GPIO38/D11/MOSI, GPIO21/D10, GPIO18/D9, GPIO17/D8, GPIO10/D7, GPIO9/D6, GPIO8/D5, GPIO7/D4, GPIO6/D3, GPIO5/D2, GPIO44/D0/RXD, GPIO43/D1/TXD, GPIO11/A4/SDA, GPIO12/A5/SCL, A0-A7 analog pins, B0/B1, VBUS, VIN, 3V3, GND, and RST

Wiring Guide

LED + Push Button Wiring

The simplest way to verify your board is working. We'll wire an LED to one GPIO and a push button to another. Always use a current-limiting resistor (220-330 ohms) in series with the LED.

Component ESP32-S3 Nano Pin Details
LED Anode (long leg) D2 (GPIO5) Through a 220 ohm resistor
LED Cathode (short leg) GND
Button Terminal 1 D3 (GPIO6) Use INPUT_PULLUP in code
Button Terminal 2 GND
Tip: Enable the internal pull-up with pinMode(pin, INPUT_PULLUP) so you don't need an external resistor on the button. The button will read LOW when pressed and HIGH when released.

I2C Sensor Wiring

The default I2C bus on the ESP32-S3 Nano is broken out to A4 (SDA) and A5 (SCL). This works with any standard 3.3V I2C device including BME280, MPU6050, SSD1306 OLEDs, BH1750, and others.

Sensor Pin ESP32-S3 Nano Pin Details
VCC 3V3 Use 3V3, not 5V
GND GND
SDA A4 (GPIO11) Internal pull-up enabled by Wire
SCL A5 (GPIO12) Internal pull-up enabled by Wire
Warning: The ESP32-S3 GPIO pins are 3.3V only and are NOT 5V tolerant. Do not connect 5V I2C devices directly. If you need to interface with a 5V module, use a logic level converter such as the TXS0108E.
Info: Most modern breakout boards include their own pull-up resistors. If you experience scanning errors, add 4.7k pull-ups from SDA and SCL to 3V3.

SPI Device Wiring

The default hardware SPI bus is broken out to D11 (MOSI), D12 (MISO), and D13 (SCK). The chip select (SS / CS) pin can be any free GPIO; D10 is the convention.

SPI Device Pin ESP32-S3 Nano Pin Details
VCC 3V3
GND GND
SCK D13 (GPIO48) Clock
MISO D12 (GPIO47) Master In, Slave Out
MOSI D11 (GPIO38) Master Out, Slave In
CS / SS D10 (GPIO21) Software-controlled chip select
Tip: If you are connecting multiple SPI devices, share SCK / MOSI / MISO across them and assign each device its own CS pin.

UART / Serial Wiring

The board exposes a hardware UART on D0 (RX) and D1 (TX). This is separate from the USB serial and is useful for talking to GPS modules, fingerprint scanners, ESP-01 modules, or any external device that speaks UART.

External Device ESP32-S3 Nano Pin Details
TX (out from device) D0 / RXD (GPIO44) Cross-wire: their TX to your RX
RX (in to device) D1 / TXD (GPIO43) Cross-wire: your TX to their RX
VCC 3V3 or VIN/VBUS Match the device's voltage
GND GND Common ground required
Warning: Many UART devices output 5V logic. Driving 5V directly into D0 (RX) can damage the ESP32-S3. Use a logic level shifter or a voltage divider for any 5V UART device.

Code Examples

Arduino IDE - Wi-Fi Scanner

esp32_s3_nano_wifi_scan.ino
// ESP32-S3 Nano - Wi-Fi Network Scanner
// Install: Boards Manager -> "esp32" by Espressif Systems
// Select Board: "ESP32S3 Dev Module"

#include <WiFi.h>

void setup() {
  Serial.begin(115200);
  delay(1000);

  // Set Wi-Fi to station mode and disconnect from any AP
  WiFi.mode(WIFI_STA);
  WiFi.disconnect();
  delay(100);

  Serial.println("ESP32-S3 Nano Wi-Fi Scanner Ready");
}

void loop() {
  Serial.println("Scanning for networks...");
  int n = WiFi.scanNetworks();

  if (n == 0) {
    Serial.println("No networks found");
  } else {
    Serial.print(n);
    Serial.println(" networks found:");
    for (int i = 0; i < n; i++) {
      Serial.print(i + 1);
      Serial.print(": ");
      Serial.print(WiFi.SSID(i));
      Serial.print(" (");
      Serial.print(WiFi.RSSI(i));
      Serial.print(" dBm) ");
      Serial.println((WiFi.encryptionType(i) == WIFI_AUTH_OPEN) ? "[Open]" : "[Encrypted]");
      delay(10);
    }
  }
  Serial.println();
  delay(5000);
}

Arduino IDE - LED Blink

esp32_s3_nano_blink.ino
// ESP32-S3 Nano - Blink an external LED on D2 (GPIO5)
// Wire LED through a 220 ohm resistor between D2 and GND

const int ledPin = 5;  // D2 = GPIO5

void setup() {
  pinMode(ledPin, OUTPUT);
}

void loop() {
  digitalWrite(ledPin, HIGH);
  delay(500);
  digitalWrite(ledPin, LOW);
  delay(500);
}

MicroPython - BLE Advertise

ble_advertise.py
# ESP32-S3 Nano - Simple BLE Advertiser (MicroPython)
# Flash MicroPython for ESP32-S3 from micropython.org

import bluetooth
import time
from micropython import const

_ADV_TYPE_FLAGS = const(0x01)
_ADV_TYPE_NAME = const(0x09)

def advertising_payload(name):
    payload = bytearray()
    payload += bytes((2, _ADV_TYPE_FLAGS, 0x06))
    name_bytes = name.encode()
    payload += bytes((len(name_bytes) + 1, _ADV_TYPE_NAME)) + name_bytes
    return payload

ble = bluetooth.BLE()
ble.active(True)
ble.gap_advertise(100_000, advertising_payload("ESP32-S3-Nano"))

print("Advertising as 'ESP32-S3-Nano' - scan with any BLE app")

while True:
    time.sleep(1)

MicroPython - Read Analog Input

analog_read.py
# ESP32-S3 Nano - Read an analog value from A0 (GPIO1)
# Connect a potentiometer wiper to A0, ends to 3V3 and GND

from machine import ADC, Pin
import time

adc = ADC(Pin(1))                # A0 = GPIO1
adc.atten(ADC.ATTN_11DB)         # Full 0 - 3.3V range
adc.width(ADC.WIDTH_12BIT)       # 0 - 4095

while True:
    raw = adc.read()
    voltage = raw * 3.3 / 4095
    print("Raw: {:>4}   Voltage: {:.2f} V".format(raw, voltage))
    time.sleep(0.5)

Frequently Asked Questions

Which board do I select in the Arduino IDE?
Install the "esp32" core by Espressif Systems via the Boards Manager, then select "ESP32S3 Dev Module" from the Tools > Board menu. For most projects the default settings work fine; if uploads fail, try setting "USB CDC On Boot" to "Enabled".
Are the GPIO pins 5V tolerant?
No. The ESP32-S3 GPIO pins are 3.3V only. Driving 5V into any GPIO can permanently damage the chip. Use a logic level converter (TXS0108E, BSS138-based shifter, etc.) when interfacing with 5V devices.
Can I power the board from VIN with a battery or external supply?
Yes. The VIN pin accepts 5V to power the on-board 3.3V regulator. Do not connect higher than 5V to VIN. The 3V3 pin can be used to feed external 3.3V peripherals from the on-board regulator (do not also feed external 3.3V into this pin while USB is connected).
My computer doesn't see the board on USB. What do I do?
First confirm your USB-C cable supports data, not just charging. The ESP32-S3 uses native USB, so no external USB-to-Serial driver is required on most systems. If the port still doesn't appear, hold down the BOOT button while plugging in the board to put it into download mode.
Does this board work with MicroPython and CircuitPython?
Yes. Download the official ESP32-S3 firmware from micropython.org, or the matching CircuitPython build from circuitpython.org. Flash using esptool.py or the Espressif Flash Download Tool. After flashing, connect with Thonny, mu, or any serial terminal at 115200 baud.
How is this different from the original Arduino Nano?
The ESP32-S3 Nano shares the form factor and pin spacing of an Arduino Nano, but the chip is dramatically more capable: dual-core 240 MHz vs. single-core 16 MHz, 16 MB Flash vs. 32 KB, native Wi-Fi and Bluetooth, USB-C, and 3.3V logic instead of 5V. Most Arduino sketches need to be updated for the new pin numbers and 3.3V logic.
How many of the GPIO pins support PWM and ADC?
Almost every GPIO supports hardware PWM through the LEDC peripheral, with up to 8 independent timers and 16 channels. ADC is available on A0-A7 (8 channels, 12-bit). Each ADC input is 0-3.3V; do not exceed VDD on the input.