Skip to main content

Getting Started with XIAO 0.96'' IPS Display (ESP32-S3)

XIAO 0.96'' IPS Display (ESP32-S3)

Introduction

The 0.96'' IPS Display is a compact expansion board powered by the XIAO ESP32-S3 Plus. It combines an 80×160 IPS color LCD, an onboard PDM microphone, a 6-axis IMU, two user buttons, I2C and I2S expansion pads, and battery voltage sensing in a form factor designed for small connected devices.

The ESP32-S3 Plus adds Wi-Fi and Bluetooth connectivity, making the board suitable for compact wearables, portable sensor dashboards, keychain gadgets, and wireless IoT prototypes.

SpecificationDetail
Product PositioningUltra-Compact
Core ControllerSeeed Studio XIAO ESP32-S3 Plus
ProcessorESP32-S3R8, Dual-Core, up to 240 MHz
Memory8 MB PSRAM + 16 MB Flash
Wireless Connectivity2.4 GHz Wi-Fi + BLE 5.0
Display Type0.96" IPS TFT LCD
Resolution80 × 160
Display DriverST7789
Display InterfaceSPI
Touch InputNo
6-Axis IMUYes
PDM Digital MicrophoneYes
MicroSD Card SlotNo
Grove I2C ConnectorNo
User Buttons2
Battery Connector2-pin JST, 3.7 V LiPo
Battery MonitoringBattery voltage monitoring via D16 ADC; battery level can be estimated from the measured voltage. Battery status detection is not supported.
Expansion Interfaces1x I2C pads, 1x I2S pads
Board Size18.8 × 43.6 × 10.6 mm
Best ForTiny IoT devices, wearables, status displays
note

This display board is designed for the XIAO ESP32-S3 Plus. If you are using the XIAO nRF52840 Plus version, refer to the XIAO 0.96'' IPS Display (nRF52840) guide instead.

note

The ESP32-S3 Plus version uses D16 to measure the battery divider voltage; it does not provide a charging-state indicator.

Hardware Overview

Refer to the following view to identify the connectors and onboard components before connecting expansion hardware.

Pin Map

The table below lists the XIAO ESP32-S3 Plus pins used by the display board and its onboard peripherals.

XIAO PinNet NameFunction DescriptionHardware Connection Notes
D0PDM_CLKPDM microphone clockInternally connected to the onboard PDM microphone
D1PDM_DATAPDM microphone dataInternally connected to the onboard PDM microphone
D2LCD_CSLCD chip selectInternally connected to the LCD
D3LCD_DCLCD data/command selectInternally connected to the LCD
D4I2C_SDAI2C dataShared by the onboard IMU and back-side I2C test pad
D5I2C_SCLI2C clockShared by the onboard IMU and back-side I2C test pad
D6BTN_USR1User button 1Active-low
D7BTN_USR2User button 2Active-low
D8LCD_SCKHardware SPI clockInternally connected to the LCD
D9NCNot connectedNo physical connection
D10LCD_MOSIHardware SPI data outputInternally connected to the LCD
D11I2S_SDI2S audio dataExternally exposed to the bottom expansion pad
D12I2S_SCKI2S bit clockExternally exposed to the bottom expansion pad
D13I2S_WSI2S word selectExternally exposed to the bottom expansion pad
D14IMU_INTIMU interruptInternally connected to the LSM6DS3 for motion and double-tap events
D15NCNot connectedNo physical connection
D16VBAT_ADCBattery voltage sensingConnected to the 316 kΩ / 160 kΩ divider. Do not use externally
D17LCD_RSTLCD resetInternally connected to the LCD
D18LCD_BL_PWMLCD backlight controlInternally connected to the backlight driver circuit
D19NCNot connectedNo physical connection
caution

D4 and D5 are shared with the onboard IMU. Any external I2C device connected to the test pad must use a unique address and support 3.3 V logic.

Getting Started

caution

This guide uploads a minimal "Hello, XIAO" sketch to the display board: the screen turns on its backlight, fills black, and prints "Hello," and "XIAO" as two centered lines of large green text. It is the fastest way to confirm the screen and your development environment are working before diving into the individual peripheral demos.

Software Preparation

You will need the following tools and libraries:

  • Arduino IDE (version 1.8 or later)

  • esp32 Boards by Espressif (3.3.11) — add the following URL to File > Preferences > Additional Boards Manager URLs:
https://espressif.github.io/arduino-esp32/package_esp32_index.json

Then go to Tools > Board > Boards Manager, search for esp32, and install version 3.3.11.

  • Seeed_GFX2 (Manual Installation) — this library is not available in the Library Manager and must be installed manually:

Step 1. Click the button above to download Seeed_GFX2 v1.0.0 as a ZIP file (pinned to a release tag so the tutorial stays reproducible). Alternatively, clone the repository from Seeed-Studio/Seeed_GFX2.

Step 2. In the Arduino IDE, go to Sketch > Include Library > Add .ZIP Library... and select the downloaded ZIP. The IDE reads library.properties and installs it into the correct Seeed_GFX2 folder automatically — you do not need to rename the extracted folder. (To install manually instead, unzip the archive and rename the extracted folder to Seeed_GFX2 before placing it in Documents/Arduino/libraries/.)

Step 3. Restart the Arduino IDE so the new library is detected.

tip
  • Seeed_GFX2 is Seeed Studio's graphics library built on a layered Board + Panel Config architecture. Each demo initializes the display with a single display.begin<Board_..., Config_...>() call — the Board template owns the pin map (CS/DC/SCK/MOSI/RST/BL), and the Panel Config bakes in the 80×160 resolution, color order (BGR), and orientation. No driver.h or manual pin setup is needed.
  • On this board the sketch uses Board_XIAO_0inch96_LCD<13, 12> (RST=13, BL=12) with Config_Seeed_0inch96_LCD_ST7789.

Download the Code

The example sketch is available on GitHub:


Navigate to code_GFX2/getting_started_code/xiao_esp32s3_096_hello/ and open xiao_esp32s3_096_hello.ino in the Arduino IDE. Download the complete folder rather than copying the .ino source from the GitHub web view.

Upload the Sketch

Step 1. Connect the XIAO ESP32-S3 Plus to your computer through USB-C.

Step 2. Select Tools > Board > esp32 > XIAO_ESP32S3_PLUS.

Step 3. Select the correct Port under Tools > Port.

Step 4. Click Upload. The sketch will compile and upload to the board.

Expected Output

After uploading, the screen lights up with a black background and shows two centered lines of large green text — "Hello," on the first line and "XIAO" on the second. The greeting stays on screen without redrawing.

If the display fails to initialize, the sketch prints the library error message to the serial monitor at 115200 baud. Open Tools > Serial Monitor and set the baud rate to 115200 to read it.

What's Next

The display board packs several onboard peripherals. The Function page provides a standalone demo for each one:

PeripheralDemo
ScreenGraphicTest — ten graphics primitives with timing benchmarks
IMUElectronic Quicksand + Raise to Wake — 6-axis motion effects and wake-on-motion
Microphone & SpeakerFlash Recorder — record and play back audio
ButtonsUser Buttons — read presses and debounce with interrupts
BatteryBattery Voltage Detection — measure the divider voltage

FAQ

The board does not appear in the Tools > Board menu

  1. Open File > Preferences and add the ESP32 Boards Manager URL:

    https://espressif.github.io/arduino-esp32/package_esp32_index.json
  2. Open Tools > Board > Boards Manager, search for esp32, and install version 3.3.11.

  3. Select Tools > Board > esp32 > XIAO_ESP32S3_PLUS.

Restart Arduino IDE if the board entry still does not appear.

How should I hold the board?

Hold the board near the buttons, and do not touch the XIAO module. Grip the board by the button area instead.

[About Factory Firmware-DashBoard]

Why isn't my screen bright when I plug in the USB-C cable?

The screen backlight may be off. Press the USR2 (D7) button to toggle the backlight back on — the display will light up normally.

Resources

Tech Support & Product Discussion

Thank you for choosing our products! We are here to provide you with different support to ensure that your experience with our products is as smooth as possible. We offer several communication channels to cater to different preferences and needs.

Loading Comments...