跳到主要内容

串口指令集

最后更新:2020-12-4
更新摘要


通过其他主控诸如meowbit、掌控板、microbit、Arduino等给KOI发送串口K指令来驱动,达到项目式人工智能的目的。

危险
  • 如果串口指令调试KOI,需要将KOI作为模块,通过侧面PH2.0 4PIN端子口与主控板连接。
  • 确保KOI不与电脑连接(否则KOI将进入主控模式,该模式下无法采用串口指令调试)

范例

  • 主控:microbit
  • 功能:人脸追踪为例子
#/bin/python
from microbit import *

re_list = []

'''
K30 初始化人脸模型
K31 执行人脸追踪,会导致KOI返回坐标数据格式"K31 x y
'''
# 串口接收部分
def argument_gen():
global re_list
if uart.any():
re = str(uart.readline(), 'UTF-8') # 转字节为字符串
re = re.strip() # 去掉首尾空格换行符
re_list = re.split(' ') # 已空格为分隔符分割放在列表
cmd = re_list[0]
if cmd == 'K31':
face_callback()

# 单独抽离人脸监测返回值执行任务部分
def face_callback():
global re_list
if len(re_list)>1:
display.scroll(re_list[1])

# 串口初始化
uart.init(baudrate=115200, tx=pin1, rx=pin2)
uart.write('\n\n')
sleep(1000)
uart.write('\n\n')
sleep(1000)
uart.write('K30\r\n')
sleep(500)
while True:
# KOI加载人脸模型
uart.write('K31\r\n')
sleep(50)
# 接收并处理来自KOI返回的数据
if 'argument_gen' in dir():
argument_gen()

串口指令

指令描述参数返回
K0返回KOI固件版本信息"K0 version"
K1 pic显示.jpg格式图片pic : name.jpg
K2 pic截取显示帧存储为.jpg格式图片pic : name.jpg
K3读取按键状态"K3 0 0"
(顺序是A、B,按下状态为1)
K4 x y delay text显示英文字符x y :坐标
delay: 延时(ms)
text: 英文或数字字符串
K6 dir根据摄像头方向自行更改屏幕显示方式dir: 0前置  2后置
K10 th识别圆型并标记识别框th:阈值(推荐2000)
越小越易识别但误差越大
"K10 圆心x 圆心y 半径"
K11 th识别矩型并标记识别框th:阈值(推荐6000)
越小越易识别但误差越大
"K11 中心x 中心y 宽 高"
K12 name通过颜色进行线条追踪(name: 自行取名
主要是好辨认,比如黑线就取black
"K12 x1 y1 x2 y2"
K15 name追踪色块(需要先颜色校准)name: 自行取名
主要是好辨认,比如黑线就取black
"K15 中心x 中心y 宽 高"
K16 name颜色校准name: 自行取名
主要是好辨认,比如黑线就取black
K20识别二维码"K20 信息"
K22识别条形码"K22 信息"
K23识别AprilTagAprilTag识别
返回值:ID x y width height rx ry rz(轴旋转角)
"K23 id 中心x 中心y 宽 高 tx ty tz(偏移)"
K30人脸识别Yolo模型初始化
K31人脸追踪并标记识别框(当前有个bug每次都会返回上一次识别的框框和信息,待解决)"K31 中心x 中心y"
K32返回检测到的人脸数量"K32 数量"
K40重置(初始化)特征分类型
K41 tagName添加分类标签,上限40个素材,每个分类可录制多个素材tagName: 自行取名方便记录,比如pen,apple
K42运行分类,识别物体并返回标签名"K42  标签名"
K43 path保存特征分类模型path: 相对路径,一般直接填模型名称即可,如:model.json
K44 path加载特征分类模型path: 将保存的模型再加载出来
K45 path加载KNN模型,需要结合Kittenblock训练模型并导出使用path: 相对路径,一般直接填模型名称即可,如:model.kmodel
K46运行KNN分类
"K42 标签名"
K50 routerName passwordKOI连接路由器网络(不支持5G,账号和密码尽量不要有特殊符号)不支持5G信号,路由器名称不要带空格,尽量英文字母开头
K51 host clientID port [user][password]加入MQTT服务器
user和password选填
host: MQTT服务器地址
clientID: 自由起名
Port:端口号(一般为1883)
K52 topic订阅话题topic: 一般会用/起头,如/temperature.
(前往iot.kittenbot.cn添加属于自己的话题)
K53 topic data向话题发送消息topic: 话题
data: 消息,也许不支持中文
K54获取ip地址"K54 ip"
K55 topic接收话题里的消息topic: 话题"K55 消息"
(消息会堆积)
K56获取网络时间
(需要先连接wifi)
"K56 time"
(time是个数组)
(year, month, day, hour, minute, second, week-1, passed from 1.1)
K61 name录制一段3s左右的音频并存储name: name.wav
K62 name播放录制或存储在SD卡中的wav音频文件name: name.wav
(wav音频文件要求:单通道,16K采样率,16bit样本位,3s内)
K63自动校准环境噪声,作为识别的基准环境音。(尽量保持安静)
同样也会清空当前缓存里的分类
K64 tagName添加命令词,并附带标签名。若成功添加,屏幕会返回绿色,红色则失败tagName: 自行取名方便记录,比如open、close
K65命令词听取,成功KOI显示绿色屏幕,并返回标签名"K65 tagName"
K66 path保存语音分类模型path: 相对路径,一般直接填模型名称即可,如:speech.json
K67 path加载语音分类模型path: 将保存的模型再加载出来
K75执行一次百度AI人脸识别
"K75 人脸token 性别 年龄 是否带口罩 表情"
K76 token groupName faceName将人脸token添加到云端人脸组token: K75获得的token
groupName: 组名(尽量独特一些,大家共用的)
faceName: 起个人脸名
K77 token groupName在指定的人脸组中搜索最后一次识别返回的人脸tokentoken: K75获得的token
groupNamel: 要搜索人脸的组名
"K77 faceName"
K78 str文字转语音,尽量别超过6个字
K98停止KPU(特征分类和人脸追踪)
不常用
K99软件复位

更新摘要

  • 2020-12-4

根据 最新KOI固件 v1.12.0版本 对串口指令描述做了更新