
专业版
机器狗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;
}
}
内部结构
材料购买链接
设计图

BOM


添加到专辑
0
0
分享
侵权投诉
评论