模块简介****None

^i.MX RT1060可编程视觉模块^

基于i.MX RT的可编程视觉模块有以下特点:

(1)主控芯片使用NXP i.MX RT1062,600MHz Cortex-M7,1MB RAM,4MB Flash (通过QSPI扩展);

(2)感光芯片使用OmniVision OV7725,这是一款快速 CMOS感光芯片,最高分辨率 VGA (640x480);

(3)在尺寸、扩展引脚、使用习惯和软件开发接口上兼容著名的OpenMV3 M7 Cam。关键接口包括SPI, I2C, UART;

(4)集成了Micropython运行环境,包括编译器、装载器和虚拟机。使用开发效率极高的Python语言做应用程序的二次开发;

(5)应用程序(使用Python编写)和数据存储在外部扩展的TF卡中;

(6)模块连接USB后,电脑识别出优盘。可以使用任意文本编辑器开发程序;

(7)兼容OpenMV IDE的调试监控协议,实现一键下载、秒见效果、监控帧缓冲、虚拟串口控制台。

开发环境建立1. 模块购买****None购买的淘宝链接为:

识别图中的二维码转至淘宝网店

https://item.taobao.com/item.htm?id=585420906175&ns=1&abbucket=12#detail

参赛选手专享优惠价大赛组委会为选手们争取到了优惠价,原价399元,优惠价349元,包邮。购买时,向卖家说明购买目的用于智能车竞赛,以如下格式:

学校:xxx 是否需TF卡:Y/N并拍下商品,请卖家更改价格为优惠价349元。

导老竞赛现场的参赛同学

师:注1:如果需要出具发票,需另加税点。

xx注2:模块需要TF卡,默认发货不包含TF卡。如需TF卡,卖家提供高质量的32G卡,另加50元。

x购注3:默认提供2.8mm焦距的M12镜头。也可以指定其它焦距或从网络采购其它焦距M12镜头。焦距越长放大倍数越高。注意焦距影响距离计算,并且过长的焦距有可能使定位码无法完整出现在视野中。

买数

量:配置的不同焦距的镜头

x 2. 软件安装(1)文本编辑器只需能编辑Python源代码的编辑器即可,如Notepad++,Visual Studio Code等。

强烈建议安装OpenMV IDE。本模块实现了OpenMV IDE的调试监控协议。为了体验无需存盘一键下载并且监视模块帧缓冲的功能,以及启用虚拟串口功能,强烈建议使用OpenMV IDE加快开发。

OpenMV IDE 以及开发模块

OpenMV IDE的下载页面链接:

https://openmv.io/pages/download支持多种操作系统的安装包。

注:在模块连接OpenMV IDE期间会占用虚拟串口,无法同时使用串口上的Python交互式命令环境。

3. 使用OpenMV IDE开发与测试****None启动安装好的OpenMV IDE。

首次上电后,系统可能花较长时间(可能超过1分钟)来安装和配置驱动,请耐心等待。若中途取消安装可导致驱动安装失败。如果是这样,建议拔下电源,重装OpenMV IDE再上电。

将智能摄像头模块加入USB插头

如果在插入的TF卡里包含main.py,本模块会在上电后自动执行main.py。

使用USB线连接电脑上的USB口和本模块的USB micro口。这会使模块上电,红灯闪烁约2秒模块开始工作。

注:本模块尚未支持OpenMV IDE的固件升级功能。

开OpenMV IDE,待左下角的连接符号带有蓝牙标记后,即可电机次按钮连接视觉模块了。

带有蓝牙标记的连接图标

^将视觉模块通过USB接入电脑,OpenMVP 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在中国区的代理:https://singtown.com/openmv/

有很多优质中文教程和指南

智能车竞赛中不允许使用星通科技代理的视觉模块,

但大家可以使用它进行学习该视觉模块的编程和开发

中文快速上手指南:http://book.openmv.cc/quick-starter.html

快速上手网站资源详细而丰富

中文Micropython语言:https://docs.singtown.com/micropython/zh/latest/openmvcam/reference/index.html

中文翻译的资料非常全面

英文Micropython语言:http://docs.micropython.org/en/latest/

英文资料网站

April-Tag介绍本模块的April-Tag检测功能继承自OpenMV的算法,可以检测标签号、标签偏角,以及通过标签外接矩形判断与标签的倾角,还可根据镜头焦距与标签在视野中的大小判定与标签的距离。

^利用OpenMV IDE 生成所需要的 April Tas^

OpenMV IDE中包含了April-Tag的示例"find apriltags"供参考,亦可参考教程:

http://book.openmv.cc/image/apriltag.html

^部分April Tags的生成图片文件^

与OpenMV Cam的区别OpenMV Cam的软件以MIT开源协议授权,本模块移植了OpenMV软件的全部算法部分,这部分是完全兼容的。

^i.MX RT1062 智能视觉模块^

硬件上,OpenMV使用的是STM32F7/H7,并且集成了Micropython针对STM32的移植和硬件操作模块"pyb"。本模块亦实现了pyb的主要功能(见模块扩展信号节图中的黑色字体功能)。

pyb和machine模块中并不包含和Pyboard/OpenMV Cam等板子的全部功能,但是不影响创意组比赛的使用需求。

本模块只支持TF卡上的文件系统,不支持使用内部Flash模拟,因此TF卡是必备的。

^i.MX RT1062视觉模块上的TF卡^

OpenMV Cam有很多扩展板,本模块支持其中的LCD Shield。

本模块还包含了可选的9轴运动传感器MPU9250,OpenMV Cam不包含。如需使用,会占用I2C扩展口,注意I2C slave地址不要与它冲突。

MPU9260运动传感器

常见问题图像对比度差建议使用黑色电工胶布粘上模块背面的扩展口(粘在M12底座的两个定位螺丝口中间,如上文照片所示)。

图像颜色发灰(饱和度低)旋下M12镜头,检查背面是否粘有红外截光片。

图像中有污点旋下M12镜头,清洁OV7725芯片表面。

OpenMV IDE中运行Hello world示例时图像刷新率低可以适当加延时以给IDE更多机会刷新帧缓冲:

import utime

在主循环最后添加 “utime.delay_ms(10)”。具体时间可调整,一般在5-10之间。

注:在实际使用时建议去掉这个延时。

连接USB后没有识别出优盘这应该是SD卡初始化失败导致的。在板子上按下复位按钮或重新上电一般会解决问题,亦可能TF卡质量差/损坏。

摄像头图像有(蓝色)噪点这是因为默认的像素时钟为OV7725的上限(60MHz),当环境的电磁干扰较大时容易出现此问题。可以通过以下方法调整:

sensor.set_framerate(0<<9|N<<12)

建议N的取值为1-7(不要设为0!)。此时,像素时钟频率为 96MHz / (N+1),分别是 48M, 36M, 24M, 19.2M, 16M, 13.7M, 12M。

注:此方法只适用于本模块。

注:若像素时钟过低,会影响图像刷新率。

摄像头图像阴暗可在默认启用auto gain的情况下跳过帧一段时间,如以下代码所示:

sensor.reset()…....sensor.skip_frames

(time = <时间(单位ms)越长越亮,一般在100-2000之间>)

sensor.set_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:

https://github.com/RockySong/micropython-rocky/tree/omv_initial_integrate

注意:务必选定分支"omv_initial_integrate",不要使用默认的"master"分支!

(1)克隆或下载一个压缩包。然后使用KEIL打开源码树中的:

\ports\prj_keil_rt1060\mpyrt1060.uvprojx编译(约2-4分钟),编译前确保选中"debug_flexspi" Target

(2)使用杜邦线连接J-Link和本模块的调试接口,分别是

(3)在KEIL里点击菜单栏上的 “load” 按钮,等候1-2分钟即可擦除和下载完毕

(4)下载完毕后需重启本模块方使新固件生效

注意:若烧写中途失败,可导致模块无法再启动,烧写前务必确保J-Link与模块的连接是稳定可靠的。

刷固件中途失败或其它原因导致模块无法启动的补救1.

用电烙铁先去掉电阻R4(正面,镜头底座左下),R2(背面与R4接近的位置);

短接R1(在R4旁边)和R5(在R2旁边)

重新连接J-Link,在KEIL中重新下载程序固件;

断开R1, R5,

重焊R2和R4,或者直接短接。

具体原理可参考原理图(omvrt1_sch.pdf)中的"BOOT"部分介绍,截图如下:

模块启动复位相关电路

默认的启动方式是"Internal Boot(NormalBoot)", 补救时改用"Serial Download(Bootloader)",请勿尝试其它启动方式!

若补救后仍然无法启动或无法刷固件,则很可能硬件已经损坏。

提问与回答提问:卓大大 你好 我想问一下

是和你之前的推文内的一样的吗 我发现推文内的码识别出来的结果如下 和你之前回复的0-31并不一致。

回复:你们很仔细。我推文中是手工摆放,是一个示意图。实际上还是按照从左到右,从上到下,从0到31摆放。

提问:卓大这三个轮胎,哪个需要下岗啊?

回复:第一个。

提问:卓老师,你好,这个车模节能组能用吗?

回复:可以的。挺好的。但需要保证皮带着地,塑料轮不不着地。这应该是我见到的有可能最节能的了。如果增加些机械储能则估计不需要消耗什么电能驱动就能够跑完全程。

提问:卓大大,请问我可以把这里的铜柱改短一点吗?

回复:可以的。

提问:请问这种光强有吗?大概比赛场地的光会是什么样的?

回复:有,恰到好处。

提问:卓大大,关于F车类别的两个电机的车,两个电机是给同样的pid输出同样pwm可输出的转速不一样,可是如果用两个pid控制两个轮子,两个轮子达到相同转速的时间也会有偏差,这个怎么取舍呢?

回复:1. 你叙述的问题整体上的原因来自于两个轮子在电机性能、机械传动和轴承阻力等方面有差异; 2.如果使用独立的PID控制,发现两个轮子响应速度不同,则说明PID参数需要进一步调整,以缩短控制的过渡过程。

基于i.MX RT1060的可编程视觉模块相关推荐

  1. 基于引擎的matlab+vc混合编程的配置

    前段时间在项目中做了一些关于基于引擎的vc+matlab混合编程的工作. 如果你是混合编程新手,我相信使用引擎的方式编程是比较简单快捷的一种方式. 当然这种方法也有其缺点,就是不能脱离matlab运行 ...

  2. 基于Winsock API的VC网络编程实战

    基于Winsock API的VC网络编程实战 随着计算机信息技术的飞速发展,互联网与人类社会的工作.生活越来越紧密相关,它已经成为人类获取.交流信息的重要途径和手段.所以当前对于开发人员来说,网络编程 ...

  3. 基于UDP协议的socket套接字编程 基于socketserver实现并发的socket编程

    基于UDP协议 的socket套接字编程 1.UDP套接字简单示例 1.1服务端 import socketserver = socket.socket(socket.AF_INET,socket.S ...

  4. CV:阿里在CV数据增强领域带来SOTA新范式(已被NeurIPS2022接收)—基于离散化对抗训练的鲁棒视觉新基准!

    CV:阿里在CV数据增强领域带来SOTA新范式(已被NeurIPS2022接收)-基于离散化对抗训练的鲁棒视觉新基准! 导读:本文中,来自阿里巴巴AAIG的研究团队在模型鲁棒性问题上进行了研究,包括对 ...

  5. 基于Fortran的结构力学位移法编程求解

    本代码可用于平面桁架结构的计算. 本文是根据基于Python的结构力学位移法编程求解的另一版本的更新,内容基本相同,背景介绍此处省略.仅展示最终代码的运行过程. 由于Fortran编程语言使用比较困难 ...

  6. 基于Java语言的安卓程序编程之一环境搭建2

    3 Eclipse及其插件的安装 Eclipse可以看成是Java的集成开发环境.基于Java语言的安卓程序编程就是在Eclipse上进行的.Eclipse附带了一个标准的插件集,通过Eclipse可 ...

  7. 【数据库实验】实验四 基于嵌入SQL的综合应用编程(基于QSqlTableModel实现)

    [数据库实验]实验四 基于嵌入SQL的综合应用编程 一.实验目的 二.实验要求 三.实验内容.实验结果与主要程序代码 数据准备(建表并插入数据) 前言:黎哥的写法 参考 建表 SQL语言插入数据 S表 ...

  8. 基于Transformer的文本情感分析编程实践(Encoder编码器-Decoder解码器框架 + Attention注意力机制 + Positional Encoding位置编码)

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) Encoder编码器-Decoder解码器框架 + Atten ...

  9. 一种基于CUDA标准的异构并行编程模型开发简介

    一种基于CUDA标准的异构并行编程模型开发简介 目录 一.绪论 1.1研究背景及意义 1.2目标平台体系结构简介 二.HPPA基本组成结构 三.编译工具链开发 3.1 拆分工具HPCufe开发 3.2 ...

最新文章

  1. modelsim-win64-10.1c的安装和基本使用
  2. mongocollection java_mongodb与java的整合
  3. 渣渣菜鸡的 ElasticSearch 源码解析 —— 启动流程(上)
  4. CVPR 2010 MOSSE:《Visual Object Tracking using Adaptive Correlation Filters.》论文笔记
  5. go语言值得学习的开源项目推荐
  6. [Java]集合的小抄 Java初学者必备
  7. 教程 | 如何利用C++搭建个人专属的TensorFlow
  8. Nginx配置示例文件
  9. win7下快捷方式关联错误的修复
  10. jdk和jre的关系
  11. 集美大学校园网绑定/认证报错异常及解决方案
  12. 将计算机设置成交换机主机名,分享:如何配置学校机房项目交换机?
  13. 广告投放策略及数据分析
  14. css使用rgb属性设置颜色
  15. html圆圈里边有个c,三个c标志可以扯掉-图标含义?一个圆圈里面有三个C代表什么含义 – 手机爱问...
  16. python日志模块 超量处理_Python logging日志处理模块
  17. CALL和jmp近远调用的区别
  18. 0716 POJ1222 EXTENDED LIGHTS OUT
  19. DirectX11_API流程入门篇
  20. Android gridview 嵌套在listview中显示不全问题

热门文章

  1. Jconsole远程监控tomcat 的JVM内存(linux、windows)
  2. 11月14日云栖精选夜读 | 动画+原理+代码,解读十大经典排序算法
  3. Annoy搜索算法(Approximate Nearest Neighbors Oh Yeah)
  4. Python3.5模块‘OS’‘sys’
  5. CentOS6.3配置yum源
  6. Docker:镜像操作和容器操作
  7. 你真的理解“吃亏是福”么?
  8. if...else if switch分支结构
  9. 从CSDN泄密看数据安全
  10. ITAA在线试学用户使用说明