用 esp32 实现在线摄像头
介绍
Esp32-cam 是一款是由安信可科技开发的一款小尺寸摄像头模块。它基于ESP32-WROVER系列,搭载了ESP32-D0WD处理器。这款模块不仅具有 Wi-Fi 和蓝牙功能,还提供了摄像头接口。
- 处理器:ESP32-CAM由ESP32-D0WD提供动力,这是一款双核处理器,最大时钟速度为240 MHz。
- 内存:它内置了520 KB的SRAM,并支持外部microSD卡以获取额外的存储空间。
- 摄像头接口:该模块通常使用OV2640摄像头,但足够灵活以支持其他类型的摄像头。
- 连接性:具有内置的Wi-Fi和蓝牙,可轻松集成到物联网生态系统中。
- GPIO引脚:具有多个GPIO引脚,用于连接外围设备和传感器。
- 电源管理:支持多种休眠模式。
- 其他特性:支持STA/AP/STA+AP工作模式,支持Smart Config/AirKiss一键配网
前期准备
- Esp32-cam x 1
- 杜邦线若干
- usb 转 ttl x 1
代码参考
1. 配置环境
按照下图选择开发板驱动和开发框架,我这里选的是 Arduino。
![截屏2024-11-17 22.13.34](https://oss.jzxer.cn/blog/截屏2024-11-17 22.13.34.png)
如果是初次下载这个时间可能比较漫长,耐心等一下。下载成功以后把 platformIO.ini 配置文件添加以下参数:
1 | [env:esp32cam] |
2. 写入代码
进入 arduino-esp32 官网把 camerawebserver 的那个案例代码拷贝到 src 目录下。修改 main.cpp 文件下的 wifi 账号密码为自己家的就可以了,非常简单。
1 | ......... |
3. 上传代码
正常按照流程编译上传代码到开发板即可,记得上传的时候要短接 IO0 和GND。
实机演示
问题汇总
1. error: ‘ledcattach’ was not declared in this scope
在复用官网的源码的时候会报这个错误,这个时候我判断其实是因为 platformIO 加载的 esp32-cam 的驱动还是老版本的,而老版本只支持 ledcAttachPin 这个 API,所以我的解决方案就是把 api 给改掉
1 | ledcAttach(pin, 5000, 8); |
2. 控制台一直打印乱码,或者代码上传,什么都不输出。
这个情况很坑,很有可能是下载器的问题,目前某宝上购买的产品会带一块拓展下载板,如果可以建议还是使用 usb 转 ttl 的下载模式。
那在使用这个模式的时候,上传代码短接 IO0 和 GND,运行代码的时候断开并且按下 “reset”。
![短接 IO0 和 GND](https://oss.jzxer.cn/blog/截屏2024-11-17 22.03.32_副本.png)
用 esp32 实现在线摄像头