用 esp32 实现在线摄像头

用 esp32 实现在线摄像头

介绍

Esp32-cam 是一款是由安信可科技开发的一款小尺寸摄像头模块。它基于ESP32-WROVER系列,搭载了ESP32-D0WD处理器。这款模块不仅具有 Wi-Fi 和蓝牙功能,还提供了摄像头接口。

Esp32-cam

  • 处理器:ESP32-CAM由ESP32-D0WD提供动力,这是一款双核处理器,最大时钟速度为240 MHz。
  • 内存:它内置了520 KB的SRAM,并支持外部microSD卡以获取额外的存储空间。
  • 摄像头接口:该模块通常使用OV2640摄像头,但足够灵活以支持其他类型的摄像头。
  • 连接性:具有内置的Wi-Fi和蓝牙,可轻松集成到物联网生态系统中。
  • GPIO引脚:具有多个GPIO引脚,用于连接外围设备和传感器。
  • 电源管理:支持多种休眠模式。
  • 其他特性:支持STA/AP/STA+AP工作模式,支持Smart Config/AirKiss一键配网

前期准备

  1. Esp32-cam x 1
  2. 杜邦线若干
  3. 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
2
3
4
5
[env:esp32cam]
platform = espressif32
board = esp32cam
framework = arduino
monitor_speed = 115200

2. 写入代码

进入 arduino-esp32 官网把 camerawebserver 的那个案例代码拷贝到 src 目录下。修改 main.cpp 文件下的 wifi 账号密码为自己家的就可以了,非常简单。

1
2
3
4
5
6
7
8
9
10
.........
#include "camera_pins.h"

// ===========================
// Enter your WiFi credentials
// 大概在这个位置
// ===========================
const char *ssid = "Xiaomi_F2ED";
const char *password = "123456";
.......

3. 上传代码

正常按照流程编译上传代码到开发板即可,记得上传的时候要短接 IO0 和GND。

实机演示

演示的时候一定要记得先把IO0 和 GND 先断开连接,然后再按一下键盘上的reset 按钮。不出意外等待一会儿,控制台会提示wifi连接成功。

1
2
WiFi connected
Camera Ready! Use 'http://192.168.xx.xx' to connect

web 界面

问题汇总

1. error: ‘ledcattach’ was not declared in this scope

在复用官网的源码的时候会报这个错误,这个时候我判断其实是因为 platformIO 加载的 esp32-cam 的驱动还是老版本的,而老版本只支持 ledcAttachPin 这个 API,所以我的解决方案就是把 api 给改掉

1
2
3
ledcAttach(pin, 5000, 8);
// 改成
ledcAttachPin(pin, 5000);

2. 控制台一直打印乱码,或者代码上传,什么都不输出。

这个情况很坑,很有可能是下载器的问题,目前某宝上购买的产品会带一块拓展下载板,如果可以建议还是使用 usb 转 ttl 的下载模式。

那在使用这个模式的时候,上传代码短接 IO0 和 GND,运行代码的时候断开并且按下 “reset”。

![短接 IO0 和 GND](https://oss.jzxer.cn/blog/截屏2024-11-17 22.03.32_副本.png)

dev 的艺术空间

作者

dev

发布于

2024-11-08

更新于

2024-12-22

许可协议

评论

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×