Official documentation

Crescent City

An ESP32‑S3 Wi‑Fi + Bluetooth LE development board with a built‑in 0.96″ OLED display, USB‑C, LiPo battery charging, and a Qwiic connector — running a live weather clock straight out of the box.

Board V2.0 · ESP32-S3-WROOM-1-N8 · 8 MB flash · 70.1 × 25.4 mm

Front of the ESP32-S3 dev board, showing the Wi-Fi module, EN and BOOT buttons, RGB LED, and USB-C port

At a glance

The key numbers

Board revision V2.0. Battery and charging figures are measured on V2.0 boards.

Processor
ESP32‑S3Wi‑Fi 4 + Bluetooth 5 LEWROOM‑1‑N8 module: dual‑core 240 MHz, 8 MB flash
Display
0.96″OLED, built in128×64 white, SSD1306 over SPI
Battery life
≈24 hper 1000 mAhWeather Clock 2.1, Wi‑Fi off between updates
Charging
≈300 mAover USB‑CProtected 1‑cell LiPo, JST‑PH; a standard USB port is enough
Software
ESPHomeand Arduino readyShips with Weather Clock 2.1.6; ESPHome 1.1.1 installs from your browser
Size
70.1 × 25.4mm, breadboard friendly13 mm high with the display, 14 g

Also on the board: Qwiic / STEMMA QT (I²C) connector, 2×12 header pins, addressable RGB LED, BOOT and EN buttons.

Full spec sheet

Getting started

From the box to your first upload

The board arrives ready to use — no soldering, no drivers. Steps 1–2 get the built-in demo online; steps 3–4 set you up to write your own code.

  1. Plug it in

    Connect the board to any USB‑C charger or computer port. It powers up and starts the built-in Weather Clock on the OLED display.

  2. Put it on your Wi‑Fi

    On first boot the board creates its own Wi‑Fi network called HW‑WeatherClock. Join it from your phone and a setup page opens (or go to 192.168.4.1). Pick your home network, enter its password and your location, and choose °F or °C. Your local time and weather appear on the display.

    The board uses 2.4 GHz Wi‑Fi. If your router broadcasts separate 2.4 GHz and 5 GHz names, choose the 2.4 GHz one.

    Setup details

    Location: country, state or province, and city. A ZIP or postal code works in the city field, or type latitude, longitude instead. The board looks the place up and shows what it found. If it can’t find the place, the setup page opens again so you can correct it.

    RGB LED: tinted by the temperature outside.

    BOOT button: a short press shows an info page (location, firmware version, IP address, battery). To change Wi‑Fi or location later, hold BOOT for 3 seconds.

  3. Set up the Arduino IDE

    Install the free Arduino IDE, then open File → Preferences and paste this into Additional boards manager URLs:

    https://espressif.github.io/arduino-esp32/package_esp32_index.json

    Open Tools → Board → Boards Manager, search for esp32, and install esp32 by Espressif Systems, version 3.3.6. Then pick ESP32S3 Dev Module under Tools → Board.

    Arduino settings

    Match these settings under Tools:

    BoardESP32S3 Dev Module
    USB CDC On BootEnabled
    Flash Size8MB (64Mb)
    Partition Scheme8M with spiffs (3MB APP/1.5MB SPIFFS)

    Stay on version 3.3.6 of the board package: versions 3.3.7–3.3.10 have a Bluetooth bug.

    No driver install is needed — the board uses the ESP32‑S3’s native USB, which Windows 10/11, macOS, and Linux recognize out of the box.

  4. Upload your first sketch

    Select the board’s port under Tools → Port, paste this in, and click Upload. The onboard LED cycles red, green, blue:

    #define RGB_PIN 48   // onboard RGB LED
    
    void setup() {}
    
    void loop() {
      neopixelWrite(RGB_PIN, 40, 0, 0);  delay(400);  // red
      neopixelWrite(RGB_PIN, 0, 40, 0);  delay(400);  // green
      neopixelWrite(RGB_PIN, 0, 0, 40);  delay(400);  // blue
    }

    If the port doesn’t appear or the upload won’t start: use a data-capable USB‑C cable, or hold the BOOT button while plugging the board in, then try again.

  5. Keep going

    Take the board tour below, grab the pinout diagram and user guide, then build something from the example projects — including the full source of the Weather Clock your board shipped with.

Board tour

Know your board

Both sides, and what everything on them does. Photos show a V2.0 board, with the OLED display fitted on the front.

Front

Front of the board: ESP32-S3 module with antenna at top, EN and BOOT buttons with RGB LED between them, OLED display in the middle, USB-C at the bottom
What’s on the front
  • ESP32‑S3 module up top — its antenna end sticks out past the board; keep it clear of metal.
  • EN (reset) and BOOT buttons, with the RGB status LED between them.
  • USB‑C for power, charging, and programming.
  • CHG and SYS ON indicator LEDs by the USB port.
  • Qwiic / STEMMA QT connector (JST‑SH 4‑pin) for solder-free I²C sensors.
  • Pin names printed beside every header pin, so you can wire it up without flipping the board.

Back

Back of the board: silkscreen labels for every header pin, 30-pin display ribbon connector in the middle, battery connector with polarity marks at the bottom
What’s on the back
  • Every header pin labeled on the back too — power (3V3, GND, 5V_IN), GPIO numbers, and TX/RX.
  • 30‑pin ribbon connector for the OLED display.
  • LiPo battery connector (JST‑PH 2.0 mm) with polarity marked + / −.
  • Board revision code printed along the edge (EE202603B on V2.0) — include it when you contact support.
Pinout reference diagram: J4 and J5 header maps showing every GPIO with its ADC, touch, and RTC functions, UART TX/RX, power pins, and callouts for the USB-C port, battery and Qwiic connectors, plus on-board connection, good-to-know, and power summary tables
Every pin on one page. Click the diagram to open the printable PDF — it’s also in Downloads, together with the full user guide.

70.1 × 25.4 mm (2.76″ × 1.00″) · ≈76.4 mm incl. antenna overhang · 0.1″ header pitch, breadboard friendly · Designing an enclosure? Download the 3D model (STEP)

Tips: display ribbon, Wi‑Fi range, batteries

The display ribbon

The 0.96″ OLED sits on the front; its ribbon cable passes through the slot to the connector on the back.

Best Wi‑Fi range

Let the antenna end hang over the edge of your breadboard or enclosure. Metal, batteries, and hands near the antenna end reduce range.

Before you plug in a battery

Use a single-cell 3.7 V LiPo (600 mAh or larger) with a JST‑PH 2.0 mm plug and match the + / − marks on the board. Battery lead polarity is not standardized between vendors — check every new battery.

Downloads

Documents & references

DocumentWhat it coversFile
Spec sheet Full V2.0 specifications, pinout and power figures (printable) open ↗ · spec-sheet.pdf
Schematic Full board schematic (V2.0) schematic.pdf
User guide Setup, features & troubleshooting user-guide.pdf
Pinout diagram Printable pin reference pinout.pdf
3D model Exact V2.0 board geometry for enclosures & mounts 3D.step
Bill of materials Every part on the V2.0 board, with manufacturer part numbers bom.csv
ESP32‑S3‑WROOM‑1 datasheet Official module specifications from Espressif espressif.com ↗
Demo firmware source Weather Clock 2.1.6, the sketch your board ships with GitHub ↗
Test data and test tools
DocumentWhat it coversFile
V1.0 test report 120 of 122 tests passed — every test, the power measurements and known issues open report ↗
V2.0 test report In progress — battery life, charging and low-battery shutdown results open report ↗
Battery test data Full discharge and full charge of a real cell, 10-second averages (CSV) V1.0 discharge · V1.0 charge · V2.0 discharge · V2.0 charge
DVT firmware guide How to flash & run the DVT firmware pack, for the V1.0 test IDs guide.docx
DVT helper firmware Serial-menu bring-up & self-test sketch (Arduino) DVT_Helper.ino

Missing something? Email us and we’ll send it over.

Example projects

Four ways to start building

Weather Clock

The firmware your board ships with (version 2.1.6). It fetches your local forecast over Wi‑Fi and draws a clock and conditions on the OLED — a full tour of Wi‑Fi, HTTP, JSON, and the display in one sketch.

View source ↗

Qwiic sensor in 5 minutes

Plug a Qwiic SHT4x temperature & humidity sensor (not included) into the side connector — no soldering — and chart live readings on the screen.

View source ↗

Battery-powered sensor logger

Read a Qwiic SHT4x temperature & humidity sensor (not included), show it on the OLED, then deep‑sleep between readings to stretch battery life.

View source ↗

Home Assistant with ESPHome

Make the board a Home Assistant device in a couple of minutes: install the ESPHome configuration (version 1.1.1) straight from your browser, and battery, USB power, the BOOT button and the RGB LED show up as entities while the OLED keeps showing the clock — plus indoor temperature and humidity if you plug in a Qwiic SHT4x sensor (not included).

Set it up →

Support

Stuck? We’ll help.

Talk to us

Tell us what you tried and what happened — a photo of your setup helps, and the code printed on the back of the board tells us your exact revision. We read every message.

support@hwdesigns.us

My computer doesn’t see the board

Use a data-capable USB‑C cable — many bundled cables are charge-only. No drivers are needed on Windows 10/11, macOS, or Linux. If the port still doesn’t appear, hold the BOOT button while plugging the board in, then release it and check again.

Which battery does it take?

A single-cell 3.7 V LiPo, 600 mAh or larger, with a JST‑PH 2.0 mm plug (the socket is on the back). It charges from USB‑C at ≈300 mA and runs the Weather Clock for about 24 hours per 1000 mAh, at about 41 mA (measured on a full discharge).

On battery, the Weather Clock switches the Wi‑Fi radio off between weather updates, so the board is not reachable on your network in between. When the battery runs low it shows “charge me” and goes to sleep; plug in USB‑C to wake it. On-board protection guards against over-charge, over-discharge, over-current, and reverse polarity. Match the + / − marks next to the connector — battery lead polarity varies between vendors.

Which board revision is this page for?

Board revision V2.0 — the code EE202603B is printed along the back edge. The V1.0 prototypes carry the code EE202603A. V2.0 uses a JST‑PH 2.0 mm battery connector (was JST‑XH), charges at ≈300 mA (was ≈200 mA), and adds pin labels on the front. Test results: the V1.0 test report (120 of 122 tests passed) and the V2.0 test report (in progress).

Can I use something other than Arduino?

Yes. It’s a standard ESP32‑S3 (8 MB flash, no PSRAM), so ESP‑IDF, MicroPython and CircuitPython should work with their generic ESP32‑S3 builds — we haven’t tested them yet. We test with Arduino and ESPHome; use the pinout for the display, LED and button pins.