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

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

相关文章:

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

今日开始学习K210视觉识别模块:简单的认识与串口程序 亚博智能的K210视觉识别模块...... 固件库版本: canmv_yahboom_v2.1.1.bin 既然K210作为一个视觉识别外设模块来使用,我认为第一个程序 就没必要学点灯之类的了,直接学习串口如何配置开始为妥&…...

[数据集][目标检测]脑溢血检测数据集VOC+YOLO格式767张2类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):767 标注数量(xml文件个数):767 标注数量(txt文件个数):767 标注类别…...

如何借VR之手,让展厅互动更精彩?

VR虚拟现实技术以其卓越的沉浸式体验为特点,引领用户踏入一个全新的虚拟世界,正因如此,它开始被广泛应用于展厅、商业等多个领域。那么,今天,让我们就来了解一下这种技术是如何为展厅带来精彩互动体验的吧!…...

微信小程序如何使用地图

微信小程序使用地图功能时&#xff0c;主要涉及到地图组件的引入、配置、以及相关的API调用。以下是一个详细的使用指南&#xff1a; 1. 引入地图组件 在微信小程序的.wxml文件中&#xff0c;通过<map>标签引入地图组件。你可以设置地图的经纬度、缩放级别、控件等属性…...

力扣 287. 寻找重复数

给定一个包含 n 1 个整数的数组 nums &#xff0c;其数字都在 [1, n] 范围内&#xff08;包括 1 和 n&#xff09;&#xff0c;可知至少存在一个重复的整数。假设 nums 只有 一个重复的整数 &#xff0c;返回 这个重复的数 。你设计的解决方案必须 不修改 数组 nums 且只用常量…...

怎样清理Mac存储空间 苹果电脑内存不够用怎么办 苹果电脑内存满了怎么清理

在使用 Mac 电脑的过程中&#xff0c;用户经常会遇到磁盘空间不足的困扰&#xff0c;这时候就需要寻找有效的方法来清理苹果电脑内存了。 清理Mac存储空间可以通过多种方法进行&#xff0c;以确保你的Mac能够高效运行并释放宝贵的存储空间。以下是一些有效的清理和优化方法&am…...

网络遗忘权的实现方法

网络遗忘权的实现方法 目录 从禁书说起 从销毁硬件信息的方法得到的启示 现在网络遗忘权的实现方法 从禁书说起 古代有禁书的需求,直接的方法就是贴出告示,强行收缴,然后付之一炬. 这个方法的问题在于只要有一个人敢冒死藏书,再次手抄或者是印刷,就 会让之前的禁书努力,付…...

【Python内功心法】:深挖内置函数,释放语言潜能

文章目录 &#x1f680;一、常见内置函数&#x1f308;二、高级内置函数⭐1. enumerate函数&#x1f44a;2. eval函数❤️3. exec函数&#x1f4a5;4. eval与exec 中 globals与locals如何用☔4-1 globals 参数&#x1f3ac;4-2 locals 参数 ❤️5. filter函数&#x1f44a;6. z…...

JS-09-es6常用知识1

目录 1 模板字符串 1.1 模板字符串基本用法 1.2 模板字符串解决了一些痛点 2 解构赋值 2.1 对象的解构赋值 2.2 函数参数的解构赋值 2.3 补写&#xff1a;属性的简写 3 rest参数 3.1 arguments 3.2 rest参数 3.3 补充&#xff1a;判断数据类型 4 箭头函数 4.1 …...

SpringBoot 基础之自动配置

SpringBoot 自动配置 SpringBoot 通过 自动配置 简化了大量的繁复的配置信息。 启动类 Application 中有两处特别之处&#xff1a; 注解&#xff1a;SpringBootApplication run 方法&#xff1a;SpringApplication.run(…) SpringBootApplication 注解至少等价于以下三个注…...

Oracle dblink 发现Network 等待事件的分析 enq: KO - fast object checkpoint

所有的sql 通过dblink 查询全部等待中&#xff0c; 同一个SQL 20多个session 在跑&#xff0c;等待事件network&#xff0c;可能怀疑是不是网络断开了&#xff0c;导致没有返回 执行sql 如下&#xff1a; BEGIN Xdblink ; END; 去到dblink 所在的db&#xff0c;发现20多个sql在…...

SpringMVC:向三大域对象存数据

1. 简介 Servlet中的三个域对象 请求域&#xff1a;request会话域&#xff1a;session应用域&#xff1a;application 主要是通过&#xff1a;setAttribute getAttribute方法来完成在域中数据的传递和共享。 点击跳转Servlet详细概念 // 向域中存储数据 void setAttribute(St…...

如何用python做一个用户登录界面——浔川python社

1 需解决的问题&#xff1a; 1.1如何用python做一个用户登录界面&#xff1f; 1.2需要用到哪些库、模块&#xff1f; 2 问题解决&#xff1a; 2.1 回答 1.1 &#xff1a;合理即可&#xff0c;无标准回答。 2.2 回答 1.2 &#xff1a;tk库&#xff08;缩写&#xff09;、GUL界面…...

Python知识点9---推导式

提前说一点&#xff1a;如果你是专注于Python开发&#xff0c;那么本系列知识点只是带你入个门再详细的开发点就要去看其他资料了&#xff0c;而如果你和作者一样只是操作其他技术的Python API那就足够了。 Python提供的推导式&#xff0c;只对列表、字典、集合三种数据类型生…...

用C++做一个跑酷游戏

要用C创建一个跑酷游戏是一个相对复杂的任务&#xff0c;因为它涉及到图形渲染、用户输入处理、物理模拟等多个方面。由于C本身并不直接支持图形渲染&#xff0c;我们通常需要使用一个图形库来帮助我们实现这一点。 一个常用的选择是使用SFML&#xff08;Simple and Fast Mult…...

基于字典树可视化 COCA20000 词汇

COCA20000 是美国当代语料库中最常见的 20000 个词汇&#xff0c;不过实际上有一些重复&#xff0c;去重之后大概是 17600 个&#xff0c;这些单词是很有用&#xff0c;如果能掌握这些单词&#xff0c;相信会对英语的能力有一个较大的提升。我很早就下载了这些单词&#xff0c;…...

TypeScript 中的命名空间

1. 命名空间的概念 命名空间是 TypeScript 提供的一种组织代码的方式&#xff0c;它类似于其他编程语言中的模块化系统&#xff0c;但有一些不同之处。命名空间可以包含变量、函数、类等&#xff0c;并且可以嵌套使用&#xff0c;从而更好地组织和管理代码。 2. 定义命名空间…...

[C++] 小游戏 斗破苍穹 2.2.1至2.11.5全部版本(上) zty出品

大家好,今天zty整合了斗破苍穹2.2.1到2.11.5的所有版本 我这么辛苦,就要50个赞吧 2.2.1 #include<stdio.h> #include<ctime> #include<time.h> //suiji #include<windows.h> //SLEEP函数 struct Player //玩家结构体,并初始化player { char name[…...

单元测试的心法分享

大家好&#xff0c;我是G探险者&#xff01; 今天我们简单聊聊单元测试的哪些事儿~ 两天时间我玩明白了单元测试的套路。 这里我分享一下思路。 在我眼里单元测试室什么&#xff1f; 请看这张草图&#xff1a; 单元测试主要关注单个代码单元&#xff08;通常是类或方法&am…...

【python】多线程(3)queue队列之不同延时时长的参数调用问题

链接1&#xff1a;【python】多线程&#xff08;笔记&#xff09;&#xff08;1&#xff09; 链接2&#xff1a;【python】多线程&#xff08;笔记&#xff09;&#xff08;2&#xff09;Queue队列 0.问题描述 两个线程&#xff0c;但是不同延时时长&#xff0c;导致数据输出…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...

Linux系统部署KES

1、安装准备 1.版本说明V008R006C009B0014 V008&#xff1a;是version产品的大版本。 R006&#xff1a;是release产品特性版本。 C009&#xff1a;是通用版 B0014&#xff1a;是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存&#xff1a;1GB 以上 硬盘&#xf…...

AI语音助手的Python实现

引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...

深入浅出WebGL:在浏览器中解锁3D世界的魔法钥匙

WebGL&#xff1a;在浏览器中解锁3D世界的魔法钥匙 引言&#xff1a;网页的边界正在消失 在数字化浪潮的推动下&#xff0c;网页早已不再是静态信息的展示窗口。如今&#xff0c;我们可以在浏览器中体验逼真的3D游戏、交互式数据可视化、虚拟实验室&#xff0c;甚至沉浸式的V…...

深入理解 C++ 左值右值、std::move 与函数重载中的参数传递

在 C 编程中&#xff0c;左值和右值的概念以及std::move的使用&#xff0c;常常让开发者感到困惑。特别是在函数重载场景下&#xff0c;如何合理利用这些特性来优化代码性能、确保语义正确&#xff0c;更是一个值得深入探讨的话题。 在开始之前&#xff0c;先提出几个问题&…...

第14节 Node.js 全局对象

JavaScript 中有一个特殊的对象&#xff0c;称为全局对象&#xff08;Global Object&#xff09;&#xff0c;它及其所有属性都可以在程序的任何地方访问&#xff0c;即全局变量。 在浏览器 JavaScript 中&#xff0c;通常 window 是全局对象&#xff0c; 而 Node.js 中的全局…...

设计模式-3 行为型模式

一、观察者模式 1、定义 定义对象之间的一对多的依赖关系&#xff0c;这样当一个对象改变状态时&#xff0c;它的所有依赖项都会自动得到通知和更新。 描述复杂的流程控制 描述多个类或者对象之间怎样互相协作共同完成单个对象都无法单独度完成的任务 它涉及算法与对象间职责…...