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

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

亚博智能的K210视觉识别模块......  

固件库版本:  canmv_yahboom_v2.1.1.bin

既然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博客

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

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

相关文章

ctfshow-web入门-爆破(web21-web24)

目录 1、web21 2、web22 3、web23 4、web24 1、web21 爆破什么的,都是基操 需要认证才能访问 随便输一个用户名和密码抓包看看: 多出来一个认证的头 Authorization: Basic YWRtaW46MTIzNDU2 base64 解码看看: 就是我们刚才输入的用于测…

C语言 | Leetcode C语言题解之第127题单词接龙

题目&#xff1a; 题解&#xff1a; struct Trie {int ch[27];int val; } trie[50001];int size, nodeNum;void insert(char* s, int num) {int sSize strlen(s), add 0;for (int i 0; i < sSize; i) {int x s[i] - ;if (trie[add].ch[x] 0) {trie[add].ch[x] size;m…

计算机系统结构之FORK和JOIN

程序语言中用FORK语句派生并行任务&#xff0c;用JOIN语句对多个并发任务汇合。 FORK语句的形式为FORK m&#xff0c;其中m为新领程开始的标号。 JOIN语句的形式为JOIN n&#xff0c;其中n为并发进程的个数。 例1&#xff1a;给定算术表达式ZEA*B*C/DF经并行编译得到如下程序…

刘强东的简历很拉风!

正式宣布&#xff1a;GPT 4o 在国内直接使用 ~ 来看一下江湖人称“东哥”刘强东的简历&#xff0c;大佬确实很拉风&#xff1a; 刘强东&#xff0c;京东的创始人&#xff0c;是中国互联网行业的传奇人物。他的故事充满了奋斗和创新&#xff0c;以下是我对他简历的一些看法&…

Vitis HLS 学习笔记--HLS流水线类型

目录 1. 简介 2. 优缺点对比 2.1 Stalled Pipeline 2.2 Free-Running/Flushable Pipeline 2.3 Flushable Pipeline 3. 设置方法 4. FRP的特殊优势 5. 总结 1. 简介 Vitis HLS 会自动选择正确的流水线样式&#xff0c;用于流水打拍函数或循环。 停滞的流水线&#xff…

K8S SWCK SkyWalking全链路跟踪工具安装

官方参考&#xff1a;如何使用java探针注入器? 配置两个demo&#xff0c;建立调用关系&#xff0c; 首先创建一个基础镜像dockerfile from centos 先安装java 参考: linux rpm方式安装java JAVA_HOME/usr/java/jdk1.8.0-x64 CLASSPATH.:$JAVA_HOME/lib/tools.jar PATH…

了解Maven,并配置国内源

目录 1.了解Maven 1.1什么是Maven 1.2快速创建一个Maven项⽬ 1.3Maven 核⼼功能 1.3.1项⽬构建 1.3.2依赖管理 1.4Maven Help插件 2.Maven 仓库 2.1中央仓库 2.2本地仓库 3.Maven 设置国内源 1.查看配置⽂件的地址 2.配置国内源 3.设置新项⽬的setting 1.了解Ma…

Hive安装-内嵌模式

1.官网下在hive3.1.2版本 Index of /dist/hive/hive-3.1.2 2.上传到master节点的/opt/software目录下 3.解压到/opt/module目录下 tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /opt/module/ 检查解压后文件 4.修改名字 改为hive cd /opt/module mv apache-hive-3.1.2-bin…

期权的时间价值是什么?和期权内在价值有啥不同?

今天带你了解期权的时间价值是什么&#xff1f;和期权内在价值有啥不同&#xff1f;期权的内在价值&#xff0c;是指期权立即执行产生的经济价值。 期权的时间价值是什么&#xff1f; 期权的时间价值是期权价格的一个重要组成部分&#xff0c;也被称为期权的外在价值。它是指期…

【再探】设计模式—备忘录模式与解释器模式

备忘录模式是用于保存对象在某个时刻的状态&#xff0c;来实现撤销操作。而解释器模式则是将文本按照定义的文法规则解析成对应的命令。 1 备忘录模式 需求&#xff1a;保存对象在某个时刻的状态&#xff0c;后面可以对该对象实行撤销操作。 1.1 备忘录模式介绍 提供一种状…

RK3568笔记二十九:RTMP推流

若该文为原创文章&#xff0c;转载请注明原文出处。 基于RK3568的RTMP推流测试&#xff0c;此代码是基于勇哥的github代码修改的&#xff0c;源码地址MontaukLaw/3568_rknn_rtmp: rk3568的推理推流 (github.com) 感兴趣的可以clone下来测试。 也可以下载修改后的代码测试。Y…

普华永道信任危机:上市公司解约风波与反思

在全球会计业界的星空中&#xff0c;普华永道无疑是那颗最为耀眼的星之一。然而&#xff0c;近日这颗星却遭遇了前所未有的信任危机。这家大名鼎鼎的四大会计师事务所之一&#xff0c;近期陷入了上市公司解约的风波之中&#xff0c;其声誉与地位正面临严峻挑战。 就在昨晚&…

Vivado的两种下载安装方式:Webpack下载与安装、本地文件安装详细步骤讲解

目录 1.前言2. Vivado Webpack下载、安装3.本地文件下载安装 微信公众号获取更多FPGA相关源码&#xff1a; 1.前言 本人自本科大二开始接触FPGA相关知识&#xff0c;现已将近六年&#xff0c;由于一直在上学&#xff0c;也不是一直在搞FPGA&#xff0c;但是也完成过一些项目…

【学习】企业如何选择一个合适的DCMM咨询机构

DCMM是我国首个数据管理领域正式发布的国家标准。旨在帮助企业利用先进的数据管理理念和方法&#xff0c;建立和评价自身数据管理能力&#xff0c;持续完善数据管理组织、程序和制度&#xff0c;充分发挥数据在促进企业向信息化、数字化、智能化发展方面的价值。该标准借鉴了国…

数据仓库核心:维度表设计的艺术与实践

文章目录 1. 引言1.1基本概念1.2 维度表定义 2. 设计方法2.1 选择或新建维度2.2 确定维度主维表2.3 确定相关维表2.14 确定维度属性 3. 维度的层次结构3.1 举个例子3.2 什么是数据钻取&#xff1f;3.3 常见的维度层次结构 4. 高级维度策略4.1 维度整合维度整合&#xff1a;构建…

IDEA 学习之 疑难杂症系列

IDEA 学习之 疑难杂症系列 1. Mapstruct 编译空指针问题 1.1. 现象 NullPointerException at org.mapstruct.ap.internal.processor.DefaultVersionInformation.createManifest1.2. 原因 MapStruct 在 IDEA 2020.3 版本编译 NPE 问题 1.3. 解决办法 2. IDEA 学习之 编译内…

python列表的进阶

小结&#xff1a; # 列表的删除小结&#xff1a; # 删除列表的最后一列 punished students.pop() print(被罚站的人是&#xff1a; punished &#xff0c;同学们引以为戒。)# 根据下标删除 del students[0]#根据名称删除 students.remove(王熙凤)在今天的课程里&#xff0c…

绿联 安装SeaTable在线协同表格

绿联 安装SeaTable在线协同表格 1、镜像 seatable/seatable-developer:latest 2、安装 2.1、基础设置 重启策略&#xff1a;容器退出时总是重启容器。 2.2、网络 网络选择桥接(bridge)。 2.3、存储空间 装载路径/shared不可变更。 2.4、端口设置 容器端口固定80&#x…

Unity动画系统介绍

Unity动画系统介绍 Animator组件&#xff1a; 这是Unity中用于控制动画状态的组件&#xff0c;它与Animator Controller一起工作&#xff0c;可以基于游戏逻辑来切换不同的动画状态。 Animator Controller&#xff1a; 这是一个用于管理动画状态机的组件&#xff0c;它允许…

Leetcode:回文数

题目链接&#xff1a;9. 回文数 - 力扣&#xff08;LeetCode&#xff09; 普通版本&#xff08;字符串双指针&#xff09; 1、x为负数时永远不可能为回文数 2、x为个位数时不可能是回文数 class Solution { public:bool isPalindrome(int x) {if(x<0||(x%100 &&…