视觉开发板—K210自学笔记(二)

视觉开发板—K210

一、开发之前的准备

工欲善其事必先利其器。各位同学先下载下面的手册:

1.Sipeed-Maix-Bit 资料下载:https://dl.sipeed.com/shareURL/MAIX/HDK/Sipeed-Maix-Bit/Maix-Bit_V2.0_with_MEMS_microphone

2.Sipeed-Maix-Bit 规格书下载:https://dl.sipeed.com/fileList/MAIX/HDK/Sipeed-Maix-Bit/Specifications/Sipeed%20Maix-Bit%20%E8%A7%84%E6%A0%BC%E4%B9%A6%20V2.0.pdf

3.Sipeed-Maix-Bit 原理图下载:https://dl.sipeed.com/fileList/MAIX/HDK/Sipeed-Maix-Bit/Maix-Bit_V2.0_with_MEMS_microphone/Maix-Bit_V2.0_Schematic.pdf

开发板参数

板载资源

按键*2

RGB灯*1

MEMS Microphone*1

USB to UART

128Mbit Flash*1

板载接口

USB Type-C接口

24PIN DVP摄像头接口

24PIN LCD接口

MicroSD卡槽

所有IO排针引脚引出

尺寸

53.3*25.4mm

供电电压

5.0V @ 300mA(供电电流需大于300mA)

工作温度

-30℃ ~85C

二、MaixPy

按照先硬后软的顺序,我们再来看看开发环境。MaixPy 是将 Micropython 移植到 K210(一款 64 位双核带硬件 FPU、卷积加速器、FFT、Sha256 的 RISC-V CPU ) 的一个项目; MaixPy 不但支持 MCU 常规操作, 还集成了硬件加速的 AI 机器视觉和麦克风阵列相关的算法。相应的高达 1TOPS 算力核心模块却不到¥50, 凭借着快速开发和较低成本与其较小的体积很适合 AIOT 领域智能应用

MicroPython 是基于 Python3 的语法做的一款解析器,包含了 Python3 的大多数基础语法, 主要运行在性能和内存有限的嵌入式芯片上。(注意 Micropython 不包含 Python3 的所有语法)。总之MaixPy 让我们在 K210 上编程更加简单快捷高效。

使用 MaixPy 的入门教程,包括基础知识,一定要看,才能避免遇到很多问题,会给后面开发节省很多时间。

K210的开发提供了各个功能模块的 API 手册,方便编程时查阅

1.标准库:micropython 的标准库,很多 API 兼容 python3 的 API

2.machine:机器相关,重启控制,机器 UID,以及各种外设控制

3.Maix: 一些特殊的模块,比如 FPIOA,KPU,FFT等

4.内置类:内置的用 mpy(micropython 的缩写)编写的类,可以在源码项目中找到

5.机器视觉: 一些机器视觉相关的模块,image sensor lcd大致上兼容 OpenMV 的 API,但是后期不会实时跟着OpenMV 更新

6.附加外设模块:一些外设模块的使用,比如触摸屏,超声波,LED 灯等

7.内置应用: 内置的应用,比如 NES 游戏机(FC 红白机,也就是小时候的小霸王游戏机),pye(内置的文档编辑器)

三、编程快速入门

K210和OPENMV一样是可以使用MicroPython编程的开发板,甚至有些openmv的例程都可以直接拿过来直接使用。所以说教程上可以参考openmv的相关教程学习,两者支持的语言是一样的。又或者你有Python的基础也是可以直接上手的。

程序结构上类似arduino,分为三个部分:

import ...

...

一次设置 ...

...

while(True): # Loop

    ...

K210代码的第一部分应该包含一些头部注释,将模块引入到代码,最后是代码中的常量和全局变量。

接下来,你将要做一次性的设置代码。这包括创建I / O引脚对象,设置摄像头,定义辅助函数等。

最后,你将创建一个 while(True): 循环,在这个循环之下,你放进去的全部代码将会在循环中重复调用,直到关闭电源。

让我们看看K210的第一个例程。

如图,左键单击【文件】—【示例】—【01-Basics】—【helloworld.py】,hellworld我相信是学任何语言写的第一个程序,这里K210我们依然是最开始呈现这个最经典的程序。

### 头部注释,导入语句等# Hello World Example## Welcome to the MaixPy IDE!# 1. Conenct board to computer# 2. Select board at the top of MaixPy IDE: `tools->Select Board`# 3. Click the connect buttion below to connect board# 4. Click on the green run arrow button below to run the script!import sensor, image, time, lcdlcd.init(freq=15000000)sensor.reset()                      # Reset and initialize the sensor. It will# run automatically, call sensor.run(0) to stopsensor.set_pixformat(sensor.RGB565) # Set pixel format to RGB565 (or GRAYSCALE)sensor.set_framesize(sensor.QVGA)   # Set frame size to QVGA (320x240)sensor.skip_frames(time = 2000)     # Wait for settings take effect.clock = time.clock()                # Create a clock object to track the FPS.while(True):clock.tick()                   # Update the FPS clock.img = sensor.snapshot()        # Take a picture and return the image.lcd.display(img)               # Display on LCDprint(clock.fps())              # Note: MaixPy's Cam runs about half as fast when connected# to the IDE. The FPS should increase once disconnected.

程序的逻辑跟单片机是一样的,如果您的代码中没有无限的while循环,那么一旦您的K210完成运行脚本,它将停在那里,什么都不做。

现在再用中文翻译下上面的程序:

import sensor, image, time, lcd: 首先导入内置的sensor(摄像头)库,image图像库, time时间库和lcd(屏幕)库

lcd.init(freq=15000000): 初始化 LCD,这里传了一个参数叫freq即频率,是指定驱动 LCD 的时钟频率,这里是15MHz,可以根据硬件性能调整

sensor.reset(): 初始化摄像头,这里失败需要检查硬件

sensor.set_pixformat(sensor.RGB565): 设置摄像头为RGB565格式,默认都是用RGB565即可

sensor.set_framesize(sensor.QVGA): 分辨率为QVGA,即320x240

sensor.skip_frames(time = 2000): 摄像头刚启动时,图像质量还没稳定,所以跳过一些图像

clock = time.clock() 初始化时钟

while(True): 这是一个循环,循环里面的代码会被不停地运行

sensor.snapshot():从摄像头取一帧图像数据,返回值是一张图像的对象

lcd.display(): 显示图像到LCD

lcd.display(sensor.snapshot()): 这里就是先执行括号里的获取图像,返回值直接作为参数给 LCD 进行显示

程序运行后会得到下面的画面,这段程序在LCD上的使用效果会更明显一些。尽管这个程序名称叫hello world,但是貌似好像跟hello world没什么关系。但是作为K210的入门程序,给出了基本的编程开发框架,可以供给大家进一步开发。

同时,K210提供了大量的SDK共大家使用。下载链接在github上,这里搬运过来:

GitHub - sipeed/MaixPy-v1_scripts: micropython scripts for MaixPy

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/676679.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue3 之 商城项目—登陆

整体认识 登陆页面的主要功能就是表单校验和登陆登出业务 路由配置 模版 <script setup></script><template><div><header class"login-header"><div class"container m-top-20"><h1 class"logo"&g…

在Ubuntu上部署Stable Video Diffusion动画制作

Stable Diffusion团队推出的开源模型Stable Video Diffusion&#xff0c;支持生成约3秒的视频&#xff0c;分辨率为5761024。通过测试视频展示了其令人瞩目的性能&#xff0c;SVD模型是一个生成图像到视频的扩散模型&#xff0c;通过对静止图像的条件化生成短视频。其特点主要包…

Spring基础 - Spring简单例子引入Spring要点

Spring基础 - Spring简单例子引入Spring要点 设计一个Spring的Hello World 设计一个查询用户的案例的两个需求&#xff0c;来看Spring框架帮我们简化了什么开发工作 pom依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"htt…

无人机图像识别技术研究及应用,无人机AI算法技术理论,无人机飞行控制识别算法详解

在现代科技领域中&#xff0c;无人机技术是一个备受瞩目的领域。随着人们对无人机应用的需求在不断增加&#xff0c;无人机技术也在不断发展和改进。在众多的无人机技术中&#xff0c;无人机图像识别技术是其中之一。 无人机图像识别技术是利用计算机视觉技术对无人机拍摄的图像…

springboot169基于vue的工厂车间管理系统的设计

基于VUE的工厂车间管理系统设计与实现 摘 要 社会发展日新月异&#xff0c;用计算机应用实现数据管理功能已经算是很完善的了&#xff0c;但是随着移动互联网的到来&#xff0c;处理信息不再受制于地理位置的限制&#xff0c;处理信息及时高效&#xff0c;备受人们的喜爱。本…

第7章 智能租房——首页

学习目标 掌握房源总数展示功能&#xff0c;能够实现将统计的房源总数在首页中展示 掌握最新房源数据展示功能&#xff0c;能够实现将查询的最新房源数据在首页中展示 掌握热点房源数据展示功能&#xff0c;能够实现将查询的热点房源数据在首页中展示 了解智能提示搜索框的功…

Apache Paimon 文件操作

本文旨在澄清不同文件操作对文件的影响。 本页面提供具体示例和实用技巧&#xff0c;以有效地管理这些操作。此外&#xff0c;通过对提交&#xff08;commit&#xff09;和压实&#xff08;compact&#xff09;等操作的深入探讨&#xff0c;我们旨在提供有关文件创建和更新的见…

STM32 定时器

目录 TIM 定时器定时中断 定时器外部时钟 PWM驱动LED呼吸灯&#xff08;OC&#xff09; PWM控制舵机 PWMA驱动直流电机 输入捕获模式测频率&#xff08;IC&#xff09; 输入捕获模式测占空比 编码器接口测速(编码器接口) TIM 通用定时器 高级定时器 定时器定时中断 Ti…

springboot项目热部署实现(Spring Boot DevTools方式)

文章目录 Spring Boot DevTools简介Spring Boot DevTools原理spring Boot Devtools优缺点Spring Boot DevTools集成步骤第一步&#xff1a;添加maven依赖第二步&#xff1a;IDEA热部署配置 Spring Boot DevTools简介 Spring Boot DevTools是Spring Boot提供的一个开发工具&…

Vue事件中如何使用 event 对象

在Vue中&#xff0c;事件处理函数常常需要获取事件触发时的相关信息&#xff0c;比如鼠标位置、按键信息等。而要获取这些信息&#xff0c;就需要使用event对象。那么在Vue的事件中如何正确使用event对象呢&#xff1f;接下来就来详细介绍一下。 首先&#xff0c;在Vue的事件中…

JSP编程

JSP编程 您需要理解在JSP API的类和接口中定义的用于创建JSP应用程序的各种方法的用法。此外,还要了解各种JSP组件,如在前一部分中学习的JSP动作、JSP指令及JSP脚本。JSP API中定义的类提供了可借助隐式对象通过JSP页面访问的方法。 1. JSP API的类 JSP API是一个可用于创建…

专业145+总分400+合肥工业大学833信号分析与处理综合考研经验电子信息通信,真题,大纲,参考书

今年专业课145总分400&#xff0c;我总结一下自己的专业课合肥工业大学833信号分析与处理和其他几门的复习经验。希望对大家复习有帮助。 我所用的教材是郑君里的《信号与系统》&#xff08;第三版&#xff09;和高西全、丁玉美的《数字信号处理》&#xff08;第四版&#xff…

堆排序----C语言数据结构

目录 引言 堆排序的实现**堆的向下调整算法** 对排序的时间复杂度建堆的时间复杂度&#xff1a;排序过程的时间复杂度&#xff1a;总体时间复杂度&#xff1a; 引言 堆排序&#xff08;Heap Sort&#xff09;是一种基于比较的排序算法&#xff0c;利用堆的数据结构来实现。它的…

备战蓝桥杯---动态规划之背包问题引入

先看一个背包问题的简单版&#xff1a; 如果我们暴力枚举可能会超时。 但我们想一想&#xff0c;我们其实不关心怎么放&#xff0c;我们关心的是放后剩下的体积。 用可行性描述即可。 于是我们令f[i][j]表示前i个物品能否放满体积为j的背包。 f[i][j]f[i-1][j]||f[i-1][j-v…

C++ 内存管理(newdelete)

目录 本节目标 1. C/C内存分布 2. C语言中动态内存管理方式&#xff1a;malloc/calloc/realloc/free 3. C内存管理方式 3.1 new/delete操作内置类型 3.2 new和delete操作自定义类型 4. operator new与operator delete函数 5. new和delete的实现原理 6. 定位new表达式(placem…

【5G NR】【一文读懂系列】移动通讯中使用的信道编解码技术-卷积码原理

目录 一、引言 二、卷积编码的发展历史 2.1 卷积码的起源 2.2 主要发展阶段 2.3 重要里程碑 三、卷积编码的基本概念 3.1 基本定义 3.2 编码器框图 3.3 编码多项式 3.4 网格图(Trellis)描述 四、MATLAB示例 一、引言 卷积编码&#xff0c;作为数字通信领域中的一项…

文心一言 VS 讯飞星火 VS chatgpt (197)-- 算法导论14.3 5题

五、用go语言&#xff0c;对区间树 T 和一个区间 i &#xff0c;请修改有关区间树的过程来支持新的操作 INTERVALSEARCH-EXACTLY(T&#xff0c;i) &#xff0c;它返回一个指向 T 中结点 x 的指针&#xff0c;使得 x.int. lowi.low 且 x.int.high i.high ;或者&#xff0c;如果…

爱奇艺图片格式演进

01 背景 图片是爱奇艺APP页面的主要视觉元素&#xff0c;对整体用户体验有着至关重要的影响。同时&#xff0c;由大量启动带来的图片CDN峰值带宽成本也有待降低。因此&#xff0c;在努力提升用户体验的同时&#xff0c;优化图片CDN峰值带宽成本已成为一项关键任务。而决定图片显…

研究多态恶意软件,探讨网络安全与AI

前言 近期ChatGPT火遍全球&#xff0c;AI技术被应用到了全球各行各业当中&#xff0c;国内外各大厂商也开始推出自己的ChatGPT&#xff0c;笔者所在公司在前段时间也推出了自研的安全GPT&#xff0c;AI技术在网络安全行业得到了很多的应用&#xff0c;不管是网络安全研究人员、…

ElasticSearch之倒排索引

写在前面 本文看下es的倒排索引相关内容。 1&#xff1a;正排索引和倒排索引 正排索引就是通过文档id找文档内容&#xff0c;而倒排索引就是通过文档内容找文档id&#xff0c;如下图&#xff1a; 2&#xff1a;倒排索引原理 假定我们有如下的数据&#xff1a; 为了建立倒…