From Waveshare Wiki
Jump to: navigation, search

1.69inch, 240 × 280






ESP32-S3-Touch-LCD-1.69 is a cost-effective, high-performance microcontroller development board designed by Waveshare. On the small plates, onboard a 1.69inch capacitive touch LCD screen, Lithium battery charging chip, 6-axis sensor (3-axis accelerator and 3-axis gyroscope), and peripheral interface such as RTC, easy to develop and embed into products.


  • Equipped with high-performance Xtensa®32-bit LX7 dual-core processor, main frequency running up to 240MHz.
  • Support 2.4 GHz Wi-Fi (802.11 b/g/n) and Bluetooth® 5 (LE), and onboard antenna.
  • Built-in 512KB SRAM and 384KB ROM, 8MB PSRAM, and external 16MB Flash.
  • Onboard 1.69inch capacitive touch LCD screen, 240×280 resolution, 262K colors, can clearly display color pictures.

Screen display picture

ESP32-S3-Touch-LCD-1.69-240423 03.png ESP32-S3-Touch-LCD-1.69-240527-2.png ESP32-S3-Touch-LCD-1.69-240527-1.png

Hardware Description

  • Onboard patch antenna, uses 0 ohm shorted optional external antennas, as shown in ⑩.
  • Onboard PCF85063 RTC chip with reserved SH1.0 RTC battery header (support charging), supports timing function, as shown in ③ and ⑨.
  • Onboard QMI8658C 6-axis Inertial Measurement Unit (IMU), including a 3-axis gyroscope and a 3-axis accelerator, as shown in ④.
  • Onboard ETA6089 high-performance Lithium battery charging chip, M1.25 Lithium battery interface, easy to install lithium batteries charge and discharge for long-term usage, as shown in ⑤ and ⑥.
  • Onboard buzzer can be utilized as an audio peripheral, as shown in ⑧.
  • Onboard Type-C interface, connect to ESP32-S3 USB for demo programming and log printing, as shown in ⑦.
  • Onboard BOOT and RST function buttons, easy to reset and enter the download mode, as shown in ⑫ and ⑬.
  • Onboard function circuit button, can be customized as the power-on button, and can identify single pressing, double pressing, and long pressing, as shown in ⑪.



ESP32-S3-Touch-LCD-1.69 Dim.jpg

Development Environment Setup

  • The following development system is Windows by default.


  • It is recommended to develop with the VSC plug-in.

Develop with VSCode Plug-in

Install VSCode

1. Open the download page of the official VSCode website, and select the corresponding system and system bit to download.
ESP32-S3-Pico 05.jpg
2. After running the installation package, the rest can be installed by default, but here for the subsequent experience, it is recommended to check boxes 1, 2, and 3.
ESP32-S3-Pico 06.jpg
    • After the first and second items are enabled, you can open VSCode directly by right-clicking files or directories, which can improve the subsequent user experience.
    • After the third item is enabled, you can select VSCode directly when you choose how to open it.

Install Espressif IDF Plug-in

  • Note: The latest version of the current plug-in is V1.6.0, for a consistent experience, users can choose the same version as us.
1. Open VSCode and use the shortcut key Shift + Ctrl + X to enter the plugin manager.

ESP32-S3-Pico 07.jpg

2. In the search bar, type Espressif IDF, select the corresponding plug-in, and click install.

ESP32-S3-Pico 08.jpg

3. Press F1 to enter:
esp-idf: configure esp-idf extension

ESP32-S3-Pico 09.jpg

4. Choose express (This tutorial is for first-time users, so only the first general installation tutorial is covered.)

ESP32-S3-Pico 10.jpg

5. Open and display this screen.

ESP32-S3-Pico 11.jpg

6. Choose a server to download.

ESP32-S3-Pico 12.jpg

7. Select the ESP-IDF version you want now, we choose the latest V5.0.1 (note that ESP-IDF started to support ESP32-S3 only after V4.4).

ESP32-S3-Pico 13.jpg

8. The following two are the ESP-IDF directory installation address and the ESP-IDF required tools installation address respectively.

ESP32-S3-Pico 14.jpg

    • Note: If you have installed ESP-IDF before, or if it has failed, please make sure to delete the file completely or create a new path.
9. Once the configuration is finished, click "install" to download.

ESP32-S3-Pico 15.jpg

10. Enter the download page, and it will automatically install the corresponding tools and environment, just wait a moment.

ESP32-S3-Pico 15.jpg

11. After the installation is completed, it will enter the following screen, indicating that the installation is finished.

ESP32-S3-Pico 17.jpg

Official Demo Usage

  • Click here to view more details provided by the official ESP.
Creating a Demo
1. Using the shortcut F1, type:
esp-idf:show examples projects

ESP32-S3-Pico 18.jpg

2. Choose your current IDF version:

ESP32-S3-Pico 19.jpg

3. Take "Hello World" as an example:

ESP32-S3-Pico 20.jpg

4. Choose the corresponding demo.
5. The readme file will explain which chip the demo is suitable for (the following section will introduce how to use the demo and its file structure, which is omitted here).
6. Click to create the demo.
7. Choose the path to place the demo and ensure that there is no folder with the same name as the demo.

ESP32-S3-Pico 21.jpg

Modify COM Port
1. The corresponding COM port is displayed here, click on it to modify.

ESP32-S3-Pico 22.jpg

2. We check the device manager COM port, and select COM5, please select your corresponding COM port:

ESP32-S3-Pico 23.jpg

3. Choose the project and demo.

ESP32-S3-Pico 24.jpg

4. Then the COM port is modified.
Modify the Driver
1. Here shows the driver used, click here to modify the corresponding driver:

ESP32-S3-Pico 25.jpg

2. Choose the project or demo:

ESP32-S3-Pico 24.jpg

3. Wait for a few seconds after clicking.

ESP32-S3-Pico 27.jpg

4. Choose the driver we need, that is, the main chip ESP32S3.

ESP32-S3-Pico 28.jpg

5. Choose the openocd path, we can just choose one at random as it doesn't matter.

ESP32-S3-Pico 29.jpg

The Rest of the Status Bar Introduction

ESP32-S3-Pico 30.jpg

  • ① SDK configuration editor: many functions and configurations of ESP-IDF can be modified within it.
  • ② Clean up everything and delete all compiled files.
  • ③ Compile.
  • ④ Current download method, default is UART.
  • ⑤ Program the current firmware, please do it after compiling.
  • ⑥ Open the serial monitor to view serial information.
  • ⑦ Combined button for compiling, programming, and opening the serial monitor (most commonly used during debugging).
Compile, Program, and Serial Port Monitoring
1. Click on the Compile, Program, and Open Serial Monitor buttons we described earlier.

ESP32-S3-Pico 31.jpg

2. It may take a long time to compile, especially for the first time.

ESP32-S3-Pico 32.jpg

  • During this process, ESP-IDF may take up a lot of CPU resources and therefore may cause system lag.
3. Because we use CH343 as a USB to serial port chip, and the on-board automatic download circuit, it can be downloaded automatically without manual operation.

ESP32-S3-Pico 33.jpg

4. After successful download, it will automatically enter the serial monitor, and you can see the corresponding information output from the chip and prompt to reboot after 10s.

ESP32-S3-Pico 34.jpg


  • If you do not use arduino-esp32 before, you can refer to this link.

Install Arduino IDE

1. Open the official software download webpage, and choose the corresponding system and system bits to download.

ESP32-S3-Pico 35.jpg

2. You can choose "Just Download", or "Contribute & Download".

ESP32-S3-Pico 36.jpg

3. Run to install the program and install it all by default.

Install arduino-esp32 Online

1. Open Preferences.

ESP32-S3-Pico 37.jpg

2. Add the corresponding board manager URLs and click the button.

ESP32-S3-Pico 38.jpg

3. Add the following content in the first blank.

ESP32-S3-Pico 39.jpg

4. Save the setting.
5. Open the board manager, enter ESP32 in the search bar, and select version 2.0.11.


6. Wait for downloading.

ESP32-S3-Pico 41.jpg

7. arduino-esp32 is downloaded.

ESP32-S3-Pico 42.jpg

Use Arduino Demo

1. Select the demo, here we choose the demo to get the chip ID.

ESP32-S3-Pico 43.jpg

2. Select the board as ESP32S3 Dev Module.

ESP32-S3-Pico 44.jpg

3. Choose the COM5 port of ESP32-S3 USB.

ESP32-S3-Pico 45.jpg

4. Click the download button, then it compiles and downloads automatically.

ESP32-S3-Pico 47.jpg

5. Finish.

ESP32-S3-Pico 48.jpg

6. Open the Serial Port Monitor.

ESP32-S3-Pico 49.jpg

7. See the chip ID of the loop output.

ESP32-S3-Pico 50.jpg

LCD Description

LCD and its Controller

  • The built-in controller used in this LCD is ST7789V2, which is an LCD controller with 240 × RGB × 320 pixels, while the pixels of this LCD are 240(H) × RGB × 280(V). Hence, the LCD's internal RAM is not fully used.
  • This LCD supports 12-bit, 16-bit, and 18-bit per pixel input color formats, namely RGB444, RGB565, and RGB666 color formats, this demo uses RGB565 color format, which is also commonly used RGB Format.
  • This LCD uses a four-wire SPI communication interface, which can greatly save the GPIO port, and the communication speed will be faster.
  • The resolution of this module is 240(H) × RGB × 280(V), but sometimes it may not fully display your images as it is round in corners.

SPI Communication Protocol

0.96inch lcd module spi.png
Note: The difference from the traditional SPI protocol is that the data line sent from the slave to the host is hidden because it only needs to be displayed. Please refer to Datasheet Page 66 for the table.
RESX is reset, it is pulled low when the module is powered on, usually set to 1;
CSX is the slave chip selection, and the chip will be enabled only when CS is low.
D/CX is the data/command control pin of the chip, when DC = 0, write command, when DC = 1, write data.
SDA is the transmitted data, that is, RGB data;
SCL is the SPI communication clock.
For SPI communication, data is transmitted with timing, that is, the combination of clock phase (CPHA) and clock polarity (CPOL):
The level of CPHA determines whether the data is collected on the first clock transition edge or the second clock transition edge of the serial synchronization clock. When CPHA = 0, data acquisition is performed on the first transition edge;
The level of CPOL determines the idle state level of the serial synchronous clock. CPOL = 0, which is a low level.
As can be seen from the figure, at the first falling edge of SCLK it starts to transmit data, 8-bit data is transmitted in one clock cycle, using SPI0, bit-by-bit transmission, high bit first, and low bit last.

Touch and its Controller

  • This LCD is composed of surface toughened glass + thin film FILM material, which has high strength, strong hardness, and good light transmittance. The matching driver chip is CST816D self-capacitance touch chip, which supports the standard I2C communication protocol standard, which can realize a 10Khz~400Khz configurable communication rate.

I2C Communication Protocol

  • The 7-bit device address of the chip is 0x15, that is, the device writing address is 0x2A, and reading address is 0x2B.
  • Waveform introduction:
    • Write a single byte: (write 0x01 to 0x1F register)
    • 1.28inch Touch LCD02.jpg
    • Write multiple bytes consecutively (write 0x20, 0x01 to 0x1E and 0x1F respectively)
    • 1.28inch Touch LCD03.jpg
    • Read a single byte (read a single byte from 0x21)
    • 1.28inch Touch LCD04.jpg
    • Read multiple bytes consecutively (read 3 bytes from 0x21, 0x22, 0x23)
    • 1.28inch Touch LCD05.jpg

Sample Demo

Library Installation

It is recommended to directly use the "lib" library in the sample demo when using the LVGL library and modifying the corresponding screen configuration.
Copy the library file folder to "C:\Users\xxxx\Documents\Arduino\libraries ", "xxxx" is your PC username.
ESP32-S3-Touch-LCD-1.69 240605 01.png

ESP32-S3-Touch-LCD-1.69 240605 02.png


LVGL (Light and Versatile Graphics Library) is a free and open-source graphic library for embedded systems and is very suitable for devices with limited resources such as ESP32-S3. In the sample demo, you can use "LVGL_Arduino" to check the screen effect.
ESP32-S3-Touch-LCD-1.69-240423 03.png

User-defined PWR_Key

This key is designed to address the limited functionality of external buttons. The working principle is as follows:

Pressing PWR can power the battery, and then the system boots. The system should define GPIO35 to continuously output a high level to maintain power-on effect. At this point, releasing PWR will not power off. The function of PWR at this time is to pull down GPIO36. The system detects pressing, double pressing, and long pressing of GPIO36 and can customize shutdown control operations. For example, in long press mode, the system sets GPIO35 to a low level to disconnect the battery power, thereby enabling the multi-function button to be used.

ESP32-S3-Touch-LCD-1.69-240423 04.png

PCF85063 RTC Clock Chip

The PCF85063 RTC Clock facilitates the use of scheduled tasks, provides accurate time tracking, and low-power wake-up functions.
Through example demos, the RTC function can be easily utilized.
ESP32-S3-Touch-LCD-1.69-240423 02.png

QMI8658 6-axis IMU

The QMI8658 can be used for applications such as posture detection, gait analysis, and fall detection. When embedded in this development board, it can be applied to smart wearables.
Example demos can be used to verify changes in multi-axis acceleration and the data can be observed directly through a visualization tool.

ESP32-S3-Touch-LCD-1.69-240423 01.png


By combining RTC, it's possible to implement timed tasks, scheduled alarms, and other applications.

ESP32-S3-Touch-LCD-1.69 Watch Project

Demo Link

Environment Setting

Install platformIO Environment on Vscode

ESP32-S3-Touch-LCD-1.69 platformIO 01.png

Open Folder

ESP32-S3-Touch-LCD-1.69 platformIO 02.png

Compile & Upload Demo

Modify platformio.ini

Modify the default display as lolin_s3_mini_1_69.

ESP32-S3-Touch-LCD-1.69 platformIO 03.png

Flash Demo

Connect to the development board, and select the corresponding COM port to compile and download:

ESP32-S3-Touch-LCD-1.69 platformIO 04.png

Download App

Chronos app is applicable for Android systems; for IOS system, you can search Chronos in APP store.


ESP32-S3-Touch-LCD-1.69 platformIO 05.png ESP32-S3-Touch-LCD-1.69 platformIO 06.png ESP32-S3-Touch-LCD-1.69 platformIO 07.png ESP32-S3-Touch-LCD-1.69 platformIO 08.png ESP32-S3-Touch-LCD-1.69 platformIO 09.png ESP32-S3-Touch-LCD-1.69 platformIO 10.png








Please check whether the version of esp32 hardware library is 2.0.11, after confirming the version, select the corresponding development board to compile and burn in, please note that after selecting the corresponding development board through Tools, the option of Zigbee will not appear, or else the environment of esp32 hardware library is not effective.



1. When you find the board is hot, please make sure to pull down the GPIO33 first, and pull down the buzzer pin, otherwise the passive buzzer is like a resistor that consumes power all the time, which leads to the LDO current pressure is very hot.
2. If you also use WiFi/Bluetooth function, hot is unavoidable, ESP32-S3 open wireless function related to power consumption will increase, resulting in heat.
3. It is not recommended to turn on the PSRAM function, if it is turned on, in the ESP-IDF and other scenarios may not pull down the GPIO33 or affect the display, at this time, we recommend removing the buzzer resistor to disconnect its function.
4. In the Arduino IDE environment, turn on the PSRAM, use external Flash, pull down the GPIO33, it will still cause a lot of heat, it is recommended to use a low-power program to play!



The LCD screen display chip used in this product is ST7789V2, and the touch chip is CST816T, there are drivers for the two chips in the libs we provided, for the display driver, please refer to TFT_eSPI enable, and for the touch driver, please refer to the Arduino_LVGL sample demo.



This product is a development board and is not an end product. The product ecology is ESP32 core, and the ecology is very mature, the development environment is also very friendly, we do not assist in modifying the code, so creators, and geeks can play with their own DIY ability, if you have any questions you can ask the development engineers to answer for you.
If you think our products are good, and hope to batch customized hardware, customized shell, customized software, etc., welcome to contact the development engineers!
2024-07-19 172737.png



If the upload doesn't work then you need to hold down the BOOT button, press and release the RESET button, then release the BOOT button to put the chip into upload mode. Then click on Upload.



Need to use version 2.0.12 of the esp32 development board library. Newer versions DO NOT work.



Technical Support

If you need technical support or have any feedback/review, please click the Submit Now button to submit a ticket, Our support team will check and reply to you within 1 to 2 working days. Please be patient as we make every effort to help you to resolve the issue.
Working Time: 9 AM - 6 PM GMT+8 (Monday to Friday)