嘉立创产业服务站群
发作品签到
专业版

机器狗v1

工程标签

78
0
0
0

简介

基于立创的EDA-Robot机器狗改造,新增了离线语音模块。可以通过语音控制机器狗的动作和屏幕的内容显示。

简介:基于立创的EDA-Robot机器狗改造,新增了离线语音模块。可以通过语音控制机器狗的动作和屏幕的内容显示。
智能机器狗实训营
复刻成本:90

开源协议

CC BY-NC-SA 4.0

创建时间:2025-03-18 13:59:50更新时间:2025-04-25 07:16:17

描述

项目简介

基于立创的EDA-Robot机器狗改造,新增了离线语音模块。可以通过语音控制机器狗的动作和屏幕的内容显示

项目功能

  • ✅手机遥控
  • ✅语音遥控
  • ✅表情显示
  • ✅每日天气
  • ✅时钟显示

项目参数

  • 本设计采用ESP8266主控,内置WIFI功能,通过AP模式遥控
  • 屏幕支持0.96寸SSD1306/SSD1315驱动OLED显示屏,可显示表情、时钟、天气等相关信息
  • 选用AMS1117 LDO线性稳压器, 负责将8.4V和5V电压分别转换成5V和3.3V,为舵机及主控提供电源
  • 项目支持SG-90/MG-90 180度及360度版本,推荐使用180度版本,自带限位器,无需电机校准
  • 通过串口协议外接离线语音模块,支持语音遥控

软件代码

语音控制部分代码,原有项目代码无需更改,只需要将语音模块的串口指令设置好后,在此处获取到串口指令然后执行对应的处理逻辑

void loop()
{
    // 读取串口数据
    receiveData();
    if (buf_index > 0)
    {
        //解析串口数据
        resolveData();
        buf_index = 0; // 处理完成清空缓冲区
    }
    //......后面的代码保持不变,只需在loop函数的最前面添加语音指令获取代码
}

receiveData读取串口数据代码:

void receiveData()
{
    while (Serial.available() > 0 && buf_index < MAX_BYTES)
    {
        buffer[buf_index++] = Serial.read();

        // 提前退出判断:当收到包尾标识时(可选)
        if (buffer[buf_index - 1] == 0x0D)
        {                // CR作为结束符示例
            buf_index--; // 排除结束符
            break;
        }
    }
}

resolveData解析串口数据代码:

void resolveData()
{
    char output[(MAX_BYTES * 2) + 1] = {0}; // 32*3 + null终止符
    uint8_t pos = 0;

    for (uint8_t i = 0; i < buf_index; ++i)
    {
        byte current = buffer[i];

        // 高四位处理
        output[pos++] = (current >> 4) > 9 ? (current >> 4) - 10 + 'A' : (current >> 4) + '0';

        // 低四位处理
        output[pos++] = (current & 0x0F) > 9 ? (current & 0x0F) - 10 + 'A' : (current & 0x0F) + '0';
    }

    Serial.print("HEX: ");
    Serial.println(output);

    if (strcmp(output, "680900FF1200001116") == 0)
    {
        // 向前
        actionstate = 1;
    }
    else if (strcmp(output, "680900FF1200011216") == 0)
    {
        // 向后
        actionstate = 4;
    }
    else if (strcmp(output, "680900FF1200021316") == 0)
    {
        // 向左
        actionstate = 2;
    }
    else if (strcmp(output, "680900FF1201001216") == 0)
    {
        // 向右
        actionstate = 3;
    }
    else if (strcmp(output, "680900FF1201011316") == 0)
    {
        // 抬左手
        actionstate = 5;
    }
    else if (strcmp(output, "680900FF1201021416") == 0)
    {
        // 抬右手
        actionstate = 6;
    }
    else if (strcmp(output, "680900FF1202001316") == 0)
    {
        // 坐下
        actionstate = 8;
    }
    else if (strcmp(output, "680900FF1202011416") == 0)
    {
        // 趴下
        actionstate = 7;
    }
    else if (strcmp(output, "680900FF1204011616") == 0)
    {
        // 唤醒
        emojiState = 4;
    }
    else if (strcmp(output, "680900FF1203011516") == 0)
    {
        // 开心
        emojiState = 0;
    }else if (strcmp(output, "680900FF1203001416") == 0)
    {
        // 天气
        emojiState = 7;
    }else if (strcmp(output, "680900FF1202021516") == 0)
    {
        // 时间
        emojiState = 8;
    }
}

内部结构

微信图片_20250420172541.jpg

材料购买链接

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
1
功能演示.mp4
0
克隆工程
添加到专辑
0
0
分享
侵权投诉

工程成员

评论

全部评论(1)
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航