总体说明
目前,我们发布的
ESP32-S2
和ESP32-S3
系列的产品都支持 USB Camera 应用方案
适用领域
- 家庭安防
- 楼宇可视对讲机
- 猫眼门铃
- 儿童相机
- FPV 图传
- 宠物喂养
- 扫码录入
- 医疗内窥
- AI 应用:OCR,人脸识别,侵入检测
当前主要的 Camera 接口类型有:
当前 Camera 支持的数据输出格式,主要有:
- RGB
- YUV
- JPEG
- RAW Data
- BMP
注意:
当摄像头本身不支持输出JPEG
数据时,可以由 ESP 设备执行 JPEG 压缩,输出 JPEG 数据。特别地,当需要的分辨率过大 , 超过640*480
时,尽量考虑使用支持 JPEG 编码的摄像头。由 ESP 设备执行 JPEG 编解码将对CPU
和内存
造成压力。
USB 接口的 Camera 方案
目前,仅 ESP32-S2、ESP32-S3 支持 USB 接口的 Camera 方案,USB 接口为芯片指定管脚
GPIO19(D-)
和GPIO20(D+)
。
1 USB 接口的 Camera 选型 要求:
-
摄像头兼容 USB1.1 全速
(FS 12Mbps)
模式 -
摄像头必须支持标准 UVC 协议
-
摄像头自带 MJPEG 压缩
-
同步传输模式下,摄像头支持设置接口为
wMaxPacketSize
为512
-
同步传输模式下,图像数据流 USB 传输总带宽应小于 4 Mbps (500 KB/s),若图像单帧 25KB,帧率可到 20 FPS
-
批量传输模式下,图像数据流 USB 传输总带宽应小于 8.8 Mbps (1100 KB/s),若图像单帧 50KB,帧率可到 20 FPS
-
MJPEG 支持
320 x 480、320 x 240
分辨率(同步传输)或640 x 480
分辨率 (批量传输) -
MJPEG 支持设置帧率到
15 帧/s、30 帧/s
2 USB Camer 硬件接线:
- USB 摄像头
VBUS
请使用5V
电源,或使用 GPIO 控制 VBUS ON/OFF。 - USB 摄像头D+ 、D- 数据线请按照常规差分信号标准走线
- USB 摄像头
D+(绿线)
接 ESP32-S2/S3 的GPIO20
- USB 摄像头
D-(白线)
接 ESP32-S2/S3 的GPIO19
3 USB 接口的 Camera 方案软件设计参考:
-
USB 接口的 Camera 应用基础功能:
- USB 摄像头 JPEG 数据流实时获取
- USB 摄像头热插拔
- JPEG 本地实时解码,LCD 屏幕实时显示
- JPEG 编码图像网络传输
-
基于 UVC 协议的 USB Camera 驱动:
- esp-iot-solution SDK usb/add_usb_solutions 分支: esp-iot-solution/components/usb/uvc_stream
-
USB 接口的 Camera 应用方案例程:
- esp-iot-solution SDK usb/add_usb_solutions 分支: esp-iot-solution/examples/usb/host
- USB Camera + LCD Display 例程:usb/host/usb_camera_lcd_display
- USB Camera + SD 卡存储例程:usb/host/usb_camera_sd_card
- USB Camera + Wi-Fi 图传(MJPEG)例程:usb/host/usb_camera_wifi_transfer
4 USB Camera 测试数据:
-
USB Camera 传输 + ESP 设备解码和刷屏
的帧率:分辨率 编码格式 典型帧率 320 * 480 JPEG 10 320 * 240 JPEG 15 - 瓶颈:ESP 设备的解码速率
提升思路:
- 加快 ESP 设备的解码速率,可参考 Audio JPEG 图片解码加速指令集 esp-adf-libs/esp_codec/include/codec/esp_jpeg_dec.h ,
仅支持 ESP32-S3
,对应示例参考:esp-adf/examples/display
- 加快 ESP 设备的解码速率,可参考 Audio JPEG 图片解码加速指令集 esp-adf-libs/esp_codec/include/codec/esp_jpeg_dec.h ,
-
总带宽限制下,不同分辨率图像
压缩率
与帧率
对应关系:
USB Camera 传输 + ESP 设备 WiFi 图传
- 瓶颈:ESP32 设备的 USB 接口传输带宽 4Mbps (同步传输模式)
提升思路:
- 增加图像压缩率,降低图像质量
- 使用批量传输模式 USB Camera,USB 接口传输带宽可达 8.8 Mbps。
-
ESP32-S2 USB Camera ,在压缩率 25:1 下,640*480 分辨率的图像吞吐率可达到 15 帧每秒,每一帧图像大小约 36 KB:
-
ESP32-S2 USB Camera ,在压缩率 15:1 下,320*240 分辨率的图像吞吐率可达到 33 帧每秒,每一帧图像大小约 15 KB:
5 USB Camera 性能总结:
- ESP32-S2 与 ESP32-S3 的 USB Camera 接口速率的性能差异不大,但 ESP32-S2 是单核芯片,ESP32-S3 是双核芯片,且 ESP32-S3 支持 8 线 PSRAM ,所以
ESP32-S3
的 USB Camera 整体性能优于 ESP32-S2
。