看上去很⽜逼但实际上没什么卵⽤的⽹络摄像头制作教程
1
笔者⼀直信奉这样⼀句话:
没有什么事是理所当然的。
最近两周的经历再次验证了这句话。故事还得从⼀张图⽚说起......
某⽇,笔者⾛在街上,看到路边躺着⼀只猫猫,腿就像灌了铅似的迈不动了,兴奋地搓了搓⼩⼿⼿就想上去撸⼀番。可⼩家伙警惕得很,瞅着笔者靠近了,⽴马翻了个⾝⼦撅起屁股,随时准备逃⾛。
哎呀,今天遇到了只贞洁烈猫啊。
没办法,只好掏出⼿机,拍了张照⽚发到朋友圈,悻悻⽽归。
就在按下【发表】的⼀瞬间,脑中突然出现⼀个闪念:这个照⽚到底是怎么拍出来的啊?(这和撸猫到底有什么关系啊喂!捂脸笑)恰巧单⽚机⼜是笔者的业余爱好,那这次就来做个⽹络摄像头吧。
想法就这样萌⽣了。
本以为搞起来会很轻松(不就是摄像头拍出画⾯上传到⽹络么),没想到拉开了长达两周噩梦的帷幕。打个⽐⽅,你以为前⾯只是⼀个⼩⽔洼,本想上去踩⼀踩,没想到整个⼈就下去了。
那么希望这篇⽂章,能让你瞥见那些,习以为常的表象背后发⽣的事情,毕竟,没有什么事是理所当然的。
FBI Warning
笔者也只是菜鸡,亦是第⼀次涉猎这⼀领域,出现纰漏在所难免。希望读者保留⾃⼰的判断,尽信书不如⽆书。
2
灯光熄灭,聚光灯亮起。
咳咳。
⼀阵短暂的回啸,观众们安静了下来。
⼥⼠们,先⽣们,欢迎观赏本次演出!下⾯,有请本期的嘉宾,登~场~(汽笛声X4):
不被⼈理解,却渴望被⼈理解的单⽚机开发板——Arduino UNO R3!
1.jpeg 拥有能穿透⼈⼼,直达灵魂深处眼眸的摄像头,OV7670!
2.jpeg ⾝体虽然变⼩,但头脑依然灵活的Wifi模块,ESP01!
3.jpeg
最后出场的是,平平⽆奇的母对公杜邦线!
滚动照片视频怎么制作杜邦线:就我没资格配图是吧(对!哦,对了,这些线越短越好,不为什么!)今天的嘉宾会为我们带来怎样精彩的演出呢?ARE YOU READYYYYYY?
4.jpeg
3
⾸先来攻克最困难的部分,图像传感器。
别急,正所谓知其然,知其所以然,这之前,还是先简单聊聊图像传感器的⼯作原理。
但在这之前,⾸先抛出两个概念(STOP!禁⽌套娃):数字信号,模拟信号。
概念笔者就不抄了,这⾥只需要知道,计算机不能直接处理模拟信号,只能处理数字信号就⾏。⽽图像传感器的作⽤,正是将模拟信号转换为数字信号。
知道⼈的眼睛是如何看到颜⾊的吗?⼈的视⽹膜上有两种感官细胞,视秆细胞,视锥细胞。视秆细胞能感受明暗,视锥细胞则有三种,分别⽤来感应红,绿,蓝。看到这⼉是不是有⼀种恍然⼤悟的感觉?没错,⾃然界所有颜⾊都可以由这三种颜⾊组合形成,也因此,这三种颜⾊被成为光学三原⾊,但它有⼀个更家喻户晓的名字,那就是RGB!
有时候,⼈和机器之间的界限,是相当模糊的。⼈体器官的⼯作,⼤部分机器是可以模仿的,这也意味着⼤部分⼈体器官也可以被机器代替。
图像传感器⼤抵也是模拟眼球的⼯作⽅式。
这⾥简要概括⼀下转换过程吧(胡诌警告!这⾥特指CMOS传感器),闭上眼睛想象⼀下:
在⼀层正⽅形的⼤楼⾥,整整齐齐地划分为若⼲⼩的正⽅形的⼯作隔间,像⼀个正⽅形的表格。
每个隔间有⼀名程序员(感光⼆极管)。
每隔⼀段时间(机器时钟),有产品经理会⼀⾏⼀⾏地到程序员,催促进度(寻址,并接通⽔平开关)。
⼜有⽼板⼀列⼀列地到程序员:饮茶时间饮茶,做⼯时间做⼯,今天的代码什么时候交?(接通垂直开关)
哇靠,你们两个合起来搞我?程序员压⼒⼭⼤(由于同时接通了⽔平,垂直开关,产⽣了偏压)!
此时,天上降下天使(光线),她张开双臂将程序员拥⼊怀中,这让程序员感到慰藉,于是开始疯狂提交代码(偏压⼆极管遇到光⼦产⽣电流)。
产品经理和⽼板满意地点了点头,笑着,带着数据(RGB,光线强弱等)离开了。
每⼀⾏每⼀列依次重复这个过程。
等所有程序员都提交了代码,⽼板把分⽀⼀合并,远远看去,竟凑成了⼀副《春树秋霜图》!
这⼀切只发⽣在⼀瞬,⽽瞬间即是永恒。
稍稍把时间放慢⼀点的话,⼤概可以⽐喻成,从左上⾓向右下⾓倒塌的多⽶诺⾻牌吧。滴⽔成河,聚沙成塔,虽然⼀⽀感光⼆极管什么都做不到,但成千上万⽀⼆极管,就能组成包含整个世界的图象。
当然,还有很多⼯作也在同步进⾏,⽐如浮动扩散,信号放⼤,消除噪⾳等等,展开来说的话,⼜是另外⼀篇⽂章了。
纸上得来终觉浅,绝知此事要躬⾏。是时候展⽰真正的技术啦。
VS - PIN2
XLK - PIN3
PLK - PIN12
SD - A4 还需要⽤连接3.3V单独供电,请在中间安装⼀个10K电阻
SC - A5 还需要⽤连接3.3V单独供电,请在中间安装⼀个10K电阻
D0 ~ D3 - A0 ~ A3 依次对应
D4 ~ D7 - PIN4 ~ PIN7 同上
3.3V - 3.3V
RESET - 3.3V
GND - GND
PWDN - GND
5.jpeg
还记得OV7670左侧的脚针吗?不记得的请退回查看图⽚~其中VS和HS就是控制⽔平,垂直开关的脚针!了解理论还是有⽤的。Arduino调⽤层代码就很简单了。逻辑和上⾯的步骤⼀致,这⾥只给出Fake代码展⽰过程。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论