跳过导航,直接进入主要内容跳过导航,直接进入主要内容跳过导航,直接进入主要内容

ESP32 ESP-IDF OV2640 License

🌐 English Documentation

镜头与视场角(FOV)

本文档说明 OV2640 摄像头模块的镜头物理参数、视场角、固件中的 视野"控制项,以及如何扩展广角/微距能力。"

📋 目录


OV2640 传感器物理参数

参数 数值
传感器尺寸 1/4 英寸(对角线 ~3.6mm)
像素 2MP(1600×1200 UXGA)
像元尺寸 2.2µm × 2.2µm
动态范围 50 dB
信噪比 40 dB
输出格式 JPEG(OV2640 内部 ISP 已压缩)
灵敏度 0.6 V/Lux-sec

⚠️ 注意:固件 camera_driver.c 没有调用 AEC(自动曝光)/AGC(自动增益)/AWB(白平衡)/LENC(镜头阴影校正)寄存器配置。OV2640 工作在出厂默认值,某些光照条件下可能过曝或偏色。

固件中硬编码的摄像头配置

// main/camera_driver.c
.xclk_freq_hz = 20000000,        // 20MHz 主时钟
.pixel_format = PIXFORMAT_JPEG,   // 硬编码 JPEG 输出
.fb_location  = CAMERA_FB_IN_PSRAM,
.grab_mode    = CAMERA_GRAB_LATEST,
.fb_count     = 2                 // 双缓冲

固件没有暴露的摄像头控制:

  • ❌ 对焦控制(OV2640 不支持)
  • ❌ 曝光补偿
  • ❌ 白平衡模式
  • ❌ 增益
  • ❌ 镜头阴影校正(LENC)
  • ❌ 数字变焦 ROI
  • ❌ 水平翻转(仅 vflip 垂直翻转)
  • ❌ 锐度 / 降噪 / 色彩矩阵调节

MiBee 板载原厂镜头

MiBee Cam 出厂标配的镜头是 M12 接口定焦镜头(可拧开更换,但需要物理拆焊):

参数 典型值
焦距 3.6mm(也有 2.8mm / 6mm 变体)
光圈 F2.0
视场角 (FOV) 60-68° 水平(属于"标头"范畴)
红外滤光片 有(650nm IR-cut)
最小对焦距离 ~60cm
最远 理论无穷远
畸变 ~3% 桶形畸变(不严重)
自动对焦 无
接口 M12 × 0.5(标准)

原装是正常焦距镜头——既不是广角(通常 >90°),也不是微距(通常 <10cm 最小对焦距离)。

视场角(FOV)随分辨率变化

OV2640 通过内部 ISP 缩放/窗口生成低分辨率——不是软件裁切。这意味着选低分辨率会降低 FOV:

选择 视野相对值 视野绝对值(3.6mm 镜头) 等效行为
UXGA 100% ~68° 水平 最广(用满传感器)
XGA ~81% ~55° 中心裁切
SVGA ~63% ~43° 中等
VGA 50% ~34° 2× 数字变焦效果

⚠️ 这是反直觉的:选更低的分辨率 → 视野更窄。要"广角"必须选 UXGA。

广角能力

软件做不到

固件没有任何 FOV / 焦距 / 广角配置项。cam_config_t 不含这些字段。要"广角"必须更换物理镜头。

镜头选择参考

焦距 FOV(对角线) FOV(水平,4:3) 畸变 价格区间 适用
1.6mm F2.0 ~180° ~160° 严重鱼眼 ¥5-10 极限广角
2.1mm F2.0 ~145° ~130° 中等鱼眼 ¥5-10 广角监控
2.8mm F2.0 ~110° ~95° 轻微畸变 ¥5-10 轻度广角
3.6mm F2.0 ~78° ~68° ~3% ¥5(原装) 标头
6mm F2.0 ~50° ~42° 极小 ¥5-10 望远
8mm F2.0 ~38° ~32° 极小 ¥5-15 远望
12mm F2.0 ~25° ~21° 极小 ¥8-15 超望远

M12 接口通用,但需拆焊旧镜头。固件无需任何改动——OV2640 自动适配任意焦距的 M12 镜头。

广角的副作用

  1. 桶形畸变:焦距越短越严重,1.6mm 鱼眼需要软件校正
  2. 暗角:周边光线不足,四角发暗
  3. 边缘锐度下降:镜头光学分辨率限制
  4. 最近对焦距离不变:仍 ~60cm(受限于镜头结构)
  5. 对焦深度变化:广角景深大,望远景深小

微距能力

原装镜头的微距问题

  • 最小对焦距离 ~60cm
  • 距离 < 30cm 必然糊(定焦在那儿)
  • 想拍 5-10cm 距离的细节 → 不可能

解决方案(全部硬件)

方案 成本 难度 效果
换长焦镜头(6/8/12mm) ¥5-15 中等(拆焊) 最近对焦 20-50cm
叠加近摄镜(+1/+2/+4 屈光度) ¥5-20 简单(拧上) 最近对焦 5-15cm
倒接镜头(反向螺纹) ¥0 简单 牺牲光圈,最近对焦 1-3cm
加延长管 ¥5 简单 最近对焦缩短 50%

近摄镜屈光度换算:

  • +1 屈光度 → 最近对焦 ~100cm
  • +2 屈光度 → 最近对焦 ~50cm
  • +4 屈光度 → 最近对焦 ~25cm
  • +10 屈光度 → 最近对焦 ~10cm(真微距)

软件伪微距

  • 用 UXGA 全分辨率 + 后期裁切中心 1/4 → 等效 2× 数字放大
  • 但是软件放大,本质是插值,画质会变差
  • 固件没有 ROI(感兴趣区域)/ 数字缩放接口暴露给用户

红外 / 夜视版本

镜头类型 白天效果 夜间效果 配合红外灯
IR-cut 650nm(原装) 彩色正常 漆黑 不行
无 IR-cut(红外镜头) 偏红(需软件校正) 可拍红外场景 ✅ 必须

红外镜头 + 850nm 红外灯

  • 固件 GPIO4 接的"闪光 LED"实际是 LEDC PWM 白光 LED
  • 红外灯需要另外的 GPIO 和硬件,固件不直接支持
  • 但可以用 GPIO4 输出普通白光当补光(无红外效果)

镜头更换步骤

⚠️ 操作需要烙铁。新手请慎重。

  1. 拆外壳:MiBee 板子有塑料外壳
  2. 取下原镜头:M12 接口逆时针旋转
  3. 焊下镜头座上的 22pF 电容(部分镜头座带)
  4. 焊上新镜头:注意对齐螺纹
  5. 调整对焦:临时通电,转动镜头直到画面最清晰
  6. 固定:滴 UV 胶或热熔胶

固件零修改——OV2640 自动适配。

其他镜头相关现象

暗角

  • 焦距越短(广角)→ 周边暗角越明显
  • 3.6mm 原装镜头上 UXGA 全分辨率 → 四角会看到轻微暗角
  • 光学现象,LENC 校准未启用(camera_driver.c 没调 set_lenc)

红外反射

  • 强阳光下拍摄玻璃 / 水面 → 可能产生红外伪影
  • IR-cut 镜头过滤 650nm 以上,应能消除

灰尘

  • M12 镜头座内部进灰 → 画面黑点
  • 拆镜头时注意防尘

总结

维度 现状
广角支持 ❌ 软件无;只能换 1.6-2.8mm 物理镜头
微距支持 ❌ 软件无;只能换长焦或加近摄镜
视场角(默认) 60-68° 水平(3.6mm 原装)
视场角(最低分辨率 VGA) ~34° 水平(2× 变焦效果)
视场角(最高分辨率 UXGA) ~68° 水平(最广)
数字变焦 ❌ 固件没暴露 ROI 接口

💡 提示:选择合适的镜头可以显著改变拍摄效果,而无需修改任何固件代码。 | 自动对焦 | ❌ OV2640 不支持 | | 畸变校正(LENC) | ❌ 未启用 | | 镜像翻转 | ✅ vflip 配置项 | | 旋转 180° | ❌ 只能垂直翻转 | | 红外镜头 | ⚠️ 硬件支持,固件无红外灯控制 |

简言之:固件就是个 OV2640 的"傻瓜相机驱动"。要"广角"或"微距",预算 ¥5-15 买一个新 M12 镜头拧上去即可,代码一行都不用改。

相关文档

可访问性增强功能已加载,支持焦点管理、键盘导航和屏幕阅读器
页面已加载完成,可访问性功能已启用