镜头与视场角(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.6mm 鱼眼需要软件校正
- 暗角:周边光线不足,四角发暗
- 边缘锐度下降:镜头光学分辨率限制
- 最近对焦距离不变:仍 ~60cm(受限于镜头结构)
- 对焦深度变化:广角景深大,望远景深小
微距能力
原装镜头的微距问题
- 最小对焦距离 ~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 输出普通白光当补光(无红外效果)
镜头更换步骤
⚠️ 操作需要烙铁。新手请慎重。
- 拆外壳:MiBee 板子有塑料外壳
- 取下原镜头:M12 接口逆时针旋转
- 焊下镜头座上的 22pF 电容(部分镜头座带)
- 焊上新镜头:注意对齐螺纹
- 调整对焦:临时通电,转动镜头直到画面最清晰
- 固定:滴 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 镜头拧上去即可,代码一行都不用改。
相关文档
hardware.md- 板级硬件规格performance.md- 分辨率与 FPS 关系capabilities.md- 功能总览