1.k210和pico通信
1.1 实验前提
本教程使用的是pico,k210要运行K210-AI(stm32_pico_arduino)里面的程序才能开始实验
pico *1
k210视角模块 1(要有sd卡(里面有带AI的模型)、摄像头)
usb转ttl模块1
1.2 实验接线
接线如图所示:
1.3主要代码解析
u1 = UART(1, baudrate=115200, tx=Pin(8), rx=Pin(9), bits=8, parity=None, stop=0) # 设置波特率和串口号
k210_data_class = 0 #例程编号
k210_data_x = 0 #横坐标
k210_data_y = 0 #纵坐标
k210_data_w = 0 #宽度
k210_data_h = 0 #长度
k210_data_id = 0 #标签
k210_data_msg = "" #信息
while True:
while u1.any() >0:
rxx=u1.read()
#u1.write(rxx)
recv_k210_data(rxx) #处理收到的k210信息
if k210_data_class != 0:
#是物体检测的例程
if k210_data_class == 9:
sstr = "x="+str(k210_data_x) +" y="+str(k210_data_y) +" w="+str(k210_data_w) +" h="+str(k210_data_h) +"\r\n"
u1.write(sstr)
u1.write(k210_data_msg+'\r\n')
k210_data_class = 0
由程序可得
- k210_data_class :例程编号
- k210_data_x :是识别出来框左上角的横坐标(范围:0-240)
- k210_data_y :是识别出来框左上角的纵坐标(范围:0-320)
- k210_data_w :是识别出来框的宽度(范围:0-240)
- k210_data_h :是识别出来框的长度(范围:0-320)
- k210_data_id :是识别出来的标签
- k210_data_msg :是识别出来的信息
这个处理主要是接到了k210的信息,调用recv_k210_data()进行处理,并把处理完的信息赋值给k210_data_XXX的成员。 注意 如果想二次开发,在不改动k210程序和处理数据的函数前提下,直接调用k210_data_XXX的变量就好(xxx:指的是x\y\w\h\id\msg)
1.4实验现象
- 连接好线后,k210视角模块可以脱机运行 k210脱机运行方法
- 串口助手设置成如图的界面
- 把pico的python固件下进pico,运行本教程提供的物体检测的程序,如何运行pico的python程序,请看pico相关的环境搭建教程,本教程不在阐述
- 然后k210跑相关的例程,串口助手就会打印出k210传输给pico的重要信息,下图的现象是物体检测的结果
本例程只输出x\y\w\h\msg的这5个成员数据 msg:信息是内容为(0.飞机、1.自行车、2.鸟、3.船、4.瓶子、5.公交车、6.小汽车、7.猫、8.椅子、9.奶牛、10.餐桌、11.狗、12.马、13.摩托车、14.人、15.盆栽、16.绵羊、17.沙发、18.火车、19.显示器)