ESP32-CAM 常见问题
1 前言
实际上手开发 ESP32-CAM 相机部分功能的时候,还是碰到了不少坑,不到一周就遇到了 3 个问题…… 不过还好都可以参照官方的文档来解决。
根本原因就是,网上的 Demo 都有点古老了,在新版的 espidf 上水土不服。
2 环境
- PlatformIO v5.1.1
- Board: ESP32-CAM
- Platform: espressif32 v3.2.0
- Framework: espidf v3.40200.210118
- Library Dependencies:
- esp32-camera v1.0.0
文中的问题和解决方案都是基于上述环境的。其他环境下不一定存在同样问题,或者造成问题的原因并不相同。
3 常见问题
3.1 ‘rtc_gpio_desc’ undeclared
3.1.1 问题描述
在项目中添加依赖库 esp32-camere,之后构建项目。
构建过程中报错,错误信息如下:
1 | .pio/libdeps/esp32cam/esp32-camera/driver/twi.c: In function 'pinMode': |
3.1.2 解决方案
在项目目录下,执行下列命令,打开配置菜单:
1 | pio run -t menuconfig |
进入菜单:
1 | Component config > Driver configurations > RTCIO configuration |
可以看到选项 “Support array `rtc_gpio_desc` for ESP32”,默认是禁用的,按空格启用它,然后按 S
保存,按 Q
退出。
再次构建项目,一切正常。
错误原因:该版本的 espidf 默认禁用了一些模块,这里的错误是因为 RTC 模块被禁用造成的,而 esp32-camera 正好依赖这个模块。
3.2 Camera probe failed with error 0x20004
3.2.1 问题描述
将 Demo 中初始化 camera 的代码复制到项目中,构建并烧录到主板上,上电启动主板。
从串口日志中,可以发现主板在不断重启,错误信息如下:
1 | I (2384) sccb: pin_sda 26 pin_scl 27 |
3.2.2 解决方案
有多种原因会导致 0x20004
错误,这里是因为项目中缺少 esp32-camera 的配置参数导致的。
项目的所有参数,都是通过 menuconfig 来管理的,因此只需要将 esp32-camera 的相关配置添加到菜单中,再运行一次 menuconfig 即可。
esp32-camera 配置菜单可以从项目中找到,路径为:
1 | .pio/libdeps/esp32cam/esp32-camera/Kconfig |
将其中的内容全部复制下来,然后在项目的 src 目录下,创建文件 Kconfig.projbuild,并将内容粘贴进去。
再次运行 menuconfig,可以看到界面上多出了一个 “Camera configuration” 菜单:
进入该菜单,禁用 OV2640 以外的其他摄像头驱动,其他配置保持默认即可:
3.3 启用 SPIRAM
ESP32-CAM 的内置内存只有几百 KB,但是处理图像往往会占用很多内存,因此需要启用 SPIRAM。开启后,将增加 4MB 可用内存,可以满足常用的图像处理需求。
然而,这个版本的 espidf 默认是禁用 SPIRAM 的,需要通过 menuconfig 开启。
菜单路径为:
1 | Component config > ESP32-specific |
找到其中的 “Support for external, SPI-connected RAM”,启用即可。