
智能控制机器狗PCB
简介
1. 功能丰富 :集成了语音交互、动作控制、网络通信等多种功能。2. 技术先进 :采用了最新的语音处理技术、实时控制系统和网络通信协议。3. 易于扩展 :系统设计模块化,支持多种硬件平台和功能扩展。
简介:1. 功能丰富 :集成了语音交互、动作控制、网络通信等多种功能。2. 技术先进 :采用了最新的语音处理技术、实时控制系统和网络通信协议。3. 易于扩展 :系统设计模块化,支持多种硬件平台和功能扩展。开源协议
:OpenAtom OHL 1.0
描述
题目要求
基于移动互联的控制机器狗的设计与实现
题目分析
本项目通过融合ESP32-S3、语音处理、动作控制和网络通信等技术,成功实现了一款功能丰富、性能稳定的智能控制机器狗。
总体设计方案框图
列:

原理图设计说明
原理图:


PCB设计说明
PCB 采用信号-电源-地-信号的六层堆叠结构:顶层与底层专用于高速信号走线,内层分别设置完整的电源平面和接地平面,从而有效抑制电磁干扰并提升信号完整性。关键电源引脚附近布置 0.1μF 与 10μF 组合去耦电容,以最大限度降低电源噪声;26MHz 高精度温补晶振紧邻芯片时钟输入端,确保系统时序稳定性;复位电路由 RC 延时与施密特触发器构成,保证上电及异常状态下的可靠重启。
软件说明
核心代码如下:
代码块:
// 任务创建和优先级配置代码
void createSystemTasks() {
xTaskCreatePinnedToCore(voiceRecognitionTask, "VoiceTask", 8192, NULL, 5, &voiceTaskHandle, 0);
xTaskCreatePinnedToCore(motionControlTask, "MotionTask", 4096, NULL, 4, &motionTaskHandle, 1);
xTaskCreatePinnedToCore(sensorMonitorTask, "SensorTask", 2048, NULL, 3, &sensorTaskHandle, 0);
xTaskCreatePinnedToCore(displayUpdateTask, "DisplayTask", 2048, NULL, 2, &displayTaskHandle, 1);
xTaskCreatePinnedToCore(communicationTask, "CommTask", 4096, NULL, 3, &commTaskHandle, 0);
xTaskCreatePinnedToCore(systemMonitorTask, "MonitorTask", 1024, NULL, 1, &monitorTaskHandle, 1);
}
include "esp_afe_sr_models.h"
include "esp_wn_iface.h"
include "esp_wn_models.h"
static const esp_wn_iface_t *wakenet = &ESP_WN_MULTINET5_QUANTIZED;
static model_iface_data_t *model_data_wn;
void wakeup_init() {
model_data_wn = wakenet->create("wn9_hilexin", DET_MODE_90);
wakenet->set_det_threshold(model_data_wn, 0.85, 1);
}
void wakeup_task(void *arg) {
int16_t *audio_buffer = (int16_t *)malloc(320 * sizeof(int16_t));
while(1) {
// 读取音频数据
i2s_read(I2S_NUM_1, audio_buffer, 640, &bytes_read, portMAX_DELAY);
// 唤醒词检测
int wake_result = wakenet->detect(model_data_wn, audio_buffer);
if(wake_result > 0) {
gpio_set_level(LED_PIN, 1); // 点亮LED提示
xEventGroupSetBits(voice_event_group, WAKE_UP_BIT);
}
vTaskDelay(10 / portTICK_PERIOD_MS);
}
}
include "esp_mn_iface.h"
include "esp_mn_models.h"
static const esp_mn_iface_t *multinet = &ESP_MN_MULTINET6_QUANTIZED;
static model_iface_data_t *model_data_mn;
void command_recognition_init() {
// 初始化命令词识别模型
model_data_mn = multinet->create("mn6_cn", 6000);
// 添加命令词
multinet->add_command(model_data_mn, 1, "xiang qian zou"); // 向前走
multinet->add_command(model_data_mn, 2, "xiang hou tui"); // 向后退
multinet->add_command(model_data_mn, 3, "zuo zhuan"); // 左转
multinet->add_command(model_data_mn, 4, "you zhuan"); // 右转
multinet->add_command(model_data_mn, 5, "zuo xia"); // 坐下
multinet->add_command(model_data_mn, 6, "pa xia"); // 趴下
}
void command_task(void *arg) {
int16_t *audio_buffer = (int16_t *)malloc(480 * sizeof(int16_t));
while(1) {
EventBits_t bits = xEventGroupWaitBits(voice_event_group, WAKE_UP_BIT,
pdTRUE, pdFALSE, portMAX_DELAY);
if(bits & WAKE_UP_BIT) {
// 开始命令识别,设置5秒超时
TickType_t start_time = xTaskGetTickCount();
while((xTaskGetTickCount() - start_time) < pdMS_TO_TICKS(5000)) {
i2s_read(I2S_NUM_1, audio_buffer, 960, &bytes_read, portMAX_DELAY);
int command_id = multinet->detect(model_data_mn, audio_buffer);
if(command_id > 0) {
execute_voice_command(command_id);
break;
}
}
}
}
}
实物展示说明

注意事项
PCB板分为两种,贴片版本焊接要求较高,一定要注意不要虚焊
演示视频
https://www.douyin.com/user/self?modal_id=7508959368307772708
其它附件上传
分享文件:毕业设计项目-午安
链接:https://pan.xunlei.com/s/VOq571HHU2cJAyvjP1if2I9hA1?pwd=e67q#
特别感谢:
各位开源大佬!
注意:
本项目仅限个人和非商业用途使用。禁止任何形式的商业使用。
设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程知识产权声明&复刻说明
本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。
请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。










