模块简介
基于i.MX RT的可编程视觉模块有以下特点
主控芯片使用NXP i.MX RT1062,600MHz Cortex-M7,1MB RAM,4MB Flash (通过QSPI扩展)
感光芯片使用OmniVision OV7725,这是一款快速 CMOS感光芯片,最高分辨率 VGA (640x480)
在尺寸、扩展引脚、使用习惯和软件开发接口上兼容著名的OpenMV3 M7 Cam。关键接口包括SPI, I2C, UART
集成了Micropython运行环境,包括编译器、装载器和虚拟机。使用开发效率极
高的Python语言做应用程序的二次开发。
应用程序(使用Python编写)和数据存储在外部扩展的TF卡中。
模块连接USB后,电脑识别出优盘。可以使用任意文本编辑器开发程序。
兼容OpenMV IDE的调试监控协议,实现一键下载、秒见效果、监控帧缓冲、虚拟串口控制台。
环境准备
模块购买
购买的淘宝链接为:
参赛选手专享优惠价
大赛组委会为选手们争取到了优惠价,原价399元,优惠价349元,包邮。购买时,向卖家说明购买目的用于智能车竞赛,以如下格式:“学校:xxx 指导老师:xxx购买数量:x 是否需TF卡:Y/N”并拍下商品,请卖家更改价格为优惠价349元。
注1:如果需要出具发票,需另加税点。
注2:模块需要TF卡,默认发货不包含TF卡。如需TF卡,卖家提供高质量的32G卡,另加50元。
注3:默认提供2.8mm焦距的M12镜头。也可以指定其它焦距或从网络采购其它焦距M12镜头。焦距越长放大倍数越高。注意焦距影响距离计算,并且过长的焦距有可能使定位码无法完整出现在视野中。
软件安装
文本编辑器
只需能编辑Python源代码的编辑器即可,如Notepad++,Visual Studio Code等。
(强烈建议)OpenMV IDE
本模块实现了OpenMV IDE的调试监控协议。为了体验无需存盘一键下载并且监视模块帧缓冲的功能,以及启用虚拟串口功能,强烈建议使用OpenMV IDE加快开发。
OpenMV IDE的下载页面链接:。支持多种操作系统的安装包。
注:在模块连接OpenMV IDE期间会占用虚拟串口,无法同时使用串口上的Python交互式命令环境。
使用OpenMV IDE开发与测试
(首次)安装OpenMV IDE。注:本模块尚未支持OpenMV IDE的固件升级功能。
插入TF卡。注:如果卡里包含,本模块会在上电后自动执行。
使用USB线连接电脑上的USB口和本模块的USB micro口。这会使模块上电,红灯闪烁约2秒模块开始工作。
注:首次上电后,系统可能花较长时间(可能超过1分钟)来安装和配置驱动,请耐心等待。若中途取消安装可导致驱动安装失败。如果是这样,建议拔下电源,重装OpenMV IDE再上电。
打开OpenMV IDE,待左下角的变成 (右上多出了USB符号)时,
即可点击此按钮,连接OpenMV IDE和本模块。
模块的扩展信号
模块引出了10个扩展引脚,可复用为多种功能。其中管脚名与OpenMV Cam相同,功能1除UART外与OpenMV Cam相同,但CPU名并不相同——因为MCU不同。
正面左边
正面右边
注:DCMC(控制直流电机)和Servo(控制舵机)虽然在底层都是把PWM进一步封装的API,但是仍然以独立功能的身份出现。
注:灰色的字体的功能,如PWM, DCMC, Servo, CAN, RPM(转速), SRPM(有向
转速)暂未支持。
注:复用功能以程序最后的配置为准. 例如,若先配置引脚P8为Pin (GPIO), 后又配置UART4,则P8脚先用于GPIO, 后被UART4占用为接收数据(RXD4)。
教程资源
由于本模块高度兼容OpenMV Cam,而OpenMV Cam又包含了Micropython运行环境,在网络上大量的OpenMV教程和Micropython教程均可参考,资源非常丰富,下面列举了一些:
OpenMV Cam在中国区的代理:,有很多优质中文教程和指南
中文快速上手指南:
中文Micropython语言:
英文Micropython语言:
April-Tag专题介绍
本模块的April-Tag检测功能继承自OpenMV的算法,可以检测标签号、标签偏角,以及通过标签外接矩形判断与标签的倾角,还可根据镜头焦距与标签在视野中的大小判定与标签的距离。
OpenMV IDE中包含了April-Tag的示例”find apriltags”供参考,亦可参考教程
与OpenMV Cam的区别
OpenMV Cam的软件以MIT开源协议授权,本模块移植了OpenMV软件的全部算法部分,这部分是完全兼容的。
硬件上,OpenMV使用的是STM32F7/H7,并且集成了Micropython针对STM32的移植和硬件操作模块“pyb”。本模块亦实现了pyb的主要功能(见模块扩展信号节图中的黑色字体功能)。
pyb和machine模块中并不包含和Pyboard/OpenMV Cam等板子的全部功能,但是不影响创意组比赛的使用需求。
本模块只支持TF卡上的文件系统,不支持使用内部Flash模拟,因此TF卡是必备的。
OpenMV Cam有很多扩展板,本模块支持其中的LCD Shield。
本模块还包含了可选的9轴运动传感器MPU9250,OpenMV Cam不包含。如需使用,会占用I2C扩展口,注意I2C slave地址不要与它冲突。
常见问题
图像对比度差
建议使用黑色电工胶布粘上模块背面的扩展口(粘在M12底座的两个定位螺丝口中间,如上文照片所示)。
图像颜色发灰(饱和度低)
旋下M12镜头,检查背面是否粘有红外截光片。
图像中有污点
旋下M12镜头,清洁OV7725芯片表面。
OpenMV IDE中运行Hello world示例时图像刷新率低
可以适当加延时以给IDE更多机会刷新帧缓冲:
import utime
在主循环最后添加 “_ms(10)”。具体时间可调整,一般在5-10之间。
注:在实际使用时建议去掉这个延时。
连接USB后没有识别出优盘
这应该是SD卡初始化失败导致的。在板子上按下复位按钮或重新上电一般会解决问题,亦可能TF卡质量差/损坏。
摄像头图像有(蓝色)噪点
这是因为默认的像素时钟为OV7725的上限(60MHz),当环境的电磁干扰较大时容易
出现此问题。可以通过以下方法调整:
_framerate(0<<9|N<<12) ,建议N的取值为1-7(不要设为0!),此时,像素时钟频率为 96MHz / (N+1),分别是 48M, 36M, 24M, 19.2M, 16M, 13.7M, 12M。
注:此方法只适用于本模块。
注:若像素时钟过低,会影响图像刷新率。
摄像头图像阴暗
可在默认启用auto gain的情况下跳过帧一段时间,如以下代码所示:
()
…
_frames(time = <时间(单位ms)越长越亮,一般在100-2000之间>)
_auto_gain(False)
若仍然偏暗,可以同样通过降低像素时钟来解决,参考“摄像头图像有(蓝色)噪点”的解决方法
在暗室中即使打开红外LED (LED4)仍无法显示图像
需要旋下M12镜头,拆除背面的红外截光片。注意,这是破坏性的操作。
购买时缺货
万一缺货并且急用,可以先购买官方的OpenMV Cam M7/H7临时救急,不影响机器视觉算法的使用,但性能会比本模块低。
刷新模块的固件
注:模块正常使用时不需要这部分内容,仅当模块变砖或的确需要新固件的功能时才会用到。您需要安装KEIL uVison5.20以上版本 (MDK)软件,并在软件中安装i.MX RT1060的Pack,以及J-Link调试器来执行这部分操作。
本模块的固件基于C语言的KEIL工程,开放源代码,并引出了适用于Cortex-M7核的SWD调试接口。可通过KEIL生成固件并通过J-Link烧写固件。
模块源代码位于github:
注意:务必选定分支”omv_initial_integrate”,不要使用默认的”master”分支!
克隆或下载一个压缩包。然后使用KEIL打开源码树中的 \\ports\\prj_keil_rt1060\\jx,编译(约2-4分钟),编译前确保选中“debug_flexspi” Target
使用杜邦线连接J-Link和本模块的调试接口,分别是
6 (GND) -> GND (J1.6)
1 (VCC) -> 3.3V (J1.5) (可选,若使用USB供电可不连接)
7 (SWCLK) -> SWC (J1.2)
9 (SWDIO) -> SWD (J1.3)
在KEIL里点击菜单栏上的按钮,等候1-2分钟即可擦除和下载完毕
下载完毕后需重启本模块方使新固件生效
注意:若烧写中途失败,可导致模块无法再启动,烧写前务必确保J-Link与模块的连接是稳定可靠的。
刷固件中途失败或其它原因导致模块无法启动的补救
1. 用电烙铁先去掉电阻R4(正面,镜头底座左下),R2(背面与R4接近的位置);
2. 短接R1(在R4旁边)和R5(在R2旁边)
3. 重新连接J-Link,在KEIL中重新下载程序固件;
4. 断开R1, R5,
5. 重焊R2和R4,或者直接短接。
具体原理可参考原理图(omvrt1_)中的“BOOT”部分介绍,截图如下,默认的启动方式是”Internal Boot(NormalBoot)”, 补救时改用”Serial Download(Bootloader)”,请勿尝试其它启动方式!
若补救后仍然无法启动或无法刷固件,则很可能硬件已经损坏。
因篇幅问题不能全部显示,请点此查看更多更全内容