81浏览
查看: 81|回复: 0

[ESP8266/ESP32] FireBeetle 2 ESP32 C6: 讯飞星火Fuctioncall控制SERVO和LED

[复制链接]
本帖最后由 sky007 于 2024-4-19 15:36 编辑

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, 下载次数: 6

执行端

functioncall(MQTT).zip

3.28 KB, 下载次数: 5

控制端

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

201.52 KB, 下载次数: 4

PCB

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail