ESP32-S3-CAM-OV5640 使用教程

产品特性

  • 搭载 ESP32-S3R8 高性能 Xtensa 32 位 LX7 双核处理器,主频高达 240MHz

  • 支持 2.4GHz Wi-Fi (802.11 b/g/n) 和 Bluetooth 5 (LE),板载天线

  • 内置 512KB 的 SRAM 和 384KB ROM,叠封 8MB PSRAM 和外接 16MB Flash

  • 采用 Type-C 接口,提高了用户的使用便捷性和设备的兼容性

  • 板载 24pin DVP 摄像头接口,兼容多款摄像头

  • 板载 18pin 屏幕接口,支持 SPI 以及 QSPI

  • 配备双麦克风阵列,可实现降噪和回声消除等音频算法,适合精准的语音识别和近场 / 远场语音唤醒应用

  • 板载 PWR、BOOT 两个可自定义功能的侧边按钮,方便使用按钮进行自定义功能开发

  • 板载 3.7V GH1.25 锂电池充放电接口

  • 摄像头参数对比

    型号最大分辨率输出接口输出格式Lens Size焦距光圈视场角
    OV5640 摄像头2592×1944DVPRGB565
    YUV
    YCbCr422
    1/4inch4.1mm2.8D:68° H:55° V:42°
    OV3660 摄像头2048×1536DVP8/10-bit Raw RGB data
    JPEG compression
    YUV/YCbCr422
    RGB565
    -3.2mm2.4D:68°
    GC2145 摄像头1616×1232DVPRGB565
    YCbCr422
    8bit Raw RGB data
    1/5inch2.38mm2.4D:68° H:60° V:46.8°
    GC0308 摄像头648×488DVPGrayscale
    YCbCr422
    RGB565
    1/6.5inch2.5mm2.4D:58° H:46° V:35°

板载资源


  1. micro SD 卡
  2. 双麦克风阵列
  3. DVP 摄像头接口
  4. BOOT 按键
  5. PWR 按键
  6. ETA6098 充电管理
  7. USER 自定义指示灯
  8. 充电指示灯
  9. typec 接口
  10. ESP32-S3R8
  11. 16MB Flash
  12. 贴片陶瓷天线
  13. IPEX 1 代座子 (默认板载天线,可通过拆焊电阻切换为使用外部天线)
  14. 喇叭座子 (输出功率 3W 4Ω)
  15. 电池座子 (GH1.25 2PIN 连接器,可用于接入 3.7V 锂电池,支持充放电)
  16. NS4150B 功放
  17. ES8311
  18. ES7210
  19. I2C 座子
  20. UART 座子
  21. LCD18pin 接口
  22. CH32V003F4U6 扩展 IO 芯片
  23. MP1605 电源模块

接口定义


产品尺寸


使用说明

为了让用户能够快速了解产品的各个功能,我们提供了一系列的测试例程,方便客户了解各个接口的使用。除了 ESP32-S3-CAM-OVxxxx 主机和配套的线材之外,为了能够运行例程,需要准备的器件如下:

器件准备

  • ESP32-S3-CAM-OVxxxx ×1
  • Micro SD 卡 ×1(非必需,SD 卡示例需要)
  • 屏幕,支持 1.83,2inch,2.8inch,3.5inch ×1

注意事项

  • 使用时注意 PCB 天线区域,避免其它金属、塑料件贴合 PCB 天线。
  • 屏幕以及摄像头占用绝大多数 GPIO,开发板使用 CH32V003 芯片作为扩展 IO,用于复位、关闭/打开背光等控制。
  • GH1.25 锂电池座子只支持 单节 3.7 V 锂电池,勿使用多组电池包同时接入充放电,建议单节容量在 2000 mAh 以下

⚠️ USB 下载注意事项(重要)

开发板使用 USB 下载程序

若出现 无法识别端口 的情况,请进入 Boot 模式

  1. 按住 BOOT 按键
  2. 连接 USB 至电脑
  3. 松开 BOOT 按键

下载完成后,重新上电运行程序。

示例介绍

  • 固件使用 brookesia 组件,展示 APP 风格的各种应用程序,包含设置、摄像机、音乐播放器、录音、squareline、小智 AI 等 APP

固件下载






APP 示例介绍

提示
  • 退出 APP 方式为从底部往上滑动
  • 从底部往上滑动,并停留在屏幕中间可以查看最近运行的 APP 程序,上滑即可销毁关闭 APP 进程

设置 APP

  • 拥有 WIFI 扫描和配网功能,点击 WIFI 界面 wifi config可以扫描二维码进行配网操作

  • 可以调节显示亮度以及音量大小

  • 显示电池 ADC 电压

  • 产品关于界面,可以查看 MAC 地址


摄像机 APP

  • 支持 (OV5640、OV3660、GC2145、GC0308) 更多摄像头正在适配中

  • 点击 APP 图标,屏幕立即进行图像推流,任意点击屏幕位置退出图像显示,同时可以查看摄像头信息,以及水平镜像和垂直翻转操作


音乐 APP

  • 模拟音乐播放器的界面,此 APP 需要插入内存卡,并在 music 目录下放入 MP3 文件才能正常运行


录音 APP

  • 此例程可以进行双麦克风收音测试,点击开始按钮即开始录音,再次点击停止录音,然后会自动播放录制的音频

  • 录制的音频文件保存在内存卡根目录下


squareline

  • 此示例展示 squareline 制作的 LVGL demo


小智 AI APP

  • 点击 APP 即可进入小智 AI 应用,跟小智官网适配的版本一致,操作方式相同,长按 boot 按键可以回到 brookesia 界面



Arduino 入门教程

配置开发环境

1. 安装和配置 Arduino IDE

请参考 安装和配置 Arduino IDE 教程 下载安装 Arduino IDE 并添加 ESP32 支持。

2. 安装库

要运行示例,需要安装对应的库。

可从 该处 下载 ESP32-S3-CAM-OVxxxx 开发板的示例程序包。包内的 arduino\libraries 目录已包含本教程所需的全部库文件。

库或文件名称说明版本安装方式
es7210音频编码器驱动——手动安装
es8311音频解码器驱动——手动安装
lvgllvgl 显示显示框架v8.4.0通过库管理器或手动安装
ESP32-audioI2S-master音频播放组件v3.4.4通过库管理器或手动安装
版本兼容性说明

LVGL 及其驱动库的版本之间存在较强的依赖关系。例如,为 LVGL v8 编写的驱动可能不兼容 LVGL v9。为确保示例能够稳定复现,推荐使用上表列出的特定版本。混合使用不同版本的库可能导致编译失败或运行时异常。

安装步骤:

  1. 进入已下载的 示例程序包

  2. 将其 Arduino\libraries 目录下的所有文件夹(ESP32-audioI2S-master、lvgl 等)复制到 Arduino 的库文件夹中。

    信息

    Arduino 库文件夹的路径通常是:c:\Users\<用户名>\Documents\Arduino\libraries

    也可以在 Arduino IDE 中通过 文件 > 首选项,查看“项目文件夹位置”来定位。库文件夹就是此路径下的 libraries 文件夹。

  3. 其他安装方式请参考:Arduino 库管理教程

ESP32-S3-CAM-OVxxxx 所需开发板安装说明

板名称板安装要求版本号要求
ESP32 by Espressif Systems“离线”安装/“在线”安装≥3.2.0

示例程序

Arduino 示例程序位于 示例程序包 的 Arduino/examples 目录中。

示例程序基础例程说明依赖库
01_lvgl_example展示了基本的图形库功能,也可以用于测试显示屏的基础性能lvgl
02_CameraWebServer网页摄像头测试,通过连接 WIFI,创建 HTTP 服务器,获取摄像头图像——
03_audio_out_no_tf音频播放测试es8311
04_SDMMC_TestTF 卡挂载以及读写文件测试LVGL,SensorLib
05_audio_out_tfLVGL 演示LVGL,Arduino_DriveBus ,Adafruit_XCA9554
06_esp_srES7210 驱动示例,拾取人声检测——

Arduino 工程参数设置

  • 若烧录的示例存在语音识别模型,则 Partition Scheme 选择 "ESP SR 16M (3MB APP/7MB SPIFFS/2.9MB MODEL)"
  • 若烧录的示例不存在语音识别模型,则 Partition Scheme 选择 "16M Flash (3MB APP/9.9MB FATFS)" 或其他

01_lvgl_example

程序说明

  • 本示例演示了如何使用 Arduino 驱动显示屏,并播放 LVGL 示例程序

硬件连接

  • 将开发板接入电脑

代码分析

  • 初始化 I2C 以及背光:

    DEV_I2C_Init();

    IO_EXTENSION_Init();
    IO_EXTENSION_Output(IO_EXTENSION_IO_6, 1);
    IO_EXTENSION_Pwm_Output(100);
  • 初始化显示屏、触摸、以及 LVGL

    lcd_driver_init();
    touch_driver_init();
    lvgl_driver_init();
  • 加载 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();

运行效果


02_CameraWebServer

程序说明

  • 本示例为摄像头和 HTTP 服务器的综合示例程序,通过浏览器可以获取摄像头视频流

硬件连接

  • 接入摄像头,支持 GC0308,GC2145,OV5640,OV3660
  • 将开发板接入电脑

代码分析

  • 初始化摄像头

    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);
    }
  • 填写 ssid 以及 password 连接 WIFI

    WiFi.begin(ssid, password);
  • 开启 HTTP 服务器

    startCameraServer();

运行效果

  • 上电等待 WIFI 连接后,打开串口监视器可以看到 IP 地址,在浏览器打开


03_audio_out_no_tf

程序说明

  • 本示例演示使用 ES8311 音频解码器播放音乐

硬件连接

  • 接入喇叭
  • 将开发板接入电脑

代码分析

  • 初始化 I2C 控制器和外部拓展 IO

    DEV_I2C_Init();
    IO_EXTENSION_Init();
    IO_EXTENSION_Output(IO_EXTENSION_IO_6, 1);
  • 初始化 ES8311

    es8311_codec_init();
  • 初始化 I2S 并使能功放 PA 引脚

    setupI2S();
    IO_EXTENSION_Output(IO_EXTENSION_IO_4, 1);
  • 在 loop 循环中不断写通过 I2S 向 ES8311 写数据

    void loop() {
    i2s.write((uint8_t *)audio_data, AUDIO_SAMPLES * 2);
    }

运行效果

  • 烧录程序后会自动开始播放音乐

04_SDMMC_Test

程序说明

  • 本示例演示了如何挂载 TF 卡,并测试读写文件

硬件连接

  • 插入 TF 卡
  • 将开发板接入电脑

代码分析

  • 设置 SDIO 接口引脚,并挂载文件系统

    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;
    }
  • 读写文件测试

    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));

运行效果


05_audio_out_tf

程序说明

  • 本示例演示从 TF 卡中播放 MP3 音频

硬件连接

  • 插入 TF 卡,并在根目录放置文件名为 ff-16b-1c-44100hz.mp3 的音频文件
  • 接入喇叭
  • 将开发板接入电脑

代码分析

  • 初始化 I2S 以及音频解码库,并设置播放路径

    audio.setPinout(I2S_BCK_PIN, I2S_LRCK_PIN, I2S_DOUT_PIN,I2S_MCLK_PIN);
    audio.connecttoFS(SD_MMC, "ff-16b-1c-44100hz.mp3");

运行效果

-烧录程序自动播放 MP3 音乐

06_esp_sr

程序说明

  • 本示例演示了使用 ES7210 音频编码芯片进行语音唤醒和语音识别

硬件连接

  • 将开发板接入电脑

代码分析

  • 初始化 I2S 以及 ES7210 音频编码器

    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);
  • 注册语音唤醒以及语音识别回调事件,并开启 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);

运行效果


ESP-IDF 入门教程

配置 ESP-IDF 开发环境

信息

对于 ESP32-S3-CAM-OVxxxx 开发板,需要使用 ESP-IDF V5.5.1 以上版本。

备注

以下内容以 Windows 系统为例,使用 VS Code + ESP-IDF 扩展 的方式进行开发。Mac/Linux 用户请参考 官方说明

安装 ESP-IDF 开发环境

  1. 前往 ESP-IDF Installation Manager 下载 ESP-IDF 安装管理器。这是乐鑫最新推出的跨平台安装工具,下文将演示如何使用其离线安装功能。

    在页面中点击 Offline Installer 标签,然后在筛选栏中选择 Windows 操作系统和你要安装的版本。


    确认选择无误后,点击下载按钮。浏览器将自动同时下载两个文件:一个是 ESP-IDF 离线整合包(.zst),另一个是 ESP-IDF 安装器(.exe)


    请耐心等待两个文件下载完成。

  2. 下载完成后,双击运行 ESP-IDF 安装器(eim-gui-windows-x64.exe)

    启动后,可在右上角将界面语言切换为中文。


    安装工具会自动检测同一目录下是否存在离线整合包。点击 从存档安装


    接下来,选择安装路径。建议使用默认路径;若需自定义,请确保路径中不包含中文或空格。确认无误后,点击 开始安装


  3. 当看到如下界面时,表示 ESP-IDF 已安装成功。


  4. 建议同时安装驱动程序。点击 完成安装,然后点击 安装驱动程序


安装 Visual Studio Code 与 ESP-IDF 扩展

  1. 下载并安装 Visual Studio Code

  2. 安装时建议勾选 通过 Code 打开操作添加到 Windows 资源管理器文件上下文菜单,以便快速打开项目文件夹。

  3. 在 VS Code 中,点击侧边活动栏中的 扩展图标 扩展图标(或使用快捷键 Ctrl + Shift + X)打开 扩展 视图。

  4. 在搜索框中输入 ESP-IDF,找到 ESP-IDF 扩展并点击安装。


  5. 当 ESP-IDF 扩展版本 ≥ 2.0 时,扩展会自动检测并识别上述步骤中安装的 ESP-IDF 环境,无需手动配置。

示例程序

ESP-IDF 示例程序位于 示例程序包 的 ESP-IDF 目录中。

示例程序基础例程说明
01_simple_video_server在局域网络上使用不同端口创建多个 HTTP 服务器,通过网页浏览器访问,提供视频流功能
02_esp_sr通过 ESP-SR 组件演示语音识别及语音唤醒功能
03_audio_play此示例扫描 TF 卡,并播放 MP3
04_dvp_camera_display此示例展示摄像头画面推流到 LCD 屏幕并显示
05_lvgl_brookesia通过 brookesia 组件展示 LVGL APP 风格 UI
06_usb_host_uvc模拟 UVC 设备,演示 USB 摄像头功能

01_simple_video_server

程序说明

  • 本示例演示创建 HTTP 服务器,通过浏览器访问,获取视频流的功能

硬件连接

  • 将开发板接入电脑
  • 摄像头:支持 GC0308,GC2145,OV5640,OV3660

代码分析

  • example_connect():初始化 WIFI 连接
    • 在 menuconfig 配置中设置 ssid 和 password
    • 默认 ssid:WSTEST
    • 默认 password:waveshare0755
  • start_cam_web_server():初始化 http 服务器和初始化摄像头
    • 先初始化摄像头,如果检测到不支持的摄像头或者格式会提示错误并退出
    • 等待摄像头初始化成功,再初始化 http 服务器

运行效果

  • 此示例不会点亮屏幕
  • 需要查看串口监视器打印出的 IP 地址
  • 用浏览器打开 IP 地址,注意需要在同一局域网下


02_esp_sr

程序说明

  • 本示例使用 ESP-SR 组件演示离线语音唤醒和语音识别效果

硬件连接

  • 将开发板接入电脑
  • 请勿遮挡麦克风

代码分析

  • Speech_Init():初始化麦克风以及创建识别任务
    • 通过bsp_audio_codec_microphone_init()返回麦克风控制句柄
    • 创建数据读取和检测识别任务
  • Speech_register_callback():注册识别事件回调函数
    • 可以在回调函数中获取事件

运行效果

  • 此示例不会点亮屏幕
  • 在串口监视器中查看语音唤醒及识别结果

03_audio_play

程序说明

  • 本示例展示播放 TF 中的 MP3 音频文件

硬件连接

  • 插入内存卡,需要在根目录中放置 MP3 文件
  • 插入喇叭
  • 将开发板接入电脑

代码分析

  • bsp_io_expander_init();():初始化外部扩展 IO
    • 初始化 PA 控制脚控制音频输出
  • bsp_sdcard_mount():挂载 TF 卡
  • Search_Music():搜索并保存 TF 卡内的 MP3 文件路径
  • Audio_Play_Init():初始化音频播放器
  • Volume_Adjustment():设置音量大小
  • Audio_Play_Music():播放 MP3

运行效果

  • 此示例不会点亮屏幕
  • 运行后会自动搜索 TF 卡内的 MP3 文件并播放

04_dvp_camera_display

程序说明

  • 本示例为 app 风格 UI+摄像头例程,点击摄像头 APP 即可屏幕上显示图像

硬件连接

  • 接入 DVP 摄像头:支持 GC0308,GC2145,OV5640,OV3660
  • 接入屏幕,支持 1.83,2inch,2.8inch,3.5inch
  • 将开发板接入电脑

代码分析

  • bsp_display_start():BSP 初始化显示相关资源
    • 初始化 LCD 屏幕
    • 初始化 LVGL
  • bsp_display_backlight_on():打开背光
  • new ESP_Brookesia_Phone(disp):初始化 Brookesia 组件
  • new PhoneCameraConf(1,0);:安装摄像头 APP

运行效果

  • 点击摄像头 APP 图标,屏幕开始显示摄像头图像,点击屏幕任意位置即可返回摄像头设置界面




05_lvgl_brookesia

程序说明

  • 本示例展示完整手机风格 UI 系统,包含状态栏、导航栏、应用启动器和手势交互等组件

硬件连接

代码分析

  • bsp_display_start():BSP 初始化显示相关资源
    • 初始化 LCD 屏幕
    • 初始化 LVGL

运行效果

-展示效果为 2inch 屏幕



06_usb_host_uvc

程序说明

  • 本示例为模拟 UVC 设备,演示 USB 摄像头功能

硬件连接

  • 接入 DVP 摄像头:支持 OV5640,OV3660
  • 将开发板接入电脑

代码分析

  • uvc_device_config()配置 UVC 设备相关接口函数
  • uvc_device_init():开始初始化 UVC 设备

运行效果

  • 在电脑中打开相机功能即可看到画面,略有延迟,可稍微等待或者重新上电
  • 此例程会占用 USB 烧录接口,再次烧录程序时需要按住 BOOT 按键进入下载模式


相关资料

1. 硬件资料

开发板设计文件

2. 技术手册

3. 示例程序


技术支持

周一-周五(9:30-6:30)周六(9:30-5:30)

手机:13434470212

邮箱:services04@spotpear.cn

QQ:202004841






[教程导航]