大家好,我是痞子衡,是正经搞技术的痞子。本系列痞子衡给大家介绍的是机器视觉模块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. SpringBoot整合MybatisPlus3.X之逻辑删除(三)

    pom.xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId& ...

  2. (Git) 优秀Java,Vue项目推荐

    Java 1.spring-boot-pay 地址:小柒2012/spring-boot-pay 这是一个支付案例,提供了包括支付宝.微信.银联在内的详细支付代码案例,对于有支付需求的小伙伴来说,这个 ...

  3. Vue运用

    目录结构: ├── README.md 项目介绍 ├── index.html 入口页面 ├── build 构建脚本目录 │   ├── build-server.js 运行本地构建服务器,可以访问 ...

  4. Centos7 基础命令与软件的安装

    本人小白一枚正在老男孩培训,所以从现在开始把我学到的知识都分享给大家,该随笔会一直更新 centos7基础命令与软件 ps:命令与参数之间必须加上空格,安装成功时最后一行会有  Complete!   ...

  5. Idea导入Web项目并发布到Tomcat

    Idea导入现有的Web项目并发布到Tomcat,发现Tomcat没有自动发布 问题: 导入一个Web项目时,idea并没有把他当成web,所以需要自己修改项目结构 1.导入项目 打开 File-&g ...

  6. FTP上传、下载文件Demo

    前言:最近在做一个app,负责写后台接口,客户那边给了一个FTP的账号密码过来,服务器上面放了一堆的PDF文件,让我们这边自己从上面拿,项目是spriongboot的,做个记录供以后参考. 一.app ...

  7. oop面向对象知识总结 静态成员和友元

    第十一章 静态成员和友元 11.1 静态成员 1.C++类当中的静态数据成员仍借用保留字static,但是与之前的静态全局变量,静态局部变量以及静态函数没有关系. 2.静态数据成员不占用具体对象的数据 ...

  8. [考试反思]0903NOIP模拟测试36:复始

    因为多次被说颓博客时间太长于是 真香 恢复粘排行榜的传统. 大体上就是,T1A的前三,剩下的T2A的排名,再然后按照T3暴力得分排名. T1是个暴力.3个A的5个得分的.数据点极强爆零率极高. 我的思 ...

  9. 基于代码生成器的快速开发平台 JEECG

    JEECG是一款基于代码生成器的J2EE快速开发平台,开源界“小普元”超越传统商业企业级开发平台.引领新的开发模式(Online Coding模式(在线开发)->代码生成器模式->手工ME ...

  10. 关于Struts.xml的路径配置以及对应的连接路径问题

    主要记住一点!: 1.   namespace的路径配置例如:/x:   2.  name名自由配置(主要用来是做action跳转方法用的) 3.  form表单中提交action时以这个格式提交(此 ...