FireBeetle 2 ESP32 C6: 讯飞星火Fuctioncall控制SERVO和LED

2024-04-193637
AI 快速预览详细 收起
本项目展示了如何通过Python程序和讯飞星火大模型,使用自然语言指令控制FireBeetle 2 ESP32 C6开发板上的舵机和LED。项目包括硬件组装、软件配置和测试结果。主要步骤包括编写Python程序,集成讯飞API,并通过MQTT协议发送指令给ESP32 C6开发板。经过测试,系统能够准确地识别用户的语音指令,并将其转换为具体的硬件动作。


FireBeetle 2 ESP32 C6:

讯飞星火Fuctioncall控制SERVO和LED


概述

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设计


FireBeetle 2 ESP32 C6: 讯飞星火Fuctioncall控制SERVO和LED图2


焊接和组装

完成了PCB的焊接工作,确保所有组件正确连接。

FireBeetle 2 ESP32 C6: 讯飞星火Fuctioncall控制SERVO和LED图1

软件配置

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[0]=="LED":
            DUTY=int(value*1023)
            if parts[1]=="right_LED":
                right_LIGHT.duty(DUTY)
            if parts[1]=="left_LED":
                left_LIGHT.duty(DUTY)
            if parts[1]=="BOTH":
                right_LIGHT.duty(DUTY)
                left_LIGHT.duty(DUTY)

        if parts[0]=="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




C6.zip

1.71 KB, 下载次数: 3695

执行端

functioncall(MQTT).zip

3.28 KB, 下载次数: 3775

控制端

Gerber_测试用板(DF-C6)_PCB_测试用板.zip

201.52 KB, 下载次数: 3811

PCB

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(0)
- 没有更多了 -