Mind+ 行空板M10|HTTP调用大模型实现桌面整洁识别完整方案
一、前置条件
- 行空板M10提前连接WiFi无线网络
- 申请支持图像输入的视觉大模型HTTP API(通义千问、智谱清言、文心一言等)
- Mind+需要加载扩展库:行空板、网络请求、base64编码、摄像头、串口通信(驱动XFS5152语音模块)
二、核心实现流程
- 行空板板载摄像头截取实时画面
- 将图像编码为Base64字符串
- 构造HTTP POST请求JSON报文,携带图片与固定提示词Prompt
- 严格约束大模型输出,仅返回「整洁」或「杂乱」
- 程序解析返回结果,屏幕文字提示 + XFS5152语音播报
标准Prompt(直接复制使用)
你是桌面整洁判断助手,只判断图片桌面整洁程度。
规则:桌面上分散摆放书本、文具、水杯等杂物≥3件判定为【杂乱】;桌面物品很少或物品整齐摆放判定为【整洁】。
**只允许输出两个词语之一,不要多余文字:整洁 / 杂乱**
三、完整可直接运行Python代码(行空板M10 Mind+)
from unihiker import Unihiker
import time
import requests
import base64
import serial
import cv2
# ======================配置区【自行修改参数】======================
u = Unihiker()
# 大模型API地址、密钥
API_URL = "填入你的视觉大模型http接口地址"
API_KEY = "填入你的API密钥"
# XFS5152语音合成模块串口参数
ser = serial.Serial("/dev/ttyS1", 9600, timeout=0.2)
# 识别请求间隔,避免高频调用API产生费用、接口限流
QUERY_INTERVAL = 8
# =================================================================
# XFS5152语音播报函数
def voice_speak(text):
head = bytes([0xFD, 0x00, len(text)+2, 0x01, 0x01])
data = text.encode("utf-8")
ser.write(head + data)
# 摄像头图像转为Base64字符串
def image_to_base64(frame):
ret, buffer = cv2.imencode('.jpg', frame)
img_bytes = buffer.tobytes()
b64_str = base64.b64encode(img_bytes).decode("utf-8")
return b64_str
# HTTP请求大模型进行图像识别
def detect_desktop_by_llm(img_base64):
prompt = """
你是桌面整洁判断助手,只判断图片桌面整洁程度。
规则:桌面上分散摆放书本、文具、水杯等杂物≥3件判定为【杂乱】;桌面物品很少或物品整齐摆放判定为【整洁】。
**只允许输出两个词语之一,不要多余文字:整洁 / 杂乱**
"""
payload = {
"model": "qwen-vl-plus",
"messages": [
{
"role": "user",
"content": [
{"type": "text", "text": prompt},
{"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{img_base64}"}}
]
}
]
}
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
try:
resp = requests.post(API_URL, headers=headers, json=payload, timeout=10)
res_json = resp.json()
result_text = res_json["choices"][0]["message"]["content"].strip()
return result_text
except Exception as e:
print("网络请求失败:", e)
return "error"
last_query_time = 0
# 主循环
while True:
now = time.time()
if now - last_query_time > QUERY_INTERVAL:
last_query_time = now
# 获取摄像头画面
frame = u.get_camera_frame()
# 图片转base64
img_b64 = image_to_base64(frame)
# 调用大模型识别
ret = detect_desktop_by_llm(img_b64)
print("识别结果:", ret)
# 清空屏幕原有文字
u.clear_screen()
# 判断结果并执行交互
if ret == "整洁":
voice_speak("当前桌面整洁,请继续保持。")
u.draw_text(x=30, y=80, text="✅桌面整洁", color="green", font_size=24)
elif ret == "杂乱":
voice_speak("桌面杂物较多,请及时整理桌面。")
u.draw_text(x=30, y=80, text="⚠️桌面杂乱", color="red", font_size=24)
else:
voice_speak("图像识别异常,请检查网络。")
u.draw_text(x=30, y=80, text="识别失败", color="gray", font_size=24)
time.sleep(0.2)
四、Mind+图形化积木搭建步骤(图形化编程适用)
- 初始化模块
- 初始化行空板、开启内置摄像头
- 初始化串口,对接XFS5152语音合成模块
- 导入网络请求扩展、Base64编码扩展
- 循环主体逻辑
① 延时等待(设置8秒间隔,限制请求频率)
② 调用摄像头捕获图像
③ 将图片文件编码为Base64字符串
④ 构造POST请求JSON报文,填入Prompt与图片Base64
⑤ 发送HTTP网络请求
⑥ 解析接口返回文本
⑦ 判断返回内容:整洁/杂乱,执行屏幕文字显示 + 语音播报
五、重要优化与避坑指南
- Prompt强制约束输出格式
严格限制模型只能输出「整洁」或「杂乱」,禁止模型输出额外描述文字,否则程序判断失效。 - 网络异常容错处理
代码内置异常捕获,WiFi断开、接口超时不会导致程序卡死,自动提示识别失败。 - 控制调用频率
最低间隔6~8秒,频繁调用会造成接口限流、产生额外费用。 - 图像体积优化
可适当降低摄像头分辨率,减小图片大小,加快网络传输速度。 - 赛事风险提示
该方案全程依赖WiFi网络,无网络环境下AI识别功能失效。如果赛事要求离线评审,请提前做好备选方案。
六、补充接线说明
XFS5152语音合成模块 → 行空板M10 IO扩展板
- VCC → 5V
- GND → GND
- TX → RX(UART1)
- RX → TX(UART1)

浙公网安备 33010602011771号