Google Chat: zj734465502@gmail.com
+86-0755-88291180
sales@spotpear.com
dragon_manager@163.com
tech-support@spotpear.com
zhoujie@spotpear.com
WhatsApp:13246739196

The ESP32-S3-Touch-AMOLED-1.75C is a high-performance, highly integrated microcontroller development board designed by Waveshare. It features a compact and aesthetically pleasing CNC-machined aluminum alloy case in an electronic "badge" style, offering excellent build quality. The board integrates a 1.75inch high-definition capacitive AMOLED touchscreen, a highly integrated power management chip, a six-axis sensor (accelerometer + gyroscope), RTC, a low-power audio codec chip with echo cancellation circuitry, a built-in speaker, and space for a battery, providing robust support for rapid development and product prototyping.
| SKU | Product |
|---|---|
| 31261 | ESP32-S3-Touch-AMOLED-1.75C (Standard version) |
| 31264 | ESP32-S3-Touch-AMOLED-1.75C (GPS version) |
| 31262 | ESP32-S3-Touch-AMOLED-1.75C (Standard version with protective case) |

ESP32-S3R8 Wi-Fi and Bluetooth SoC, 240MHz operating frequency, with stacked 8MB PSRAM
32MB NOR Flash
QMI8658 Six-axis Inertial Measurement Unit (IMU), containing a 3-axis gyroscope and a 3-axis accelerometer
Dual-microphone Design Combined with echo cancellation circuitry for higher quality audio capture
Onboard Antenna Supporting 2.4GHz Wi-Fi (802.11 b/g/n) and Bluetooth 5 (LE)
Screen Interface
ES7210 Echo Cancellation Algorithm Chip Used to eliminate echoes and improve audio capture accuracy
ES8311 Audio Codec Chip
PWR Power Button Controls power on/off and supports custom functions
BOOT Button Used for device startup and functional debugging
AXP2101 Highly integrated power management IC
Type-C Interface ESP32-S3 USB interface for program flashing and log printing
MX1.25 Lithium Battery Interface MX1.25 2PIN connector for connecting a 3.7V lithium battery, supports charging and discharging
Onboard Speaker Pads

The ESP32-S3-Touch-AMOLED-1.75C supports two development frameworks: Arduino IDE and ESP-IDF, providing developers with flexible choices. You can select the appropriate development tool based on project requirements and personal preference.
Each method has its advantages, and developers can select based on their needs and skill level. Arduino is simple to learn and easy to get started with, suitable for beginners and non-professionals; ESP-IDF provides more advanced development tools and stronger control capabilities, suitable for developers with professional backgrounds or those with higher performance requirements, and is more suitable for complex project development.
Arduino IDE is a convenient, flexible, and easy-to-use open-source electronics prototyping platform. It requires minimal foundational knowledge, allowing for rapid development after a short learning period. Arduino has a vast global community that provides a wealth of open-source code, project examples, tutorials, and rich libraries that encapsulate complex functionalities, enabling developers to implement various features quickly. You can refer to the Working with Arduino to complete the initial setup, and the tutorial also provides related demos for reference.
ESP-IDF (Espressif IoT Development Framework) is a professional development framework released by Espressif for its ESP series chips. It is developed based on the C language, including a compiler, debugger, and flashing tool, etc. It supports development via command line or an Integrated Development Environment (such as Visual Studio Code with the Espressif IDF plugin), which provides features like code navigation, project management, and debugging, etc. We recommend using VS Code for development. For the specific configuration process, please refer to the Working with ESP-IDF. The tutorial also provides relevant demos for reference.
Note: This tutorial uses the ESP32-S3-Zero as a reference example, and all hardware code is based on its pinout. Before you start, we recommend checking the pinout of your development board to ensure the pin configuration is correct.
Please refer to the tutorial Installing and Configuring Arduino IDE Tutorial to download and install the Arduino IDE and add ESP32 support.
Arduino directory. The Arduino\libraries directory within the package already includes all the library files required for this tutorial.| Library/File Name | Description | Version | Installation Method |
|---|---|---|---|
| GFX Library for Arduino | ST7789 display driver graphics library | v1.6.4 | Install via library manager or manually |
| SensorLib | PCF85063, QMI8658 sensor driver library | v0.3.3 | Install via library manager or manually |
| XPowersLib | AXP2101 driver library | v0.2.6 | Install via library manager or manually |
| lvgl | LVGL display framework | v8.4.0 | Install via library manager or manually |
| Mylibrary | Board pin macro definition | —— | Install manually |
| lv_conf.h | LVGL configuration file | —— | Install manually |
There are strong dependencies between versions of LVGL and its driver libraries. For example, a driver written for LVGL v8 may not be compatible with LVGL v9. To ensure stable reproduction of the examples, it is recommended to use the specific versions listed in the table above. Mixing different library versions may cause compilation failures or runtime exceptions.
Installation Steps:
Download the demo package.
Copy all folders (Arduino_DriveBus, GFX_Library_for_Arduino, etc.) in the Arduino\libraries directory to the Arduino library folder.
The path to the Arduino libraries folder is typically: c:\Users\<Username>\Documents\Arduino\libraries.
You can also locate it within the Arduino IDE via File > Preferences, by checking the "Sketchbook location". The library folder is the libraries folder under this path.
For other installation methods, please refer to: Arduino Library Management Tutorial.
The Arduino demos are located in the Arduino/examples directory of the demo package.
| Demo | Basic Program Description | Dependency Library |
|---|---|---|
| 01_HelloWorld | Demonstrates the basic graphics library function and can also be used to test the basic performance of display screens and the display effect of random text | GFX_Library_for_Arduino |
| 02_GFX_AsciiTable | Prints ASCII characters in rows and columns on the screen according to the screen size | GFX_Library_for_Arduino |
| 03_LVGL_AXP2101_ADC_Data | Drives the AXP2101 using the ported XPowersLib to get power-related data | GFX_Library_for_Arduino |
| 04_LVGL_QMI8658_ui | LVGL draws an acceleration line chart | LVGL, SensorLib |
| 05_LVGL_Widgets | LVGL demonstration | LVGL, Arduino_DriveBus, Adafruit_XCA9554 |
| 06_ES7210 | ES7210 driver demo, picking up human voice for detection | —— |
| 07_ES8311 | ES8311 driver example, plays simple audio | —— |
Display initialization:
if (!gfx->begin()) {
USBSerial.println("gfx->begin() failed!");
}
Clear the screen and display text:
gfx->fillScreen(BLACK);
gfx->setCursor(10, 10);
gfx->setTextColor(RED);
gfx->println("Hello World!");
Animated display:
gfx->setCursor(random(gfx->width()), random(gfx->height()));
gfx->setTextColor(random(0xffff), random(0xffff));
gfx->setTextSize(random(6), random(6), random(2));
gfx->println("Hello World!");

Create data bus and graphic display objects
bus is created for communicating with the display, initialized with specific pin configurations. Then a graphics display object gfx is created, passing parameters such as the data bus, reset pin, rotation angle, whether it is an IPS panel, and the width and height of the display Arduino_DataBus *bus = new Arduino_ESP32QSPI(
LCD_CS /* CS */, LCD_SCLK /* SCK */, LCD_SDIO0 /* SDIO0 */, LCD_SDIO1 /* SDIO1 */,
LCD_SDIO2 /* SDIO2 */, LCD_SDIO3 /* SDIO3 */);
Arduino_GFX *gfx = new Arduino_SH8601(bus, -1 /* RST */,
0 /* rotation */, false /* IPS */, LCD_WIDTH, LCD_HEIGHT);
Draw row and column numbers and character table
gfx->setTextColor(GREEN);
for (int x = 0; x < numRows; x++) {
gfx->setCursor(10 + x * 8, 2);
gfx->print(x, 16);
}
gfx->setTextColor(BLUE);
for (int y = 0; y < numCols; y++) {
gfx->setCursor(2, 12 + y * 10);
gfx->print(y, 16);
}
char c = 0;
for (int y = 0; y < numRows; y++) {
for (int x = 0; x < numCols; x++) {
gfx->drawChar(10 + x * 8, 12 + y * 10, c++, WHITE, BLACK);
}
}

Screen on/off function
void toggleBacklight() {
USBSerial.println(backlight_on);
if (backlight_on) {
for (int i = 255; i >= 0; i--) {
gfx->Display_Brightness(i);
delay(3);
}
}else{
for(int i = 0;i <= 255;i++){
gfx->Display_Brightness(i);
delay(3);
}
}
backlight_on = !backlight_on;
}

setup: Responsible for initializing various hardware devices and the LVGL graphics library environment
USBSerial.begin(115200) prepares for serial debuggingloop
lv_timer_handler(): This is an important function in the LVGL graphics library, used to handle various timer events, animation updates, input processing, and other tasks for the graphical interface. Calling this function in each loop ensures the graphical interface runs smoothly and responds to interactions promptly
setup: Responsible for initializing various hardware devices and the LVGL graphics library environmentUSBSerial.begin(115200) prepares for serial debuggingWire.begin(IIC_SDA, IIC_SCL); initializes I2C bus for communicating with other I2C deviceslv_demo_widgets() to showcase LVGL example widgetslooplv_timer_handler(): This is an important function in the LVGL graphics library, used to handle various timer events, animation updates, input processing, and other tasks for the graphical interface. Calling this function in each loop ensures the graphical interface runs smoothly and responds to interactions promptlydelay(5): Adds a small delay to avoid excessive CPU resource consumption
es8311_codec_init: Initializes the ES8311 audio codecsetup: Performs overall initialization settings, including serial port, pins, I2S, and the ES8311 codeces8311_codec_init function to initialize the ES8311 codecThis chapter includes the following sections, please read as needed:
The following environment settings are applicable to Windows 10/11 systems. For Mac/Linux users, please refer to the official instructions
Download and install Visual Studio Code.
In VS Code, open the Extensions view by clicking the in the VS Code sidebar or using the shortcut (Ctrl+Shift+X). Then, search for the ESP-IDF extension and install it.

After the extension is installed, the will appear in the activity bar on the left side of VS Code. Clicking this icon will view the basic command list for the ESP-IDF extension. Select Configure ESP-IDF extension under Advanced.

Choose Express to enter quick configuration mode:

Modify the following options as needed:

Click Install to start the installation. You will see a page displaying the installation progress, including the progress status of ESP-IDF download, ESP-IDF tool download and installation, as well as the creation of the Python virtual environment.

If installed correctly, you will see a prompt indicating that all settings have been configured successfully, and you can start using the extension.

Note: If ESP-IDF installation fails or needs to be reinstalled, you can try deleting the C:\Users\%Username%\esp and C:\Users\%Username%\.espressif folders and then retry.
The ESP-IDF demos are located in the ESP-IDF directory of the demo package.
| Demo | Basic Description |
|---|---|
| 01_AXP2101 | Gets power-related data by driving the AXP2101 via the ported XPowersLib |
| 02_lvgl_demo_v9 | LVGL Demonstration |
| 03_esp-brookesia | Demonstrates a complete phone-style UI system, including status bar, navigation bar, app launcher, and gesture interaction components |
| 04_Immersive_block | Uses the QMI8658 six-axis sensor to collect acceleration data, driving randomly generated geometric shapes rendered by the LVGL graphics library to move in sync with device tilt |
| 05_Spec_Analyzer | Showcases a real-time audio spectrum visualization analyzer, presenting audio frequency distribution intuitively via 64 colored symmetrical spectrum bars with peak tracking |
i2c_init: Initializes the I2C master device, preparing it for communication with other devices (e.g., the PMU)pmu_register_read: Reads a series of byte data from a specific register of the PMU
![]() | ![]() | ![]() |
|---|
generate_random_shapes(): Generates graphics randomlylv_obj_set_pos) and stores it in the shapes arrayperform_level_calibration(): Core function for horizontal calibrationaccel_bias_x/y)calibration_done flag and prints the bias informationtimer_cb: LVGL timer callback function, responsible for spectrum visualization renderinglv_canvas_finish_layer to commit the layer rendering and updates the canvas displaylv_example_canvas_10: Canvas initializationLV_DRAW_BUF_DEFINE_STATIC to define a 300×150 pixel RGB565 format draw buffertimer_cb callback function, and passes the canvas object as user data to enable timed rendering
Development Board Design File
Official ESP32-S3 Chip Manuals
Onboard Component Datasheets
Monday-Friday (9:30-6:30) Saturday (9:30-5:30)
Email: services01@spotpear.com