FireBeetle 2 ESP32 C6: 讯飞星火Fuctioncall控制SERVO和LED
本帖最后由 sky007 于 2024-4-19 15:36 编辑FireBeetle 2 ESP32 C6:
讯飞星火Fuctioncall控制SERVO和LED
https://www.bilibili.com/video/BV1X1421R7QU/
概述
FireBeetle 2 ESP32 C6试用活动第二篇,参考社区大佬云天的《用大语言模型控制行空板机器人》https://mp.weixin.qq.com/s/rS1ENffALjplNvXlD2Wzpw项目,创建一个可以通过自然语言输入控制的ESP32 C6的系统。系统通过Python程序将文本指令用functioncall发送讯飞星火大模型,返回回来的指令通过MQTT控制ESP32 C6开发板。ESP32 C6接收到指令后,控制舵机和LED。
材料清单
[*]FireBeetle 2 ESP32 C6开发板 x 1
[*]舵机 x 1
[*]LED灯 x 2
[*]相关电子元件和连接器
硬件组装
PCB设计
焊接和组装
完成了PCB的焊接工作,确保所有组件正确连接。
软件配置
Python程序编写
集成了讯飞语音识别服务的API,配置了必要的参数,如API密钥和用户ID,以确保语音指令能够被正确识别和转换。
编写了一个Python程序,该程序能够接收用户的语音输入,通过讯飞API转换为文本指令,然后将指令通过MQTT协议发送给ESP32 C6开发板。主要执行程序如下:
while True: Input = input("\n" +"我:") question = checklen(getText("user",Input)) SparkApi.answer ="" print("星火:",end = "") main(appid,api_key,api_secret,Spark_url,domain,question) getText("assistant",SparkApi.answer)
ESP32 C6开发板编程
为ESP32 C6开发板编写了micropython程序,该程序能够解析接收到的MQTT消息,并根据指令控制舵机和LED灯的动作。
def deal(MSG): command = MSG.decode('utf-8') if command !="": # 使用'/'作为分隔符分割字符串 parts = command.split('/')
print(parts)# 输出: ['LED', 'right_LIGHT', '30%'],['MOTOR', 'go', '60%'],['SERVO', 'turn', '30']
try: # 处理最后一个部分,如果它包含'%' if '%' in parts[-1]: # 按照'%'切割最后一个部分,并转换为浮点数 percentage_str, _ = parts[-1].split('%') percentage_float = float(percentage_str) / 100 # 将最后一个部分替换为转换后的浮点数 parts[-1] = str(percentage_float)
print(parts)# 输出: ['motor', 'go', '0.6']
value=float(parts[-1]) print(value)
except ValueError: print("无法将字符串转换为数字")
if parts=="LED": DUTY=int(value*1023) if parts=="right_LED": right_LIGHT.duty(DUTY) if parts=="left_LED": left_LIGHT.duty(DUTY) if parts=="BOTH": right_LIGHT.duty(DUTY) left_LIGHT.duty(DUTY)
if parts=="SERVO": angle=int(value) Servo(S1,angle)
测试结果
经过测试,系统能够准确地识别用户的语音指令,并将指令转换为舵机和LED灯的动作。但相同提示要求,讯飞返回的指令有时会有所出入,functioncll的控制方式,还需要进一步摸索。
结论
本项目展示了如何将自然语言处理与物联网设备相结合,创建一个可以通过语音控制的智能机器人系统。FireBeetle 2 ESP32 C6开发板的灵活性和强大的处理能力,结合讯飞的语音识别服务和MQTT协议,为实现复杂的控制逻辑提供了可能。
附录
· 项目源代码:functioncall(MQTT).py(控制端),C6.py(执行端)· PCB设计文件:Gerber_测试用板(DF-C6)_PCB_测试用板.zip· 讯飞API文档:https://www.xfyun.cn/doc/spark/Web.html#_2-function-call
页:
[1]