本实验基于stm32103开发,实现读取OV2640摄像头采集的图像信息,并存入数组,通过esp8266wifi模块,把数据发送到云端。本例程只提供硬件端代码,服务器端需自己实现。
此外若只用OV2640部分则可把WiFi传输部分注释即可,OV2640和WiFi均作了封装分离,用者自取。部分代码如下:
u8 ov2640_jpg_photo()
{
u8 res=0;
u32 i=0,t=0,j=0,c;
u32 jpeglen=0;
u8* pbuf;
u32 Len=0;
u8 s[4];
OV2640_JPEG_Mode(); //切换为JPEG模式
OV2640_OutSize_Set(OV2640_JPEG_WIDTH,OV2640_JPEG_HEIGHT);
SCCB_WR_Reg(0XFF,0X00);
SCCB_WR_Reg(0XD3,30);
SCCB_WR_Reg(0XFF,0X01);
SCCB_WR_Reg(0X11,0X1);
for(i=0;i<10;i++) //丢弃10帧,等待OV2640自动调节好(曝光白平衡之类的)
{
while(OV2640_VSYNC==1);
while(OV2640_VSYNC==0);
}
while(OV2640_VSYNC==1) //开始采集jpeg数据
{
while(OV2640_HREF)
{
while(OV2640_PCLK==0);
ov2640_framebuf[jpeglen]=OV2640_DATA;
while(OV2640_PCLK==1);
jpeglen++;
}
}
pbuf=(u8*)ov2640_framebuf;
for(i=0;i>24);
s[1]=(u8)(((Len)&0xff0000;)>>16);
s[2]=(u8)(((Len)&0xff00;)>>8);
s[3]=(u8)((Len)&0xff;);
for(c=0;cDR=s[c];
while((USART1->SR&0X40;)==0);
}
SendRAMDate(Len,pbuf);
}
return res;
}
1