开源了“最佳”的机器视觉模块!成本50出头!
![](http://image.uc.cn/s/wemedia/s/upload/2024/b1f97ed68512022e8a96eff41a7f8aca.gif)
在各项竞赛中,经常会出现因不规范使用OpenMV而导致其烧毁 的情况!
一个两个,也就算了!这情况一多,我就在想——我是否能做出一个更“完善”更“符合使用需求”的版本呢?是否能尽量避免这样的情况呢?
于是,我参考开源工程OpenMV,对导致烧毁的原因进行总结,对其原理图进行部分改善,并对电路进行了重新绘制。
目前,我已将优化的方案开源!文中我也会分享——为什么OpenMV烧毁现象普遍存在?
![](http://image.uc.cn/s/wemedia/s/upload/2024/00d7b5e1c27a40b5ed69fbd78eb0bbf8.jpg)
![](http://image.uc.cn/s/wemedia/s/upload/2024/d9224018dbfefb2bfcb2c3802a681f4b.jpg)
原理图_CloseH7
![](http://image.uc.cn/s/wemedia/s/upload/2024/6ff192ad81ab30bbb55ac47bf24dca90.jpg)
PCB图_CloseH7
![](http://image.uc.cn/s/wemedia/s/upload/2024/8113bb88584244e2259759d29fbe1a39.jpg)
原理图_OV5640
![](http://image.uc.cn/s/wemedia/s/upload/2024/6f168d2b621095b76c08a6da64119b28.jpg)
PCB图_OV5640
![](http://image.uc.cn/s/wemedia/s/upload/2024/db240299b5a86ac3869e8dd6822f5120.png)
原理图_ATWINC1500
![](http://image.uc.cn/s/wemedia/s/upload/2024/6dd779d122f68832fe847ce4afd28a82.jpg)
PCB图_ATWINC1500
![](http://image.uc.cn/s/wemedia/s/upload/2024/53e763e4ed37408a1068b72ae7382a89.jpg)
原理图_ST7735_1.8inch
![](http://image.uc.cn/s/wemedia/s/upload/2024/f5c7fa4bf6edaf5e4d9c705fdabb5be2.jpg)
PCB图_ST7735_1.8inch
![](http://image.uc.cn/s/wemedia/s/upload/2024/08ad970d302978a45e7eea0db532db14.png)
核心电路设计框图
下面说明一下部分电路的设计原理 和注意事项!
1.双电路切换&DCDC降压电路
![](http://image.uc.cn/s/wemedia/s/upload/2024/0fb4dc1124bd8ecd6d35049c8e2039d4.jpg)
关于系统供电,开发板使用了一颗PMOS管和一颗肖特基二极管组成一个双电源切换电路。
VBUS网络即TypeC供电。
VIN网络即使用开发板上的VIN引脚+板子上的XH2.54mm锂电池接口进行供电。
为什么要设计为<双电源切换电路>呢?
当两个供电网络同时接入系统时,VIN网络会拉高PMOS管的G极将VBUS网络夹断,同时,再通过肖特基二极管对系统进行供电,这能让USB只进行数据传输的职能,可以减少USB接口的负载。
总之系统供电优先级是VIN > VBUS,经过选择判断后,电路将进入DCDC降压电路,输出至3.3V为系统进行供电。
注意!!
由于肖特基二极管D1的存在,在只插TypeC数据线进行供电时,开发板上的VIN引脚不能当作输出使用!
2.XH2.54锂电接口
这里,可以回答你——为什么OpenMV烧毁现象普遍存在?
根据本人观察到的,很多人烧OpenMV是把电源接反了。
没错,就是如此简单的原因~
所以专门添加了一颗肖特基二极管给VIN网络,可防反接,位置放在锂电池接口正上方!
![](http://image.uc.cn/s/wemedia/s/upload/2024/af073e6fb0c8e96f67dd9cd1a67b56d0.jpg)
![](http://image.uc.cn/s/wemedia/s/upload/2024/29fdfd1c3e96b853983e03a9f55f87a7.jpg)
3.复位和启动
开发板并没有安置BOOT按键以及RESET按键,在电路上采用的是上电复位以及直接从芯片内部启动程序的方案。
那想要进入DFU下载怎么办?
想要进入DFU下载,可用导线或镊子将BOOT引脚拉高。
![](http://image.uc.cn/s/wemedia/s/upload/2024/970e23e000259a1f7184d4df8e97fe32.jpg)
4.SD卡
如何避免开发板读取不到SD卡的情况?
本人使用的是短体TF卡插座,其中的SWITCH引脚能对SD卡进行检测。当插入SD卡时会使SWITCH引脚拉至高电平,而OpenMV所使用的TF卡座上电后SWITCH引脚会被拉至低电平。为了兼容官方固件,本人将芯片内连接SWITCH引脚的PD0直接拉低,SWITCH引脚悬空处理。
就能避免开发板读取不到SD卡的情况!
同时官方固件代码对SD卡的检测只在上电瞬间进行,超时未应答会默认无SD卡插入,所以从功能效果上看,这里的电路更改对实际使用毫无影响。写此条事项是为了提醒其他同学在复刻或设计自己的SD电路时需要注意的坑——不同型号的SD卡座插入检测引脚输出值可能不同。
![](http://image.uc.cn/s/wemedia/s/upload/2024/ec7d60e9466dca82e02be4add8ea870f.jpg)
![](http://image.uc.cn/s/wemedia/s/upload/2024/a132d6187639073fc92c9c429ff31d44.jpg)
5.关于摄像头
摄像头接口采用DVP并行总线,通过24P的FPC排线与STM32主控进行连接,方便他人将其集成到更加刁钻的使用场景中去。
以下是设计制作时的三个主要注意事项!
如何减少不同网络信号之间的干扰?
在电路设计上本人已经将DVP接口数据线进行等长处理,为了保证信号完整性,将摄像头所需的1.5V和2.8V供电集中在了摄像头模块上,在排线上只有3.3V网络和GND与并行数据线同时存在,减少了不同网络信号之间的干扰。
如果无法识别摄像头呢?
可以检查FPC排座以及芯片的焊接是否连锡,电路设计本身没有问题。PS:摄像头可额外购买M12镜头座来搭配不同镜头,通过M2螺丝孔位可与开发板进行固定。
如何避免雪花飘的情况?
由于DVP接口为并行数据接口,抗干扰能力没有MIPICSI这类差分信号接口强,所以FPC排线建议最长20CM,否则会出现雪花飘的现象。
![](http://image.uc.cn/s/wemedia/s/upload/2024/2a4cd9f9663d6b8ad67b903519ef9cdd.jpg)
![](http://image.uc.cn/s/wemedia/s/upload/2024/15ecf1b8b5d2bf692b2668c4dd498095.jpg)
6.其他说明
降压芯片型号为SY8088AAC。芯片外部晶振使用12MHz晶振,板载RGB三色灯和红外补光灯(可替换为白色LED灯)。板载摄像头接口,摄像头可以使用OV5640、OV7725、OV2640等,OV5640帧数在23帧左右,OV2640在13帧左右。引出IO同官方一致。H750代码空间有限,建议外接TF卡,TF卡建议使用32GB内存大小。三、固件烧录步骤开发板可以通过引出的SWD接口,使用STLink进行固件烧写,也可以使用TypeC数据线连接电脑,通过DFU模式进行下载。
前面说过“因为STM32H750存在大量未验证空间,实际ROM远远大于其标注的大小”,如果使用STM32H750作为开发板主控则只能通过DFU模式进行固件下载。
下面就分享一下固件烧录步骤,基于DFU下载方法(8步)。
1.在ST官网下载固件烧录工具STM32CubeProgrammer。
2.用镊子将BOOT和3V3焊盘短接,将BOOT拉高后插入TypeC数据线。在这之前我还是建议你用万用表把板子检查一遍,烧板是小事,要是烧了电脑就嘿嘿嘿~
![](http://image.uc.cn/s/wemedia/s/upload/2024/9521a49e93e26bb625c2de51fe6aa593.jpg)
3.打开设备管理器发现多了一个DFU in FS Mode后说明芯片已进入DFU下载模式,你可以拿开用于拉高BOOT引脚的镊子了。
![](http://image.uc.cn/s/wemedia/s/upload/2024/0a93fab900a493bf2daeaee51f4f5e08.jpg)
4.打开STM32CubeProgrammer,首先点击刷新按钮,会出现所识别到的USB设备,选择连接上的STM32后点击Connect按键 连接,获取芯片数据。
![](http://image.uc.cn/s/wemedia/s/upload/2024/04c058dae55e612cb1f71aa8c1b41b6a.jpg)
5.连接成功后如下图显示。由于本人的芯片已经烧写过一次代码,所以数据寄存器所显示的内容与他人可能有所不同,请忽略。
![](http://image.uc.cn/s/wemedia/s/upload/2024/27180f026e254bfba47b7a540567215e.jpg)
6.点击Open file找到OpenMV4固件所在位置,bin文件位置一般在[你自己的OpenMV路劲\OpenMV IDE\share\qtcreator\firmware\OPENMV4]的文件夹中,实在找不着,在开源的附件获取(第4章会指引前往开源网址)
![](http://image.uc.cn/s/wemedia/s/upload/2024/a2f633012c062941b09fa602ea989f90.jpg)
7.点击Download,等待下载完成,下载成功后如下图所显示。
![](http://image.uc.cn/s/wemedia/s/upload/2024/79be4171635016a1046e8c0e19226514.jpg)
8.下载完成,断开连接后重新复位上电连接至OpenMV IDE。
参考资料:
[1]开源资料https://oshwhub.com/bigbirdzzz/closemv4
— 完 —
嘉立创EDA·头条号
关注我,看一手优质开源项目