K210(MAIX BIT)学习

学习K210可以查看官方文档 MaixPy 文档简介 - Sipeed Wiki

官网中包含了各种应用的下载地址,以及相关程序,打开后在左侧有目录,点开入门必看指南在左侧目录可以找到软件固件的下载链接,点开库函数 API 手册在左侧目录点开Maix会找到GPIO的配置方法,点开media 有摄像头屏幕以及视觉的配置方法,之后会用到比如识别数字是需要训练模型则需要MaixHub该网站来训练此文后面会有介绍

也可以选择看【K210】K210学习笔记(总)_k210与匿名飞控_欠羽的博客-CSDN博客

也可以看这个,比较简洁Maix Bit、K210超详细资料【保姆级教程】【学习与上手Maix Bit这一篇文章就够啦】_动态比特的博客-CSDN博客

也可以借鉴OPENMV的相关程序,本人感觉OPENMV的程序初学者可能更能看懂 ,以下是官网例程

 巡线小车 · OpenMV中文入门教程

也可以根据此文来准备环境,以及会有相关程序

一、硬件

1、 安装

可以点击链接看视频 

[maixbit] K210 产品开箱及预览功能_哔哩哔哩_bilibili

也可以看图

maix bit打开后

 

 然后在另一边安装LCD就可以了,LCD也可以不安装,LCD是为了在脱机运行时能显示相关内容

以下是安装完成时的样子

 

 上电后是这样 

图中两个圆圈处会有两个按键

一个是rest,一个是boot

首先按一下rst 然后一直按着boot就能把摄像头看到的显示在LCD上了

以后写程序时boot可以当作一个普通按键来使用 

2、引脚

0-3号引脚上是JTAG;

4、5号引脚为默认串口;

12-14号是RGB灯;

16号引脚是BOOT键,接了10kΩ的上拉电阻;

18-20号引脚接的是麦克风;

26-28号引脚是用SPI协议实现的的读写TF card功能。
IO引脚都是3.3V,Reset引脚电压为1.8V。

二、软件

1、驱动安装 

到下面这个链接选择你的板子型号来下载驱动 

安装 USB 驱动 - Sipeed Wiki

2、软件安装

目前我只使用到了两个软件

①是kflash_gui  这个是用来下载固件的

Releases · sipeed/kflash_gui · GitHub这个是下载链接打开之后一般选择最新版本,我现在这个是v1.8.1,选择系统对应的应用下载,我的电脑是windows系统,因此我选的是以下名称的,也可以直接点下面的链接下载,解压到一个文件夹,双击 kflash_gui.exe(/kflsh_gui) 即可运行

kflash_gui_v1.8.1_windows.7z

②是MaixPy IDE 这个是用来运行程序的

下载站 - Sipeed

点开链接后直接下载.exe结尾的应该就可以,时间久了当时下的很乱有点忘了 

3、固件下载

到下面这个链接可以来选择固件下载 ,点开的界面应该是版本号的选择,一般点最上面那个就可以,点开之后就可以选择固件下载了,固件为 .bin 结尾或者 .kfpkg 的文件,其中.kfpkg其实就是多个.bin文件的打包版本, 可以使用kflash_gui打包

 下载站 - Sipeed此链接是用来下载固件的即上面所说的链接

更新 MaixPy 固件 - Sipeed Wiki此链接包含对固件内容的简介,打开后需往下翻查找

4、软件和MaixHub网站使用

1、MaixPy  IDE

①连接K210开发板

先选择开发板

再点击 左下角的绿色的链接似的东西

 连接成功后会变成以下样子

 注意以下界面并不会长时间显示,如果长时间显示,那么有可能开发板没有选对

 ②运行程序后

可以点击此处,会弹出你所想打印的东西

 

 点击左侧红圈处可以看到摄像头,点击右侧红圈可以放大缩小屏幕上的摄像头画面

 

2、kflash

打开后

第一个圈可以选择下载或者擦除,下次下载前必须要擦除之前下载在该位置的文件,或者选择擦除所有

第二个圈是选择下载的位置0x000000一般是最基础的固件储存的位置,这个数一般也不需要改,因为之后要往里面存东西一般是需要SD卡(内存卡)的

第三个圈是选择端口,要选择括号内带USB的才能下载成功

3、MaixHub

 打开后是以下界面,点击开始训练就可以开始训练你的模型,点击模型库的查看可以查看别人训练好的模型,择需下载

 

  再打开新建训练

 

  选择图像检测

 点击数据集

 点击创建数据集也可以选择之前创建的数据集

 创建后点击查看,然后点击上传图片

最后点击标注数据,不用对数据分组,网站会自动分的,照片的数量越多越准确

 在这里插入图片描述

标注完所有数据后后点击最上面的模型训练,选择刚刚创建的训练任务,然后点击创建任务,选择刚刚的数据集,按照图中所示配置即可创建任务开始训练了。

 在这里插入图片描述

最后点击部署,手动部署就可以了 

5、程序

1、与stm32串口通信

K210可以使用uart1.write("a"+str(b.cx())+"b")来传输,但是传输的为字符串,所以stm32端接收到的为字符串,需要用到atoi()函数来转换 

stm32接收部分具体可以看https://mp.csdn.net/mp_blog/creation/editor/130442179里程序中的串口那一部分

以下是寻找色块并发送"a色块的横坐标b"的例子

# 色块监测 例子
# 这个例子展示了如何通过find_blobs()函数来查找图像中的色块

import sensor, image, time,lcd
from fpioa_manager import fm                                # 从 fpioa_manager 模块中导入 引脚注册模块 fm

from machine import Timer, PWM, UART                        # 从 machine 模块中导入 定时器模块 Timer 脉宽调制模块 PWM 双向串行通信模块 UART

# 颜色追踪的例子,一定要控制环境的光,保持光线是稳定的。
green_threshold   = (0, 10, -128, 39, -11, 122)#电赛黑色胶带

#_________________________________________________________________
# 串口的使用
# 串口1 设置 P9 RX P6 TX

fm.register(9, fm.fpioa.UART1_RX, force = True)                  # 配置 9 脚为 UART1_RX 强制注册
fm.register(6, fm.fpioa.UART1_TX, force = True)                  # 配置 6 脚为 UART1_TX 强制注册

uart1 = UART(UART.UART1, 921600, 8, 0, 1)                        # 设置 uart1 为 串口1 波特率 921600 数据位 8位 校验位 0位 停止位 1位

#__________________________________________________________________
lcd.init()                                                       # lcd初始化
#__________________________________________________________________
sensor.reset()                                                   # 初始化摄像头
sensor.set_pixformat(sensor.RGB565)                              # 格式为 RGB565.
sensor.set_framesize(sensor.QQVGA)                               # 使用 QQVGA 速度快一些
sensor.skip_frames(time = 2000)                                  # 跳过2000s,使新设置生效,并自动调节白平衡
sensor.set_auto_gain(False)                                      # 关闭自动自动增益。默认开启的,在颜色识别中,一定要关闭白平衡。
sensor.set_auto_whitebal(False)                                  #关闭白平衡。白平衡是默认开启的,在颜色识别中,一定要关闭白平衡。
clock = time.clock()                                             # 追踪帧率
#__________________________________________________________________

while(True):
    clock.tick()                                                 # Track elapsed milliseconds between snapshots().
    img = sensor.snapshot()                                      # 从感光芯片获得一张图像

    blobs = img.find_blobs([green_threshold], invert=False,left_roi = [0,0,160,240] ,area_threshold=100,merge=True)
    #find_blobs(thresholds, invert=False, roi=Auto),thresholds为颜色阈值,
    #是一个元组,需要用括号[ ]括起来。invert=1,反转颜色阈值,invert=False默认
    #不反转。roi设置颜色识别的视野区域,roi是一个元组, roi = (x, y, w, h),代表
    #从左上顶点(x,y)开始的宽为w高为h的矩形区域,roi不设置的话默认为整个图像视野。
    #这个函数返回一个列表,[0]代表识别到的目标颜色区域左上顶点的x坐标,[1]代表
    #左上顶点y坐标,[2]代表目标区域的宽,[3]代表目标区域的高,[4]代表目标
    #区域像素点的个数,[5]代表目标区域的中心点x坐标,[6]代表目标区域中心点y坐标,
    #[7]代表目标颜色区域的旋转角度(是弧度值,浮点型,列表其他元素是整型),
    #[8]代表与此目标区域交叉的目标个数,[9]代表颜色的编号(它可以用来分辨这个
    #区域是用哪个颜色阈值threshold识别出来的)。
    if blobs:
    #如果找到了目标颜色
        for b in blobs:
        #迭代找到的目标颜色区域
            # Draw a rect around the blob.
            img.draw_rectangle(b[0:4]) # rect
            #用矩形标记出目标颜色区域
            img.draw_cross(b[5], b[6]) # cx, cy
            #在目标颜色区域的中心画十字形标记
            print(b.cx())
            uart1.write("a"+str(b.cx())+"b")#发送a 角度 b#注意与上面的uart1一致
    lcd.display(img)#LCD显示
    #print(clock.fps()) 
    #如果断开电脑,帧率会增加

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值