下面我来介绍一篇使用单片机控制采集130W像素摄像头的方法。本章使用的摄像头为青青子木ZM系列,被动型130W像素,防雨广角型摄像头,如下图:
一、该款摄像头输出为4芯导线,红色接+5V,黑色接地,黄线接RXD,绿线接TXD。我们再来看一下该款摄像头的拍照控制指令,获得指定包控制指令及更改摄像头波特率控制指令,如下图:
二、摄像头的默认波特率是115200比特率,如果我们需要对摄像头的波特率进行更改的话,按照如下步骤进行:
1、首先我们链接好摄像头和单片机串口
使用单片机以115200的波特率向摄像头发送测试指令,UI#(字符型)。
如果通讯正常,摄像头回复U?#,代表RXD和TXD链接正确。
2、进行程序编码
1)建立波特率表
unsigned char Bud115200[5] = {0x55,0x49,0x01,0x35,0x23}; // 115200
unsigned char Bud57600[5] = {0x55,0x49,0x01,0x34,0x23}; // 57600
unsigned char Bud38400[5] = {0x55,0x49,0x01,0x33,0x23}; // 38400
unsigned char Bud19200[5] = {0x55,0x49,0x01,0x32,0x23}; // 19200
unsigned char Bud14400[5] = {0x55,0x49,0x01,0x31,0x23}; // 14400
unsigned char Bud9600[5] = {0x55,0x49,0x01,0x30,0x23}; // 9600
01 代表 1号摄像头,厂家默认摄像头编号为0
30至35 代表不同的波特率设置代码
2) 建立发送函数
void TxdBudTable(unsigned char *BudTable,unsigned char Num)
{
unsigned char i = 0;
for(i=0;i<Num;i++)
{
发送串口数据 =BudTable[i];
}
}
如果摄像头接收了该指令会返回UI#(字符型)
三、设定好波特率后,我们来控制摄像头拍照,下面是控制摄像头拍照的代码解释
1)unsigned char PaiZao640480[7] = {0x55,0x48,0x01,0x33,0x00,0x02,0x23};
2)我们按照第2步的发送数据函数将PaiZao640480表格数据发出,并接收返回数据,正确的返回数据应如下图中内容:
四、确认好以上信息后,我们再来发送请求第一包图像数据指令,方法同上
1)unsigned char PaiZao640480[7] = {0x55,0x45,0x01,0x01,0x00,0x23};
正常的返回数据应该为525个字节数据,前11字节代表第一包信息,后两字节代表校验和,图像数据从FF D8开始,我们按照此方法将每包的数据读取回来,并存储,直到读完最后1包,最后1包结尾为FF D9,我们将FFD8-FFD9中间的图像数据,使用图像还原软件来解码,直接就能看到拍照后的图像。
五、以上为该摄像头的操作方式,如果有什么不明白可以关注我或者给我留言,我也会耐心解答大家,希望对大家有所帮助.