大家好,我是痞子衡,是正经搞技术的痞子。本系列痞子衡给大家介绍的是机器视觉模块OpenMV-RT初体验

  近些年机器视觉应用一直是个很火的方向,想象一下机器如果能长上“眼睛”,是不是就可以做一些人类才能做的事情,因此机器视觉是人工智能实现的一个重要基础。痞子衡当年硕士毕业论文课题就是工业相机图像处理相关的,算是机器视觉系统的前端核心。遥想十年以前,想要从事机器视觉系统的开发一直是比较复杂的,需要开发者有相当扎实的嵌入式开发基础,而现在一些机器视觉相关研究小组为了能让开发者把更多重心放在应用本身,推出了简洁易用的机器视觉模块,借助这些模块,即使没有太多嵌入式经验,也可以轻松玩机器视觉。今天痞子衡就带大家一起体验恩智浦推出的一款轻量级的机器视觉模块OpenMV-RT:

一、模块简介

  今天痞子衡要讲的模块全称是OpenMV-RT,这是一款基于恩智浦最近主打的i.MXRT超高性能系列MCU的视觉模块。如下是模块简图,从简图里可以看出,这款板子设计得非常简洁,基本除了MCU最小系统之外,仅包含四大部件:640x480数字摄像头传感器、九轴姿态传感器、串行SPI Flash(存放代码)、SD卡槽(文件系统):

  除此以外,模块还提供了标准OpenMV接口,可在OpenMV项目(关于OpenMV项目,痞子衡会在后续文章里细聊)生态里任意扩展其他功能模块:

Note: 更详细的模块介绍可见该模块设计者Rocky Song发表的微信文章 《基于i.MX RT1060的可编程视觉模块》

二、安装模块

2.1 购买模块和SD卡

  首先你需要有一块OpenMV-RT模块,不带SD卡的裸价是399元,镜头焦距有6种可选。此模块为第14届全国大学生智能车竞赛参赛选手提供过50元专享抵扣。

2.2 下载i.MXRT固件

  拿到OpenMV-RT模块后,为了保证模块能够正常运行,最好试着自己下载一次i.MXRT固件程序(防止厂商发货忘记烧录固件),固件程序工程放在github网站上,源代码是开源的。

  如果你不熟悉Git,那就按下图所示直接下载项目压缩包(记得Step1一定要做)。如果你熟悉Git,那就直接clone项目,并且checkout到omv_initial_integrate分支。

  痞子衡在第一节模块简图展示过模块有一个6-Pin的SWD接口,这个接口便是用于连接J-Link仿真器去下载i.MXRT固件程序进外部串行SPI Flash的。可按下图连接模块与J-Link仿真器:

  • J-Link.Pin6 (GND) -> 模块J1.6(GND)
  • J-Link.Pin1 (VCC) -> 模块J1.5(3.3V)
  • J-Link.Pin7 (SWC) -> 模块J1.3(SWC)
  • J-Link.Pin9 (SWD) -> 模块J1.2(SWD)

  使用Keil MDK(需v5.20以上)打开固件工程,选中“debug_flexspi” 然后编译该工程(约4分钟),最后点击下载(约2分钟),固件下载完成后需要给模块重新上电。

  • i.MXRT固件工程:\micropython-rocky\ports\prj_keil_rt1060\mpyrt1060.uvproj

2.3 安装OpenMV IDE

  因为OpenMV-RT模块实现了OpenMV IDE的调试监控协议。为了体验无需存盘一键下载并且监视模块帧缓冲的功能,以及启用虚拟串口功能,模块最好配合OpenMV IDE一起使用。

三、运行模块

  关于OpenMV-RT模块的运行,痞子衡将给大家演示一个基于CIFAR-10数据集的物体识别的应用。

3.1 插上SD卡(含CIFAR-10模型文件)

  OpenMV-RT模块需要配合SD卡一起使用,模块当前仅支持在SD上实现文件系统。痞子衡要演示的物体识别的应用预训练CIFAR-10数据集模型文件需要存放在SD卡里,模型文件包含两个文件:cifar10.network和cifar10_fast.network。

  • 预训练CIFAR-10数据集模型文件路径:\micropython-rocky\examples\rocky_test\multi_demos_extract_to_tfcard\

3.2 使用IDE连接模块

  先打开OpenMV IDE,然后给OpenMV-RT模块上电(如果是第一次连接),系统可能花较长时间(可能超过1分钟)来安装和配置驱动,请耐心等待。当OpenMV IDE左下角状态发生如下变化时,即表明驱动安装成功,并已识别出模块。

3.3 运行物体识别应用

  使用OpenMV IDE打开物体识别应用的Python源程序(是的,OpenMV-RT支持MicroPython语言,关于其原理痞子衡会在后续文章细聊),这个源程序其实包含了2个应用,一个是基于CIFAR-10的物体识别,另一个是基于LENet的数字识别。痞子衡想要演示的是物体识别,因此需要将Python源代码稍作如下修改:

  • 物体识别应用主程序:\micropython-rocky\examples\rocky_test\multi_demos_extract_to_tfcard\main.py
#...省略

while (True):
pyb.LED(1).off()
pyb.LED(2).off()
pyb.LED(3).on()
pyb.LED(4).off() #If you use RT1052, 'isFull' should be False
CIFAR10Test(40000000, isFull = True)
# RT1052 does not have enough RAM to run this
#LENetTest(40000000)

  程序修改完毕后,点击IDE左下角运行按钮,OpenMV-RT模块便开始运行Python程序,你可以在IDE里看到摄像头实时采集窗口。去网上随便找一张CIFAR-10训练的10种物体(飞机、汽车、鸟、猫、鹿、狗、蛙、马、船、卡车)的图片,痞子衡找了一张鹿的图片,并放在摄像头面前,可以看到采集窗口最上面显示了识别结果“deer”。

  至此,OpenMV-RT模块初体验痞子衡便介绍完毕了,掌声在哪里~~~

欢迎订阅

文章会同时发布到我的 博客园主页CSDN主页微信公众号 平台上。

微信搜索"痞子衡嵌入式"或者扫描下面二维码,就可以在手机上第一时间看了哦。

痞子衡嵌入式:恩智浦机器视觉模块OpenMV-RT那些事(1)- 初体验的更多相关文章

  1. 痞子衡嵌入式:如果i.MX RT是一匹悍马,征服它时别忘了用马镫MCUBootUtility

    -- 跨界之风吹满地,先锋当属NXP; 微控制器谁独骚?当仁不让看RT! 恩智浦半导体2017年10月正式发布了业内首款跨界处理器-i.MX RT系列,这是MCU界的汗血宝马,更是一匹桀骜不驯的悍马. ...

  2. 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU启动那些事(8)- 从Raw NAND启动

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RT系列MCU的Raw NAND启动. 前面铺垫了七篇启动系列文章,终于该讲具体Boot Device了,我们知道i. ...

  3. 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU启动那些事(9)- 从Parallel NOR启动

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RT系列MCU的Parallel NOR启动. 上一篇讲i.MXRT从Raw NAND启动的文章 从Raw NAND启 ...

  4. 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU启动那些事(13)- 从Serial(1-bit SPI) EEPROM/NOR恢复启动

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RT系列MCU的Serial EEPROM/NOR恢复启动. 在前几篇里痞子衡介绍的Boot Device都属于主动启 ...

  5. 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(11.0)- FlexSPI NOR启动时间(RT1170)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RT1170 FlexSPI NOR启动时间. 痞子衡刚刚拿到i.MXRT1170 B0版本的芯片,迫不及待地在上面跑了 ...

  6. 痞子衡嵌入式:恩智浦i.MX RTxxx系列MCU特性那些事(1)- 概览

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RTxxx系列MCU的基本特性. 恩智浦半导体于2017年开始推出的i.MX RT系列重新定义了MCU,其第一款芯片i. ...

  7. 痞子衡嵌入式:恩智浦MCU安全加密启动一站式工具NXP-MCUBootUtility用户指南

    NXP MCU Boot Utility English | 中文 1 软件概览 1.1 介绍 NXP-MCUBootUtility是一个专为NXP MCU安全加密启动而设计的工具,其特性与NXP M ...

  8. 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU启动那些事(3)- Serial Downloader模式(sdphost/MfgTool)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RT系列MCU的Serial Downloader模式. 在上一篇文章 Boot配置(BOOT Pin, eFUSE) ...

  9. 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU启动那些事(5)- 再聊eFUSE及其烧写方法

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RT系列MCU的eFUSE. 在i.MXRT启动系列第二篇文章 Boot配置(BOOT Pin, eFUSE) 里痞子 ...

随机推荐

  1. CPU爆满后的无助感

    告警 晚七点刚好上地铁,握在手里的手机震动了好几下,根据震动这几下的手感已经判断出这是钉钉在告警了,十有八九就是线上的问题,通过Zabbix监控的一台线上服务器已经五分钟不可达,这应该不会是网络网络问 ...

  2. fenby C语言 P32

    a[0] a[0][0] a[0][1] a[0][2] a[1] a[1][0] a[1][1] a[1][2]//一维数组 int a[2][3]//二维数组int (*p)[3]=a; #inc ...

  3. CET4

    Directions: For this part, you are allowed 30 minutes to write a short essay on the challenges of st ...

  4. 【MySQL】MySQL使用正确密码却认证失败问题解决方法

    前言:笔者根据 #MySQL忘记密码,重置密码方法 ,修改密码后.使用修改后的正确密码怎么也登录不上数据库,然后经过以下方法,重新登录数据库. 1.确认MySQL安装目录下没有data(Data)文件 ...

  5. Tomcat项目部署

    一 之前一直是在ecplise 利用tomcat插件的形式启动项目,这里可以通过选择server.xml和context files两种方式这里选择这两者方式,都是会在tomcat/bin下产生对应的 ...

  6. CSPS模拟 65

    cbx又A两题%%% T1比较水,只需要想到lcm以内的数都只能被唯一凑出就可以. T2比较shi,毕竟std复杂度都不正确的题是不能称之为完整的题的. 那么再感受一下T3满满的恶意 起点已经固定了, ...

  7. Charles破解安装及基本使用

    一.Charles简介 1.Charles是一款代理服务器,通过成为电脑或者浏览器的代理,而后截取请求和请求结果达到抓包目的. 2.Charles是用Java写的,能够在Windows,Mac,Lin ...

  8. 使用Typescript重构axios(二十一)——请求取消功能:添加axios.isCancel接口

    0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ...

  9. [转载]2.2 UiPath条件判断活动Flow Decision的介绍和使用

    一.Flow Decision介绍 FlowDecision节点是一个条件节点,它根据指定条件是否成立来控制流程的两个分支. 当条件为True时,流程执行一个分支 当条件为False时,流程执行另外一 ...

  10. python 快速发送大量邮件

    因为公司需求,需要发送千万封级别邮件. # coding:utf-8 import csv import smtplib from email.mime.text import MIMEText im ...