Google Chat:---
+86-0755-88291180
sales@spotpear.com
dragon_manager@163.com
tech-support@spotpear.com
zhoujie@spotpear.com
WhatsApp:13246739196
WhatsApp:13424403025
Powered by the ESP32-S3R8 high-performance Xtensa 32-bit LX7 dual-core processor, with a main frequency of up to 240 MHz
Supports 2.4GHz Wi-Fi (802.11 b/g/n) and Bluetooth 5 (LE) with an onboard antenna
Features 512 KB of internal SRAM and 384 KB of ROM, with 8 MB of stacked PSRAM and an external 16 MB Flash
Utilizes a Type-C interface, improving user convenience and device compatibility
Onboard 24PIN DVP camera interface, compatible with multiple camera modules
Onboard 18PIN screen interface, supporting SPI and QSPI
Equipped with a dual-microphone array for audio algorithms such as noise reduction and echo cancellation, suitable for accurate speech recognition and near-field/far-field wake-up applications
Onboard PWR and BOOT side buttons, configurable for custom function development
Onboard 3.7V GH1.25 lithium battery charge/discharge interface
Camera Parameter Comparison
| Model | Max Resolution | Output Interface | Output Format | Lens Size | Focal Length | Aperture | Field of View |
|---|---|---|---|---|---|---|---|
| OV5640 Camera | 2592×1944 | DVP | RGB565 YUV YCbCr422 | 1/4inch | 4.1mm | 2.8 | D:68° H:55° V:42° |
| OV3660 Camera | 2048×1536 | DVP | 8/10-bit Raw RGB data JPEG compression YUV/YCbCr422 RGB565 | - | 3.2mm | 2.4 | D:68° |
| GC2145 Camera | 1616×1232 | DVP | RGB565 YCbCr422 8-bit Raw RGB data | 1/5inch | 2.38mm | 2.4 | D:68° H:60° V:46.8° |
| GC0308 Camera | 648×488 | DVP | Grayscale YCbCr422 RGB565 | 1/6.5inch | 2.5mm | 2.4 | D:58° H:46° V:35° |



To help users quickly understand the various functions of the product, we provide a series of test routines for customers to learn how to use each interface. In addition to the ESP32-S3-CAM-OVxxxx main unit and its included cables, the following components are required to run the examples:
CH32V003 chip as an I/O expander for control functions such as reset and backlight on/off.If the port is not recognized, please enter Boot mode:
After the download is complete, restart the board to run the program.
The example programs are located in the Firmware directory of the demo package.
Select the firmware corresponding to your screen for flashing. For example, ESP32-S3-CAM-OVxxxx-Factory-LCD_1_83.bin supports the 1.83 screen
The images below show the effect after flashing the firmware on 1.83, 2inch, 2.8inch, 3.5inch




Features Wi-Fi scanning and network configuration. Click WIFI on the interface, then wifi config to scan a QR code for network configuration
Allows adjustment of display brightness and volume
Displays the battery ADC voltage
Product information screen where you can view the MAC address

Supports (OV5640, OV3660, GC2145, GC0308). More cameras are being adapted
Tap the app icon to start streaming the image to the screen immediately. Tap anywhere on the screen to exit image display. You can also view camera information, as well as perform horizontal mirror and vertical flip operations

Simulates a music player interface. This app requires an inserted memory card with MP3 files placed in the music directory to function correctly

This demo allows testing dual-microphone recording. Click the start button to begin recording, click again to stop recording. The app will then automatically play back the recorded audio
The recorded audio file is saved in the root directory of the memory card

This example demonstrates an LVGL demo created with SquareLine Studio

Tap the app icon to enter the XiaoZhi AI application. It is consistent with the version adapted for the XiaoZhi official website and operates in the same way. Press and hold the Boot button to return to the Brookesia interface

This chapter contains the following sections. Please read as needed:
New to Arduino ESP32 development and looking for a quick start? We have prepared a comprehensive Getting Started Tutorial for you.
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 to download and install the Arduino IDE and add ESP32 support.
To run the demo, you need to install the corresponding library.
You can click here to download the demo package for the ESP32-S3-CAM-OVxxxx development board. The arduino\libraries directory within the package already includes all the library files required for this tutorial.
| Library/File Name | Description | Version | Installation Method |
|---|---|---|---|
| es7210 | Audio ADC driver | —— | Manual Installation |
| es8311 | Audio DAC driver | —— | Manual Installation |
| lvgl | LVGL graphics library | v8.4.0 | Via Library Manager or Manual Installation |
| ESP32-audioI2S-master | Audio playback component | v3.4.4 | Via Library Manager or Manual Installation |
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 that the examples can be reproduced reliably, it is recommended to use the specific versions listed in the table above. Mixing different versions of libraries may lead to compilation failures or runtime errors.
Installation Steps:
Navigate to the downloaded demo package.
Copy all the folders (e.g., ESP32-audioI2S-master, lvgl) from its Arduino\libraries directory to your Arduino libraries folder.
The path to the Arduino libraries folder is typically: c:\Users\<username>\Documents\Arduino\libraries.
You can also locate it in the Arduino IDE by going to File > Preferences and checking the "Sketchbook location". The libraries folder is the libraries subfolder within 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_lvgl_example | Demonstrates basic graphics library functions; also can be used to test basic display performance | lvgl |
| 02_CameraWebServer | Web camera test. Connects to Wi-Fi, creates an HTTP server, and captures camera images | —— |
| 03_audio_out_no_tf | Audio playback test | es8311 |
| 04_SDMMC_Test | TF card mounting and file read/write test | LVGL,SensorLib |
| 05_audio_out_tf | LVGL demonstration | LVGL, Arduino_DriveBus, Adafruit_XCA9554 |
| 06_esp_sr | ES7210 driver example, capturing human voice for detection | —— |

Initialize I2C and backlight:
DEV_I2C_Init();
IO_EXTENSION_Init();
IO_EXTENSION_Output(IO_EXTENSION_IO_6, 1);
IO_EXTENSION_Pwm_Output(100);
Initialize the display, touch, and LVGL:
lcd_driver_init();
touch_driver_init();
lvgl_driver_init();
Load the LVGL demo:
lvgl_port_lock(0);
lv_demo_widgets();
// lv_demo_benchmark();
// lv_demo_keypad_encoder();
// lv_demo_music();
// lv_demo_stress();
lvgl_port_unlock();

Initialize the camera:
esp_err_t err = esp_camera_init(&config);
if (err != ESP_OK) {
esp_camera_deinit();
Serial.printf("Camera init failed with error 0x%x", err);
config.frame_size = FRAMESIZE_QVGA;
config.pixel_format = PIXFORMAT_RGB565;
esp_camera_init(&config);
}
Enter the SSID and password to connect to Wi-Fi:
WiFi.begin(ssid, password);
Start the HTTP server:
startCameraServer();
After powering on, wait for the Wi-Fi connection. Open the serial monitor to see the IP address, then open it in a browser

Initialize the I2C controller and external I/O expander:
DEV_I2C_Init();
IO_EXTENSION_Init();
IO_EXTENSION_Output(IO_EXTENSION_IO_6, 1);
Initialize ES8311:
es8311_codec_init();
Initialize I2S and enable the power amplifier (PA) pin:
setupI2S();
IO_EXTENSION_Output(IO_EXTENSION_IO_4, 1);
In the loop, continuously write data to the ES8311 via I2S:
void loop() {
i2s.write((uint8_t *)audio_data, AUDIO_SAMPLES * 2);
}
Set the SDIO interface pins and mount the file system:
if(!SD_MMC.setPins(clk, cmd, d0)){
Serial.println("Pin change failed!");
return;
}
if (!SD_MMC.begin( "/sdcard", true)) {
Serial.println("Card Mount Failed");
return;
}
File read/write test:
listDir(SD_MMC, "/", 0);
createDir(SD_MMC, "/mydir");
listDir(SD_MMC, "/", 0);
removeDir(SD_MMC, "/mydir");
listDir(SD_MMC, "/", 2);
writeFile(SD_MMC, "/hello.txt", "Hello ");
appendFile(SD_MMC, "/hello.txt", "World!\n");
readFile(SD_MMC, "/hello.txt");
deleteFile(SD_MMC, "/foo.txt");
renameFile(SD_MMC, "/hello.txt", "/foo.txt");
readFile(SD_MMC, "/foo.txt");
testFileIO(SD_MMC, "/test.txt");
Serial.printf("Total space: %lluMB\n", SD_MMC.totalBytes() / (1024 * 1024));
Serial.printf("Used space: %lluMB\n", SD_MMC.usedBytes() / (1024 * 1024));

Initialize I2S and the audio decoder library, and set the playback path:
audio.setPinout(I2S_BCK_PIN, I2S_LRCK_PIN, I2S_DOUT_PIN,I2S_MCLK_PIN);
audio.connecttoFS(SD_MMC, "ff-16b-1c-44100hz.mp3");
Initialize I2S and the ES7210 audio ADC:
Wire.begin(I2C_PIN_SDA, I2C_PIN_SCL);
es7210_init();
i2s.setPins(I2S_PIN_BCK, I2S_PIN_WS, I2S_PIN_DOUT, I2S_PIN_DIN, I2S_PIN_MCK);
i2s.setTimeout(1000);
i2s.begin(I2S_MODE_STD, 16000, I2S_DATA_BIT_WIDTH_16BIT, I2S_SLOT_MODE_STEREO);
Register callbacks for voice wake-up and speech recognition events, then start ESP-SR:
ESP_SR.onEvent(onSrEvent);
ESP_SR.begin(i2s, sr_commands, sizeof(sr_commands) / sizeof(sr_cmd_t), SR_CHANNELS_STEREO, SR_MODE_WAKEWORD);

This chapter contains the following sections. Please read as needed:
For the ESP32-S3-CAM-OVxxxx development board, ESP-IDF version V5.5.1 or above is required.
The following guide uses Windows as an example, demonstrating development using VS Code + the ESP-IDF extension. macOS and Linux users should refer to the official documentation.
Download the installation manager from the ESP-IDF Installation Manager page. This is Espressif's latest cross-platform installer. The following steps demonstrate how to use its offline installation feature.
Click the Offline Installer tab on the page, then select Windows as the operating system and choose your desired version from the filter bar.

After confirming your selection, click the download button. The browser will automatically download two files: the ESP-IDF Offline Package (.zst) and the ESP-IDF Installer (.exe).

Please wait for both files to finish downloading.
Once the download is complete, double-click to run the ESP-IDF Installer (eim-gui-windows-x64.exe).
The installer will automatically detect if the offline package exists in the same directory. Click Install from archive.

Next, select the installation path. We recommend using the default path. If you need to customize it, ensure the path does not contain Chinese characters or spaces. Click Start installation to proceed.

When you see the following screen, the ESP-IDF installation is successful.

We recommend installing the drivers as well. Click Finish installation, then select Install driver.

Download and install Visual Studio Code.
During installation, it is recommended to check Add "Open with Code" action to Windows Explorer file context menu to facilitate opening project folders quickly.
In VS Code, click the Extensions icon in the Activity Bar on the side (or use the shortcut Ctrl + Shift + X) to open the Extensions view.
Enter ESP-IDF in the search box, locate the ESP-IDF extension, and click Install.

For ESP-IDF extension versions ≥ 2.0, the extension will automatically detect and recognize the ESP-IDF environment installed in the previous steps, requiring no manual configuration.
The ESP-IDF demos are located in the ESP-IDF directory of the demo package.
| Demo | Basic Description |
|---|---|
| 01_simple_video_server | Create multiple HTTP servers on different ports on the local network, accessible via a web browser, providing video streaming functionality |
| 02_esp_sr | Demonstrate speech recognition and voice wake-up functions using the ESP-SR component |
| 03_audio_play | Scan the TF card and play MP3 audio |
| 04_dvp_camera_display | Display the camera feed on the LCD screen |
| 05_lvgl_brookesia | Show LVGL APP style UI using the Brookesia component |
| 06_usb_host_uvc | Simulate a UVC device, demonstrating USB camera functionality |
example_connect(): Initialize Wi-Fi connectionstart_cam_web_server(): Initialize the HTTP server and camera

Speech_Init(): Initialize the microphone and create recognition tasksbsp_audio_codec_microphone_init()Speech_register_callback(): Register a callback function for recognition events
bsp_io_expander_init();: Initialize the external I/O expanderbsp_sdcard_mount(): Mount the TF cardSearch_Music(): Search for and save the paths of MP3 files on the TF cardAudio_Play_Init(): Initialize the audio playerVolume_Adjustment(): Set the volume levelAudio_Play_Music(): Play the MP3 file
bsp_display_start(): BSP initializes display-related resourcesbsp_display_backlight_on(): Turn on the backlightnew ESP_Brookesia_Phone(disp): Initialize the Brookesia componentnew PhoneCameraConf(1,0);: Install the camera app![]() | ![]() |
|---|
![]() | ![]() |
|---|
bsp_display_start(): BSP initializes display-related resources

uvc_device_config(): Configure UVC device-related interface functionsuvc_device_init(): Start initializing the UVC device
Development Board Design Files
Official ESP32-S3 Chip Manuals
Datasheets
Monday-Friday (9:30-6:30) Saturday (9:30-5:30)
Email: services01@spotpear.com