当前位置: 首页 > article >正文

视觉开发板—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, lcd



lcd.init(freq=15000000)

sensor.reset()                      # Reset and initialize the sensor. It will

                                 # run automatically, call sensor.run(0) to stop

sensor.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 LCD

    print(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.kler.cn/a/233574.html

相关文章:

  • C++编程:利用环形缓冲区优化 TCP 发送流程,避免 Short Write 问题
  • SHELL脚本(Linux)
  • Qt_day4_Qt_UI设计
  • 前端开发中常用的包管理器(npm、yarn、pnpm、bower、parcel)
  • ML 系列: 第 23 节 — 离散概率分布 (多项式分布)
  • 6.2 对角化矩阵(2)
  • centos中docker操作
  • Android性能调优 - 应用安全问题
  • Redis(三)主从架构、Redis哨兵架构、Redis集群方案对比、Redis高可用集群搭建、Redis高可用集群之水平扩展
  • 018 Linux
  • SQL 使用大全
  • 【Linux笔记】动静态库的封装和加载
  • C++ 中->成员访问运算符
  • 有道论文翻译接口,python版和lua版
  • ubuntu22.04@laptop OpenCV Get Started: 003_image_resizing
  • C++服务器端开发(2):确定服务器框架
  • 电商商城系统网站
  • 2024年笔记--centos docker离线安装启动失败
  • 【web前端开发】HTML及CSS简单页面布局练习
  • 华为配置内部人员接入WLAN网络示例(802.1X认证)
  • 通过 docker-compose 部署 Flink
  • 关节点检测
  • k8s filebeat 应用日志搜集
  • 各种能源折标准煤参考系数
  • 堆的数据结构以及堆的相应操作
  • 校园团餐SAAS系统源码