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.
| Specification | Detail |
|---|---|
| Product Positioning | Ultra-Compact |
| Core Controller | Seeed Studio XIAO ESP32-S3 Plus |
| Processor | ESP32-S3R8, Dual-Core, up to 240 MHz |
| Memory | 8 MB PSRAM + 16 MB Flash |
| Wireless Connectivity | 2.4 GHz Wi-Fi + BLE 5.0 |
| Display Type | 0.96" IPS TFT LCD |
| Resolution | 80 × 160 |
| Display Driver | ST7789 |
| Display Interface | SPI |
| Touch Input | No |
| 6-Axis IMU | Yes |
| PDM Digital Microphone | Yes |
| MicroSD Card Slot | No |
| Grove I2C Connector | No |
| User Buttons | 2 |
| Battery Connector | 2-pin JST, 3.7 V LiPo |
| Battery Monitoring | Battery voltage monitoring via D16 ADC; battery level can be estimated from the measured voltage. Battery status detection is not supported. |
| Expansion Interfaces | 1x I2C pads, 1x I2S pads |
| Board Size | 18.8 × 43.6 × 10.6 mm |
| Best For | Tiny IoT devices, wearables, status displays |
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.
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 Pin | Net Name | Function Description | Hardware Connection Notes |
|---|---|---|---|
| D0 | PDM_CLK | PDM microphone clock | Internally connected to the onboard PDM microphone |
| D1 | PDM_DATA | PDM microphone data | Internally connected to the onboard PDM microphone |
| D2 | LCD_CS | LCD chip select | Internally connected to the LCD |
| D3 | LCD_DC | LCD data/command select | Internally connected to the LCD |
| D4 | I2C_SDA | I2C data | Shared by the onboard IMU and back-side I2C test pad |
| D5 | I2C_SCL | I2C clock | Shared by the onboard IMU and back-side I2C test pad |
| D6 | BTN_USR1 | User button 1 | Active-low |
| D7 | BTN_USR2 | User button 2 | Active-low |
| D8 | LCD_SCK | Hardware SPI clock | Internally connected to the LCD |
| D9 | NC | Not connected | No physical connection |
| D10 | LCD_MOSI | Hardware SPI data output | Internally connected to the LCD |
| D11 | I2S_SD | I2S audio data | Externally exposed to the bottom expansion pad |
| D12 | I2S_SCK | I2S bit clock | Externally exposed to the bottom expansion pad |
| D13 | I2S_WS | I2S word select | Externally exposed to the bottom expansion pad |
| D14 | IMU_INT | IMU interrupt | Internally connected to the LSM6DS3 for motion and double-tap events |
| D15 | NC | Not connected | No physical connection |
| D16 | VBAT_ADC | Battery voltage sensing | Connected to the 316 kΩ / 160 kΩ divider. Do not use externally |
| D17 | LCD_RST | LCD reset | Internally connected to the LCD |
| D18 | LCD_BL_PWM | LCD backlight control | Internally connected to the backlight driver circuit |
| D19 | NC | Not connected | No physical connection |
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

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.
- Seeed_GFX2 is Seeed Studio's graphics library built on a layered
Board+Panel Configarchitecture. Each demo initializes the display with a singledisplay.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. Nodriver.hor manual pin setup is needed. - On this board the sketch uses
Board_XIAO_0inch96_LCD<13, 12>(RST=13, BL=12) withConfig_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:
| Peripheral | Demo |
|---|---|
| Screen | GraphicTest — ten graphics primitives with timing benchmarks |
| IMU | Electronic Quicksand + Raise to Wake — 6-axis motion effects and wake-on-motion |
| Microphone & Speaker | Flash Recorder — record and play back audio |
| Buttons | User Buttons — read presses and debounce with interrupts |
| Battery | Battery Voltage Detection — measure the divider voltage |
FAQ
The board does not appear in the Tools > Board menu
-
Open File > Preferences and add the ESP32 Boards Manager URL:
https://espressif.github.io/arduino-esp32/package_esp32_index.json -
Open Tools > Board > Boards Manager, search for esp32, and install version 3.3.11.
-
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
- 🗃️[PCB Design Files] XIAO 0.96'' IPS Display (ESP32-S3) KiCad Project
- 📄[Schematic] XIAO 0.96'' IPS Display (ESP32-S3) Schematic
- 📦[3D Model] XIAO 0.96'' IPS Display (STEP)
- 📄[Datasheet] 0.96 Inch Display Datasheet
- 💾[Factory Firmware] XIAO 0.96'' IPS Display (ESP32-S3) Factory Firmware
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.
