搜索
bottom↓
回复: 170

做自己的摄像头模块

[复制链接]

出0入0汤圆

发表于 2009-2-16 08:41:04 | 显示全部楼层 |阅读模式
如果想好一些的页面格式或者下载源代码可以到我的个人网站:http://sites.google.com/site/jk36125/Home/wo-deov7640she-xiang-tou-mo-kuai

做这个摄像头本来也很无奈.
因为买不到好的模块啊.
不是太贵就是质量太差,要不就是又贵又差.
所以就想,不如自己做一个好了.
事情就这样定下来了.

从淘宝寄来OV7640的当天就把硬件完成了.
麻烦的其实是软件.OV官方说"为了给第三方开发者空间,所以不提供例程".
所以我只好抱着一个标记着"preliminary"的OV7640文档.看着含糊不清的说明慢慢的尝试.


电路原理图:

(原文件名:OV7640电路原理图.gif)


做完的实物:

(原文件名:实物图.JPG)


在Linux上编写了上位机的程序来采集图象,采用串口 115200,n,8,1 进行通信.


OV7640拍摄的图象:

(原文件名:样片.jpg)


左图为RGB565,QVGA,右图为255级灰度.


关于SCCB的总线协议:

SCCB协议充分展现了产商的协议不统一是一件多么麻烦的事情.
SCCB协议就是 Serial Camera Control Bus. 不晓得它和I2C哪个先出生.
这里只说明单字节操作.

SCCB的单字节写操作协议完全和I2C一样:

起始位 ---> 器件地址(0x42) ---> ACK ---> 内部寄存器地址 ---> ACK ---> 写入数据 ---> ACK ---> 结束位

在I2C总线当中,器件地址的最后一位为 0 时表示为写操作的开始,最后一位为 1 时表示读操作的开始.
所以在使用ARM9例如 AT91系列的TWI总线接口时,器件地址应该等于 0x21(7位),再根据读写操作的选择补充最后一位为1或者为0.

SCCB协议的单字节随机地址读协议比I2C的多出了一个停止位:

起始位 --> 器件地址(0x42) --> ACK --> 内部寄存器地址 --> ACK --> 结束位 --> 起始位 --> 器件地址(0x43) -->ACK --> 数据 --> NOACK --> 停止位

而I2C的单字节随机地址读操作为:

起始位 --> 器件地址(0x42) --> ACK --> 内部寄存器地址 --> ACK --> 起始位 --> 器件地址(0x43) -->ACK --> 数据 --> NOACK --> 停止位

红色标记的读协议就是SCCB总线所特有的.
不管怎样,如果用现成的ARM9外设的I2C接口,只能执行写操作.如果需要读操作需要自己编写SCCB的模拟总线,加上SCCB多生出来的一个停止位.




关于OV系列的寄存器设置:

这个要怪OV,你说不给例程也就罢了吧,连个寄存器的使用说明都没有.许多设置含含糊糊的让人不知所错.
我只好一一尝试.不管怎样,下面的这些寄存器对于采集图象来说是常用的(针对OV7640):

              地址                                          主要用途                                                                  范例值  
              0x11               OV器件时钟分频                                                      0x3f  时钟分频到最大,其余选项为默认
              0x28               选择黑白模式(OV7141)或者彩色模式(OV7640)            0x60 选择黑白模式,其余选项为默认(系统默认为彩色模式)
              0x14               QVGA格式或者VGA格式选择                                    0x24 QVGA输出, 0x04 VGA输出
              0x1F               RGB565或者RGB555格式选择                                  0x11 RGB565输出
              0x12               自动白平衡,RGB和YUV设置                                      0x18 关闭自动白平衡,其余默认

如果在OV7141~黑白模式下设置OV7640彩色模式用到的寄存器会造成图象黑屏.
有一些寄存器的功能有重叠,例如在0x1F设置了RGB565或者RGB55输出,就不需要在0x12中选择RGB输出.




关于硬件的连接方法(for ARM):

   输入线:         HREF   VSYNC   PCLK   Y[7:0]
   输出线:         PWDN  RESET  
   外部时钟:      CLK
   SCCB总线:   TWI等I2C总线(只能写),或者模拟SCCB总线(读写)




关于图象采集:

对于图象的采集需要用到 HREF   VSYNC   PCLK   Y[7:0]
其中  HREF 为行同步, VSYNC为帧同步,PCLK为数据输出的时钟,Y[7:0]为数据总线.
VSYNC出现一次正脉冲说明一帧图象已经准备好,HREF由0-->1说明1行图象数据已经准备好.
采集顺序为:

等待VSNYC的正脉冲 ---> (循环)等待HREF由 0 到 1 ---> (循环)当PCLK由 0--->1的时候采集Y[7:0]上的数据 --> HREF由 1 到 0(一行结束)



关于采集图象的质量:

CMOS的30万摄像头,我本来也不对图象质量报太高期望.
不管怎么说,问题出现在两个方面:

1. 所用的镜头滤镜
2. 图象采集的频率

很难找到和手头芯片一致符合的镜头,某些不合适的镜头的滤镜可能会造成图象的色彩失真.
采集的频率决定了自动白平衡和自动增益的参数设定,如果采集的频率很小,例如1秒钟只采集一幅图象,那么自动白平衡有可能得不到足够的参数而使得图象失 真.这个时候关闭自动白平衡反而会比较好.




关于输出图象格式:

采集到的图象通常有几种格式:  黑白,RGB565,RGB555,RGB原始图象

黑白图象为 255 级灰度,每一个字节的数据对应一个象素.不需要转换.
RGB565的输出顺序为:                             第一字节                     第二字节                 
                                          R4 R3 R2 R1 R0 G5 G4 G3      G2 G1 G0 B4 B3 B2 B1 B0

转换为RGB24:                         R                              G                               B
                            (R4 R3 R2 R1 R0) * 8        (G5 G4 G3  G2 G1 G0) * 4          (B4 B3 B2 B1 B0) * 8

也就是说RGB565的两个字节数据对应一个象素.

RGB555的输出顺序为:                                第一字节                     第二字节                 
                                             X R4 R3 R2 R1 R0 G4 G3      G2 G1 G0 B4 B3 B2 B1 B0



例程:

图象采集:

(原文件名:图象读取代码.GIF)


后记:81楼有代码

出0入0汤圆

 楼主| 发表于 2009-2-16 08:44:42 | 显示全部楼层
发完帖子好像不能修改的样子

出0入0汤圆

发表于 2009-2-16 08:48:01 | 显示全部楼层
不错啊,可以做自己的监控系统了!

出0入0汤圆

 楼主| 发表于 2009-2-16 08:56:43 | 显示全部楼层
就是串口太慢了

出0入0汤圆

发表于 2009-2-16 22:47:44 | 显示全部楼层
usb转串口(pl2301),能到900多k,可以试试

出0入0汤圆

发表于 2009-2-18 12:45:12 | 显示全部楼层
漂亮

出160入0汤圆

发表于 2009-2-18 13:07:13 | 显示全部楼层
不错

出0入0汤圆

发表于 2009-2-18 13:34:44 | 显示全部楼层
ding

出0入0汤圆

发表于 2009-2-18 13:45:22 | 显示全部楼层
顶一个

出0入0汤圆

发表于 2009-2-18 14:12:09 | 显示全部楼层
不錯,頂一個

出0入0汤圆

发表于 2009-2-18 15:43:52 | 显示全部楼层
非常不错
电压=?V
电流=?mA

出0入0汤圆

发表于 2009-2-18 22:53:57 | 显示全部楼层
不错啊!

出0入0汤圆

发表于 2009-2-18 23:24:04 | 显示全部楼层
不错,不知道你这个模块是在哪里买的啊。

出0入0汤圆

发表于 2009-2-20 22:03:00 | 显示全部楼层
厉害啊!

出0入0汤圆

发表于 2009-2-20 23:00:11 | 显示全部楼层
刚在淘宝上搜了下,45块钱  但没把握自己能玩转,所以不敢下手啊! 真羡慕楼主

出0入0汤圆

 楼主| 发表于 2009-2-20 23:16:19 | 显示全部楼层
to  af00
电压用5V OV7640的功耗是40mw左右






to loves123
这个就是我自己做的模块啊```汗

出0入0汤圆

发表于 2009-2-21 08:50:16 | 显示全部楼层
这个好,有时间也要做一个,到时还得多多请教楼主,

出0入0汤圆

发表于 2009-2-21 11:49:24 | 显示全部楼层
佩服

出0入0汤圆

发表于 2009-2-22 00:14:49 | 显示全部楼层
镜头啥的咋办的?

出0入0汤圆

 楼主| 发表于 2009-2-22 20:23:53 | 显示全部楼层
【18楼】 wswh2o 水之影

用电脑摄像头的那种就可以

出0入0汤圆

发表于 2009-3-2 22:00:09 | 显示全部楼层
用单片机驱动数字摄像头
作者:xlander   发表时间:2008-3-1   阅读次数:9074  
http://www.getproject.com.cn/Article/Show/73.aspx
  

眼下,视频监控已经渗透到各个领域,几乎已经无所不在了,前段时间盛传的地铁情侣拥吻,再次掀起有关公共场合的隐私保护的讨论。不管讨论的结果怎样,那都是社会学层面的讨论,从技术层面来看,就跟枪和炮一样,技术在给社会带来科学进步的同时,也不可避免的给社会带来潜在的威胁。

如果你想在视频监控这个热门领域里捞一把,这里收录的三篇文章会指导你很好的完成入门试验。

( (原文件名:用单片机驱动数字摄像头1.jpg))



先从简单的开始,有关如何驱动数字摄像头,这里有一篇文章《数字摄像头的驱动和接口》,作者采用的单片机是ATmega16,至于摄像头,则采用了ETC公司的摄像头模块C3088,C3088采用的CMOS传感器是Omnivision公司的OV6620,OV6620的分辨率是356*292,适合运算能力较低的单片机使用。作者共享了实验报告和实现代码。不过,作者只读取了传感器的Y通道,所以采集到的图像是黑白的。不过,对于个人试验来说,C3088既然号称是国外进口,价格肯定不会便宜,所以还是从轮子做起好了,既能锻炼自己,又能节省成本,一举两得。

视频采集在视频领域技术难度并不大,所以想凭视频采集在视频领域里混饭吃,是非常难的,基本属于温饱,饿不死,但也不会暴富。要想发财,就得下功夫,给视频采集来个“粗加工”,也就是图象处理和图像识别,比方说车牌识别、人脸识别、或者车站门口的行李扫描,这些产品都需要用到图像处理和识别技术,所以,我们再来看这个稍微复杂一点的,AVR摄像头是基于GNU GPL的开源项目,采用ATMega8单片机,通过图像处理技术,摄像头最多可以跟踪8个不同的物体,这个摄像头最物尽其用的场合非机器人足球莫属。这个摄像头识别物体的方法是颜色识别,属于图像识别的入门阶段,拿来学习刚刚好。下载原理图和代码。

掌握了图像识别,你过上了小康生活了,比起出手阔绰的富豪们,你还需要继续努力,这一次算是“深加工”好了。接下来的这一个就非常复杂了,来自康奈尔大学的自动搜索机器人,他们采用的摄像头模块也是C3088,这个机器人既可以通过无线遥控,也可以自动寻找和收集红色的小球。这是一个非常复杂的项目,除了车辆的组装以外,还涉及机器视觉、运动控制、无线通讯等等,具体的内容不是几句话可以说清楚地,不过,他们共享了所有的设计材料,这些材料都可以在这里下载得到。如果你看到这样的项目后,产生一种发自肺腑的绝望,感觉自己永远没有出头之日的话,那就大可不必了,其实老天爷对人是公平的,像这样的工程不是一个人做得了的,就像长城不是一个人修的一样。假如可以在视频采集领域赚1块钱,只需要你一个人就够了,而在机器人领域可以赚100块钱,但是你需要与另外的99个人合作才行,你的所得也还是1块钱。所以,你所得到的,永远都是你所付出的,踏踏实实做好、做强自己擅长的工作就足够了。

最后来看看自动搜索机器人的工作成果:


(原文件名:用单片机驱动数字摄像头2.jpg)




(原文件名:用单片机驱动数字摄像头3.jpg)

有关cmucam3实际采集到的图像见,http://robotdevices.blogspot.com/

出0入0汤圆

发表于 2009-3-2 22:00:46 | 显示全部楼层
另一个开源摄像头
作者:xlander   发表时间:2008-3-11   阅读次数:3166  



(原文件名:数字摄像头4.jpg)


用单片机驱动数字摄像头里提到的AVR摄像头是基于ATMega8的,今天收录的CMUcam则是基于NXP LPC2106的,这个摄像头已经升级到第三代了。  

CMUcam3在硬件上并不开源,而是软件开源,而且还提供了丰富的实例,比方说颜色跟踪、移动探测、以及一些基本的图像压缩和处理算法等等。  

CMUcam3虽然在硬件上并不开源,但是保留了重新烧写固件的接口,用户可以修改代码并升级新的固件。网站上还提供了相关软件(包括编译器、烧写器、实例代码等),供用户下载。http://www.cmucam.org/wiki/Downloads

出0入0汤圆

发表于 2009-3-3 22:26:20 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-3-16 08:32:41 | 显示全部楼层
顶啊

出0入0汤圆

发表于 2009-3-16 09:09:05 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-3-16 09:22:31 | 显示全部楼层
Mark~~~

出0入0汤圆

发表于 2009-3-16 09:22:43 | 显示全部楼层
终于有人玩摄像头了,顶顶

出0入0汤圆

发表于 2009-3-20 11:12:58 | 显示全部楼层
mark,真的很强大,我项目完成有空好好看。

出0入0汤圆

发表于 2009-5-25 23:36:57 | 显示全部楼层
mark很强大,有没考虑输出AV信号,缩小体积,出售模块

出0入0汤圆

发表于 2009-5-25 23:40:50 | 显示全部楼层
楼主的网页打不开,能否重新给过

出0入0汤圆

发表于 2009-5-25 23:51:08 | 显示全部楼层
mark很强大,有没考虑输出AV信号,缩小体积,出售模块  
-----
只要AV输出就没那么麻烦了,监控市场上输出AV信号的模块多的是

出0入0汤圆

发表于 2009-6-1 12:07:30 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-6-1 13:00:03 | 显示全部楼层
佩服,高高手啊!!!!

摄像头都热转印,佩服,佩服

出0入0汤圆

发表于 2009-8-24 22:57:30 | 显示全部楼层
好文章 帮了我大忙啊 本人最近也在弄摄像头做识别的 顶了

出0入0汤圆

发表于 2009-8-25 09:58:13 | 显示全部楼层
mark 想问一下楼主电路照片中间正方形那个是不是CCD元件啊?

出0入0汤圆

发表于 2009-9-26 00:28:58 | 显示全部楼层
不用镜头就可以吗?

出0入0汤圆

发表于 2009-9-26 21:18:05 | 显示全部楼层
jh

出0入0汤圆

发表于 2009-9-26 21:29:37 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-9-29 12:59:56 | 显示全部楼层
不错

出0入0汤圆

发表于 2009-9-29 13:48:49 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-9-29 13:51:42 | 显示全部楼层
帮顶,

出0入0汤圆

发表于 2009-9-29 19:44:15 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-9-29 20:10:47 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-9-30 11:27:26 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-11-19 11:03:21 | 显示全部楼层
好呀

出0入0汤圆

发表于 2009-12-3 23:58:17 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-12-4 00:08:49 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-12-4 07:56:32 | 显示全部楼层
不错

出0入0汤圆

发表于 2009-12-4 08:06:17 | 显示全部楼层
很好很强大。

出0入0汤圆

发表于 2009-12-4 11:27:58 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-1-2 13:48:13 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-1-2 22:15:54 | 显示全部楼层
关注一下

出0入0汤圆

发表于 2010-1-3 00:29:25 | 显示全部楼层
呵呵,顶一下

出0入0汤圆

发表于 2010-1-3 11:00:53 | 显示全部楼层
mark,有谁能把上面的资料打包一下方便大家下载啊,我都不知道下那个

出0入0汤圆

发表于 2010-4-17 17:35:17 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-18 10:16:14 | 显示全部楼层
不错啊

出0入0汤圆

发表于 2010-4-18 12:46:26 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-18 15:04:53 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-19 16:13:01 | 显示全部楼层
很不错哦
mark之!

出0入0汤圆

发表于 2010-4-22 14:25:18 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-22 14:38:12 | 显示全部楼层
mark

顺便问一下有人推荐一下具有Global Shutter功能的摄像头模块么?

出0入0汤圆

发表于 2010-4-22 14:59:08 | 显示全部楼层
记号

出0入0汤圆

发表于 2010-4-22 15:07:19 | 显示全部楼层
备份

出0入0汤圆

发表于 2010-4-22 15:38:29 | 显示全部楼层
不错记号~

出0入0汤圆

发表于 2010-5-15 21:47:07 | 显示全部楼层
楼主您好,我现在也想做一个摄像头,您能不能给点指导,QQ519349341

出0入0汤圆

发表于 2010-7-9 15:48:50 | 显示全部楼层
写得非常的好,顶~

出0入0汤圆

发表于 2010-7-11 07:19:47 | 显示全部楼层
mark 摄像头

出0入0汤圆

发表于 2010-7-29 15:05:08 | 显示全部楼层
写得确实很不错!

出0入0汤圆

发表于 2010-8-17 02:49:25 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-8-17 08:51:29 | 显示全部楼层
MARK!!

出0入0汤圆

发表于 2010-8-17 09:12:02 | 显示全部楼层
牛X

出0入0汤圆

发表于 2010-8-17 09:25:04 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-8-17 12:54:54 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-8-17 14:01:46 | 显示全部楼层
顶一个

出0入0汤圆

发表于 2010-8-17 14:08:52 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-14 17:02:35 | 显示全部楼层
顶一个

出0入0汤圆

发表于 2010-9-14 22:08:40 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-14 23:21:27 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-15 08:24:49 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-15 09:17:51 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2010-9-15 09:45:27 | 显示全部楼层
1年前的老帖子居然被顶到首页了······

那楼主我再小挖一下坟好了。嘿嘿。

出0入0汤圆

 楼主| 发表于 2010-9-16 09:07:42 | 显示全部楼层
一年后看到自己发的贴子,感触颇多,补上迟到的源代码:

SCCB总线驱动:
点击此处下载 ourdev_583519EWE4PO.rar(文件大小:2K) (原文件名:SCCB.rar)

AT91RM9200通用IO读取图像源代码(汇编):
点击此处下载 ourdev_583520UIEZGI.rar(文件大小:978字节) (原文件名:vison.rar)

出0入0汤圆

发表于 2010-9-16 09:48:39 | 显示全部楼层
赞一个 lz 辛苦

出0入0汤圆

发表于 2010-9-16 14:27:43 | 显示全部楼层
mark一下

出10入0汤圆

发表于 2010-9-17 16:47:44 | 显示全部楼层
这种封装如何焊接啊????
楼主给点意见来啊....
MASK!~

出0入0汤圆

发表于 2010-9-20 15:59:16 | 显示全部楼层
mask

出0入0汤圆

 楼主| 发表于 2010-9-21 22:18:20 | 显示全部楼层
回复【84楼】dgtg  
-----------------------------------------------------------------------
非常好焊接,只要用稍细的烙铁在每个焊盘处轻触一下就可以。不需要用拖焊。但是要注意静电防护,最好待个静电手环。

出0入0汤圆

发表于 2010-9-22 01:08:15 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-10-8 12:51:48 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-10-8 12:59:47 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-10-8 13:00:54 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-10-8 15:26:56 | 显示全部楼层
向你学习

出0入0汤圆

发表于 2010-10-8 15:38:18 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-10-10 19:59:43 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-11-29 11:13:53 | 显示全部楼层
记号!ov7640

出0入0汤圆

发表于 2010-12-24 03:11:01 | 显示全部楼层
20V2A

出0入0汤圆

发表于 2011-1-11 14:16:44 | 显示全部楼层
ov7640

flag!!

出0入0汤圆

发表于 2011-1-12 00:22:05 | 显示全部楼层
再顶

出0入0汤圆

发表于 2011-1-19 18:39:43 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-1-19 18:40:10 | 显示全部楼层
mark
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-18 12:55

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表