2、硬件准备:USB转串口模块选型、杜邦线连接、摄像头模块(OV2640)与MCU的接线
好,咱们开始动手之前,先把家伙事儿备齐。硬件准备这块,说简单也简单,说坑也多。我见过不少新手,代码写得飞起,结果一上电,串口没数据,摄像头黑屏——最后发现是线没接对,或者模块本身就不兼容。
这一节,咱们把USB转串口模块、杜邦线、OV2640摄像头和MCU之间的接线,掰开揉碎了讲清楚。
2.1 USB转串口模块选型:别小看这个“小东西”
USB转串口模块,说白了就是把电脑的USB信号转成MCU能识别的UART串口信号。你想想看,MCU没有USB口,怎么跟电脑聊天?全靠它。
我个人习惯用CH340G或者CP2102方案的模块。为什么?
- CH340G:国产,便宜,稳定。淘宝上几块钱一个,项目里用着不心疼。我最早做调试时用的就是它,从来没掉过链子。
- CP2102:稍微贵一点,但驱动兼容性更好。尤其是Mac电脑,CH340有时候要折腾驱动,CP2102基本插上就能认。
另外,模块的接口电平一定要匹配。OV2640和大多数MCU都是3.3V逻辑,所以你的USB转串口模块也必须是3.3V电平的。5V的模块直接接上去,可能会烧坏摄像头。
2.2 杜邦线连接:看似简单,实则暗藏玄机
杜邦线,就是那种一头是针、一头是孔的彩色线。嗯,这里要注意:杜邦线分“公对公”、“公对母”、“母对母”。
我建议你准备一盒“公对母”和“母对母”的线。为什么?
- MCU开发板上的排针是“公”的,所以需要用“母对公”的线(也就是一头母、一头公)来连接。
- USB转串口模块上的排针也是“公”的,同样用“母对公”线。
- 摄像头模块的接口通常是“母”的排母,所以用“公对公”线插进去。
你看,是不是有点绕?我刚开始也搞混过。后来我学乖了,直接买那种“一盒装”的杜邦线套装,各种类型都有,省心。
2.3 摄像头模块(OV2640)与MCU的接线
OV2640摄像头模块,常用的接口是DCMI(数字摄像头接口)或者直接用GPIO模拟时序。这里我以最常见的STM32F4系列MCU为例,讲一下接线。
OV2640的引脚不算多,但每个都有讲究。咱们列个表,一目了然:
| OV2640引脚 | 功能 | 接MCU引脚 | 备注 |
|---|---|---|---|
| VCC | 电源正极 | 3.3V | 必须稳定供电,电流约100mA |
| GND | 电源地 | GND | 共地,所有模块的GND连一起 |
| SCL | I2C时钟 | PB6 (I2C1_SCL) | 用于配置摄像头寄存器 |
| SDA | I2C数据 | PB7 (I2C1_SDA) | 同上 |
| VSYNC | 帧同步信号 | PA4 | 高电平表示一帧开始 |
| HREF | 行同步信号 | PA6 | 高电平表示一行数据有效 |
| PCLK | 像素时钟 | PA5 | 每个上升沿输出一个像素 |
| D0-D7 | 8位像素数据 | PC0-PC7 | 并行数据,注意顺序 |
| XCLK | 主时钟输入 | PA8 (TIM1_CH1) | MCU提供12-24MHz时钟 |
| PWDN | 掉电模式 | GND | 接地,保持正常工作 |
| RESET | 复位引脚 | 3.3V | 拉高,不复位 |
你看,一共就这么多线。但实际接线时,有几点要特别注意:
2.4 接线实操中的几个关键点
第一,供电要稳。 OV2640工作时电流大概在80-120mA之间。如果你用USB转串口模块上的3.3V输出供电,一定要确认模块的供电能力。我遇到过的情况是:模块标称输出500mA,实际接上摄像头后电压掉到2.8V,图像直接花屏。后来我单独用了一个3.3V LDO给摄像头供电,问题解决。
第二,I2C上拉电阻。 OV2640的SCL和SDA引脚是开漏输出,需要外部上拉电阻。很多摄像头模块自带了4.7kΩ上拉电阻,但有些便宜的模块没有。如果你发现I2C通信不稳定,记得在SCL和SDA上各加一个4.7kΩ电阻到3.3V。
第三,时钟线要短。 XCLK是主时钟,频率通常在12MHz到24MHz之间。这个信号对噪声比较敏感。我建议你把XCLK的杜邦线控制在10厘米以内,并且远离电源线。否则,时钟抖动会导致图像数据错位。
2.5 一个典型的接线示意图
为了让你更直观地理解,我描述一下典型的接线方式:
USB转串口模块 <---> MCU (STM32F4)
TXD ---------> PA10 (USART1_RX)
RXD <--------- PA9 (USART1_TX)
GND ---------> GND
3.3V ---------> 3.3V (给MCU供电,如果MCU板子自带供电则不用)
OV2640摄像头 <---> MCU (STM32F4)
VCC ---------> 3.3V (独立LDO供电)
GND ---------> GND
SCL ---------> PB6
SDA ---------> PB7
VSYNC --------> PA4
HREF --------> PA6
PCLK --------> PA5
D0-D7 --------> PC0-PC7
XCLK ---------> PA8
PWDN ---------> GND
RESET --------> 3.3V
你看,线虽然多,但逻辑清晰。我建议你按照这个顺序,一根一根地接。接一根,在表格里打个勾。这样不容易漏,也不容易错。
2.6 最后说两句
硬件准备这块,说白了就是“慢工出细活”。别急着上电,别急着跑代码。先把线接好,用万用表确认一遍,再通电。我见过太多人,代码调了一整天,最后发现是杜邦线接触不良。
嗯,这一节就到这里。下一节咱们开始讲软件配置,到时候你会感谢今天认真接线的自己。