K230 实现串口通信
本节我们介绍通过K230的串口与上位机进行通信这里我们需要用到一个【USB转TTL模块】以及一根【PH2.0 4Pin转杜邦散头2.54(公转母,200mm)】因为本节教程中,我们会使用电脑作为和K230通信的设备,而现代电脑通常只有USB接口,不直接提供TTL串口,所以我们需要使用一个USB转TTL模块进行 “翻译”YbUart是一个基于MicroPython的串口通信封装类,提供了简单的串口初
串口通信
文章目录
实验环境
亚博智能 K230 视觉识别模块
固件版本:CanMV_K230_YAHBOOM_micropython_V1.3.2.img.gz
注1:用其它厂家的K230也可以实现,只是代码部分需要稍作修改,代码部分亚博K230用的屏幕分辨率是640x480
注2:本文摘自亚博官网K230系列的教程,此处仅作分享作用
简介
本节我们介绍通过K230的串口与上位机进行通信
这里我们需要用到一个【USB转TTL模块】以及一根【PH2.0 4Pin转杜邦散头2.54(公转母,200mm)】
因为本节教程中,我们会使用电脑作为和K230通信的设备,而现代电脑通常只有USB接口,不直接提供TTL串口,所以我们需要使用一个USB转TTL模块进行 “翻译”
接线

快速开始
打开串口助手
在配套资料的【0.开发板资料】中,双击运行 UartAssist.exe 串口助手

打开之后,我们在①处选择USB转TTL模块在电脑中显示的串口号
一般情况下这个串口号会以CH340结尾
最快速的判断方法是通过拔出USB转TTL和插上之后进行对比,拔出后消失的串口号就是USB转TTL的串口


运行代码
我们打开 CanMV IDE,将 K230 连接至电脑。
按 Ctrl + N 键新建一份代码,并删除所有自动生成的代码内容
复制下面的代码并粘贴到IDE中 [ 源码汇总 / 02.Basic / 05.uart.py ]
# 导入串口通信库
# (Import Yahboom UART communication library)
from ybUtils.YbUart import YbUart
# 创建串口实例,设置波特率为115200
# (Create UART instance with baud rate set to 115200)
# 波特率是指每秒传输的比特数,115200是常用的高速通信速率
# (Baud rate refers to bits per second, 115200 is a commonly used high-speed communication rate)
uart = YbUart(baudrate=115200)
# 发送数据到连接的设备
# (Send data to the connected device)
# 发送字符串"Hello Yahboom"并附加换行符
# (Send the string "Hello Yahboom" with a newline character)
uart.send("Hello Yahboom\n")
# 无限循环,持续监听串口数据
# (Infinite loop to continuously monitor serial port data)
while True:
# 读取串口接收到的数据
# (Read data received from the serial port)
# 如果没有数据,将返回None或空字符串
# (If no data is available, it will return None or an empty string)
data = uart.read()
# 检查是否接收到数据
# (Check if data was received)
if data:
# 将接收到的数据打印到控制台
# (Print the received data to the console)
print(data)
# 注意:由于上面的无限循环,这段代码实际上永远不会执行
# (Note: Due to the infinite loop above, this code will never execute)
# 关闭串口,释放资源
# (Close the UART and release resources)
uart.deinit()
点击CanMV IDE左下角的绿色的运行按钮
可以观察到,串口助手中接受到了K230发送的消息
对应代码中的
uart.send(“Hello Yahboom\n”)
然后我们尝试用串口助手向K230发送信息

观察到CanMV IDE的串行终端中有如下输出
这里有几个常见的问题:
为什么字符串是一个 b’xxxxxxxxxx (发送的内容)'的格式 ?
答:接收到的信息默认是bytes的数据类型。可以使用.decode方法转为字符串
注意,这里暂时不能接收中文字符
为什么逗号","变成了 “\xef\xbc\x8c” ?
答:因为发送的时候使用的是中文的逗号,中文字符的bytes形式就是这样的。
*更新:read方法中,设置decode=True可以正常解析大部分的中文字符了
为什么分为了两行?
因为默认的接受缓冲区大小为128字节,超出缓冲区大小的就会作为新的一次接收
- 缓冲区大小可以修改
常见问题 & 补充
USB转TTL模块
为什么 K230 和 电脑通信需要USB转TTL模块?
- 接口差异:K230的通信几口使用TTL(晶体管-晶体管逻辑)串口通信,而现代电脑通常只有USB接口,不直接提供TTL串口。
- 电平转换:TTL串口使用的是0V和3.3V/5V的电平标准,而USB使用不同的电平标准。USB转TTL模块可以安全地转换这些电平,防止硬件损坏。
- 驱动支持:USB转TTL模块内置了必要的电路和芯片(如CH340、CP2102、FTDI等),能够让电脑将USB连接识别为虚拟串口(COM端口)。
这个模块本质上是一个"翻译器",让使用不同通信标准的设备能够顺利交换数据。
关闭串口助手
在默认情况下,点击右上角关闭按键,串口助手不会彻底关闭,而是隐藏到了系统右下角托盘图标处

在串口助手没有完全关闭的时候,如果你重新打开了一个串口助手软件,点击【打开】,会报错串口被占用
YbUart API文档
类概述
YbUart是一个基于MicroPython的串口通信封装类,提供了简单的串口初始化、数据收发功能。
构造函数
__init__(self, baudrate=115200)
初始化串口设备。
参数:
baudrate(int): 串口波特率,默认115200
功能:
- 配置GPIO9为UART1_TXD (发送引脚)
- 配置GPIO10为UART1_RXD (接收引脚)
- 初始化UART1设备
方法
send(text)
发送数据到串口。
参数:
text: 要发送的数据
read(size=128, decode=False)
从串口读取数据。
参数:
size(int): 读取的最大字节数,默认128字节decode(bool): 是否将读取的数据解码为UTF-8字符串,默认False
返回:
- 如果decode=True,返回解码后的字符串
- 如果decode=False,返回原始字节数据
- 如果没有数据可读,返回None
deinit()
关闭并释放串口设备。
使用示例
from ybUtils.YbUart import YbUart
# 创建串口实例
uart = YbUart(baudrate=115200)
# 发送数据
uart.send("Hello Yahboom\n")
while True:
# 读取数据
data = uart.read()
if data:
print(data)
# 关闭串口
uart.deinit()
更多推荐




所有评论(0)