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

K210视觉识别模块学习笔记1:第一个串口程序_程序烧录与开机启动

今日开始学习K210视觉识别模块:简单的认识与串口程序

既然K210作为一个视觉识别外设模块来使用,我认为第一个程序 就没必要学点灯之类的了,直接学习串口如何配置开始为妥,毕竟后面都要用到.....

在研究过程中也发现K210程序的烧录与启动也与一般的Openmv不太一样,比较麻烦......

目录

K210产品认识与简介:

CAN_IDEK开发界面:

开发环境的配置:

串口接线与提示:

1、注意K210有俩个串口连接:USB串口与 外扩串口:

2、外置串口的接线:

CanMV IDE 编写串口发送例程:

1、新建Python工程与测试步骤:

2、测试效果截图与解释:

3、例程测试提示:

开机启动程序 与 Py库文件导入K210 TF卡:

 Py库文件导入K210 TF卡:

1、不借助读卡器:

2、借助读卡器:

 网上查阅资料贴出:


K210产品认识与简介:

该处解释来自于文档:K210视觉识别模块简介.pdf

1.按键K1               硬件连接到 IO16 ,可自定义按键功能。
2.RGB 灯:              可编程显示红、绿、蓝、白等颜色。
3.TF 卡槽:              用于插入 TF 卡,金手指朝向模块,保存程序和模型等文件。
4. 固定铜柱:           总共四个固定铜柱, M3 尺寸。
5.K210 核心模组:   包含 K210 芯片最小运行系统。
6. 摄像头:               采集图像。
7. 模组接口:           连接 K210 核心模组和底板。
8.RST 按键:           复位按键,用于重启 K210 芯片。
9. 外扩串口:           连接其他串口设备,输出自定义数据。
10.microUSB 接口:下载固件、串口调试、连接 IDE 等。
11.CH340 芯片:      与 microUSB 接口连接,将 USB 信号转化成 TTL 信号。

CAN_IDEK开发界面:

①菜单栏:       操作文件,使用工具等。
②快捷按钮:    区域①中的 文件 编辑 中部分功能的快捷方式。
③连接设备:    连接设备和程序控制按钮。
④代码编辑区:编辑要运行的代码。
⑤串行终端:    显示串口打印的调试信息。
⑥图像预览:    显示摄像头的图像预览。
⑦固件信息:    显示连接的串口号以及固件的相关信息。

开发环境的配置:

检查电脑是否有以下环境:

1、CH340的驱动安装

2、下载CAN_IDE上位机开发软件:https://github.com/kendryte/canmv_ide/releases

(注意找到适合自己系统的进行下载!)

3、烧录出厂固件

4、MicroPython API说明文档

https://developer.canaan-creative.com/index.html?channel=developer#/word 

串口接线与提示:

1、注意K210有俩个串口连接:USB串口外扩串口

它俩不是同一个串口,如果在python程序中进行编程输出打印,一个需要调用串口库并创建串口通信的实例对象,另一个可以直接调用Print(“ ”)进行打印:

有关程序部分下面编程部分会进行提示

2、外置串口的接线:

3、

CanMV IDE 编写串口发送例程:

1、新建Python工程与测试步骤:

首先在IDE中新建文件:

编写一个串口测试程序如下:

from modules import ybserial #从modules导入ybserial
import timeserial = ybserial() #创建ybserial的对象,并命名为serialserial.send_byte(0x31) #通过外置串口发送一个字节数据,参数 data 的范围为0-255。
serial.send_byte(0x0D) #通过外置串口发送一串字节数组,参数 array 为字节数组。array = [0x30, 0x31, 0x32, 0x33, 0x0D]
serial.send_bytearray(array) #表示通过外置串口发送一串字节数组,参数 array 为字节数组。text = 'Hello Yahboom'
num = serial.send(text) #通过外置串口发送字符串,返回值是字符串的长度。
print("num:", num)num = 0 #
count = 0 #记录串口发送次数
#用于交替发送测试的俩个字符串
CMD_1 = "$A#"
CMD_2 = "$BB#"while True:time.sleep_ms(1000)count = count + 1if count % 2 == 1:num = serial.send(CMD_1)else:num = serial.send(CMD_2)print("num:%d, count:%d" % (num, count))

然后进行保存:

然后连接俩个串口到电脑俩个串口:

然后打开一个额外的串口助手:

这里需要注意的是,要记得自己USB与外置串口分别连接了电脑的那个com口,我这里USB调试串口是连接的com 4,外置串口连接的是com 3,因此我这俩个软件打开的串口应如下:

然后按三角就可以进行测试了:

2、测试效果截图与解释:

从测试结果发现:

1、外设串口打印相关的函数如下:

2、USB串口打印相关函数如下:

3、例程测试提示:

这仅仅是将一个Python程序下载测试了一下,程序并未永久进入K210的内存!

断电后再连接,程序就会丢失!!!

请继续阅读下文可以解决这个疑问......

开机启动程序 与 Py库文件导入K210 TF卡:

开发板上电后会 自动执行 boot文件,然后再执行该处的 main.py,如果想让自己的程序开机自启动,可以将程序拷贝到boot中或者写入main.py。

SD卡在上电后会被挂载到/sd,值得注意的是只能将数据写入/flash和/sd下。

Python是支持将自定义py库(或者第三方py库)放到同一个目录下调用的,MicroPython也是支持调用自定义py库的。在调用自定义py库之前,需要提前将py库文件导入K210。

 Py库文件导入K210 TF卡:

 主流分为俩种方式: 

1、不借助读卡器:

在不拔出K210侧边挂载的TF卡的情况下使用CanMV IDE 进行导入:

需要我们先  连接好K210 在导入:

我们可以看到除了保存文件到CanMV Cam选项外(这个适合导入第三方库)

还有其余俩个选项:

其中如果选择了第二个选项(main.py)那就是能够使得这个Python程序开机自启动的!

别忘记保存成功后需要按下复位键!

2、借助读卡器:

借助读卡器的导入法更为简单粗暴,并且可操作性也更强,对于其中各个文件的把握也更全面.....

 网上查阅资料贴出:

K210系列第一个示例程序-CSDN博客

 K210-调用自定义py库_k210如何调用自定义py库-CSDN博客

K210——UART串口通信_k210串口-CSDN博客

相关文章:

  • 代码审计(工具Fortify 、Seay审计系统安装及漏洞验证)
  • 记一次服务器数据库被攻击勒索
  • 【Linux 网络】网络基础(三)(其他重要协议或技术:DNS、ICMP、NAT)
  • 数字经济讲师培训师教授唐兴通谈新质生产力数字化转型高质量发展AI人工智能大模型大数据经信委大数据管理局
  • Chrome谷歌浏览器如何打开不安全页面的禁止权限?
  • Keil 5恢复默认布局,左边状态栏
  • 基于java的CRM客户关系管理系统(二)
  • .NET 快速重构概要1
  • FPGA高端项目:FPGA解码MIPI视频+图像缩放+视频拼接,基于MIPI CSI-2 RX Subsystem架构实现,提供4套工程源码和技术支持
  • element-plus 使el-dropdown只显示当前选择节点
  • 【ARM-Linux篇】u-boot编译
  • 关于IO口的自定义通信协议设计
  • org.apache.kafka.clients.consumer.CommitFailedException
  • MySQL学习——查询示例(三)
  • 【SpringBoot】怎么在一个大的SpringBoot项目中创建多个小的SpringBoot项目,从而形成子父依赖
  • Consul Config 使用Git做版本控制的实现
  • java中的hashCode
  • JS+CSS实现数字滚动
  • Redis学习笔记 - pipline(流水线、管道)
  • 阿里云Kubernetes容器服务上体验Knative
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 普通函数和构造函数的区别
  • 前端存储 - localStorage
  • 删除表内多余的重复数据
  • 线性表及其算法(java实现)
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​一些不规范的GTID使用场景
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #《AI中文版》V3 第 1 章 概述
  • #传输# #传输数据判断#
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (第一天)包装对象、作用域、创建对象
  • (附源码)php投票系统 毕业设计 121500
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (全注解开发)学习Spring-MVC的第三天
  • (算法)Game
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • .Net FrameWork总结
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • .NET/C# 的字符串暂存池
  • .net分布式压力测试工具(Beetle.DT)
  • .Net下的签名与混淆
  • @AliasFor 使用
  • @property括号内属性讲解
  • [ 第一章] JavaScript 简史
  • [AutoSar]BSW_Memory_Stack_003 NVM与APP的显式和隐式同步
  • [C++]C++基础知识概述
  • [CareerCup] 17.8 Contiguous Sequence with Largest Sum 连续子序列之和最大
  • [ios] IOS文件操作的两种方式:NSFileManager操作和流操作【转】