Tips 内容:汇报我的毕设选题和进度 作者:苏楷
目录
链接
调用的大模型:Qwen3-VL-Plus
参考的开源项目:小智AI
毕设项目的框架图:点我打开↗️
本项目旨在设计并实现一个基于 ESP32-S3 芯片的多模态智能平衡机器人系统。该系统集成了语音、视觉感知与运动控制能力,其核心目标是构建一个能够实时与云端大模型交互、理解复杂指令并执行精确物理动作的智能平台。系统采用分布式架构,由 ESP32-S3 主控板和 STM32F103 运动控制板共同构成机器人硬件端。 一、后端服务器与云端交互 系统以 Python 语言实现的后端服务器为中枢。后端通过 WebSocket 协议接收来自 ESP32-S3 的 Opus 音频包和摄像头图片。服务器首先进行 VAD 说话检测,将有效音频转换为文本并与图像数据、Function Calling 工具包一起发送给云端 Qwen-VL-Plus 大模型进行多模态推理。接收到大模型的响应后,服务器将回复文本通过 EdgeTTS 转换为 Opus 音频流发送回机器人播放,同时解析响应中的 JSON 函数指令,构建并发送控制命令。 二、核心主控电路板(ESP32-S3) ESP32-S3 作为核心主控,负责多模态数据的采集与通信。音频输入通过 ES7210 采集贴片麦克风数据并编码为 Opus,通过 ES8311 驱动喇叭进行音频输出。视觉数据通过 USB 连接摄像头,以 1FPS 的频率采集图像。所有数据通过 Wi-Fi WebSocket 协议与后端通信。此外,它通过低功耗蓝牙 BLE 连接上位机,接收 PID 调参和 WiFi 配置信息,并将从后端接收的 JSON 命令解包后,通过 UART 串口发送至运动控制板。 三、运动控制板(STM32F103) 运动控制功能由 STM32F103C8T6 芯片实现。它主要负责高精度的运动控制任务,包括通过陀螺仪和加速计实时采集姿态数据。系统采用 PID 算法控制霍尔编码有刷电机,实现机器人的直立平衡、前进和转弯。命令执行通过 DMA 串口接收 ESP32-S3 发来的指令并修改本地参数。此外,它还通过 SPI/IIC 接口驱动触摸显示屏,用于显示参数或机器人状态表情。
实现语言:用python实现小智AI机器人的后端
接收硬件数据:向下通过websocket接收来自esp32s3的opus音频包和摄像头拍来的当前图片
说话检测:进行vad说话检测,检测到说话则启动,并将opus音频转为文本暂存在服务端。
对接云端大模型:向上通过websocket对接Qwen-VL-Plus大模型
云端大模型请求包:一次请求包含(文本内容,当前平衡车机器人拍到的图片,以及预设的function calling tools函数包)
云端大模型响应包:获得响应(文本内容+函数的json文本)。将文本通过edgeTTS转为mp3音频,再转为适合实时传输的opus音频发送给esp32s3。并解析响应中的json格式的函数,调用接口向esp32s3发送json命令。
主控芯片:esp32s3
音频输入:通过es7210连接贴片麦克风,采集周围的音频,并编码为opus传给后端
音频输出:通过es8311连接喇叭,播放音频
视觉采集:通过usb连接摄像头,每隔一秒向后端发送一张图片,作为当前看到的画面
蓝牙控制:通过低功耗蓝牙连接上位机,可接收pid调参和wifi参数设置
通信:采用websocket协议通过wifi将音频和画面传递给python后端
命令执行:从上位机收到json命令文本,将其解包并通过uart串口发送stm32运动控制板。
控制芯片:stm32f103c8t6
姿态数据采集:通过陀螺仪加速计分析平衡车姿态数据
运动控制:通过pid算法控制霍尔编码有刷电机,进行直立前进和转弯
命令执行:通过DMA串口,接收来自esp32s3的命令,解析后修改本地参数。
显示屏:通过SPI串口和IIC连接触摸屏,显示各类参数或表情
问题和进度现状:目前只是做了个demo,一共有4块电路板(稳压板,电机驱动板,esp32s3开发板,stm32f103c8r6面包板)
bug1:stm32面包板采用的是一大堆飞线,信号传输不稳定还接触不良,导致spi传输速率太低,屏幕刷新率5秒刷新一次是极限了..
目前的难题1:设计一个什么样的机械结构,美观又稳定,还能承载电路板。
目前的难题2:电路板方面怎么设计,元件选型基本没问题了,但是不知道要设计几块电路板,电路板的结构如何。
目前的难题3:项目细节中的电路部分还有什么能优化的,stm32f103c8t6的RAM太小,处理能力也有限,可能无法带动串口屏,更不用说跑美观的lvgl图形库或者是显示图片表情等..
目前的难题4:聊天交互时,AI对是否要执行小车控制的意图识别不精准,不知道是不是提示词的问题...反正有点像人工智障,但是控制小车移动的函数都是通的(有概率触发...)
Tips:供老师参考,有点丑qwq,所以想优化下结构和电路。
正面:

背面:

上面:

交互方面:可开启摄像头或者直接聊天
命令控制方面:可控制平衡车进行几秒钟的前进、转弯、或者停止
优化方面:AI对是否调用函数的决策不精准(刚开始聊天基本100%,后面会逐渐衰减至30%左右,可能聊久了变傻了...),AI交互的延迟高,5~10秒。