系列文章目录
第一题 基于单片机的超声波测距器设计
第二题 基于51单片机的自动浇花器设计
第三题 基于51单片机的红外遥控自动风扇设计
第四题 基于STM32的条形码识别器
第五题 基于单片机的语音识别循迹送餐车设计
更多题目,请进入主页内查看
0 前言
🔥近几年随着人工智能等新技术的不断火热,带动了嵌入式等的传统行业的进一步发展。最近带过的几届同学反馈:以往的毕设题目缺乏创新性和亮点,不能满足学校的答辩要求。为了方便毕业生们顺利、省心、高效的通过毕设,这里分享一些真实、优质的毕业设计。
今天给大家分享一个比较经典且有一定创新力的题目
🚩基于单片机的语音识别循迹送餐车设计
🥇首先对这道题目给出一个量化的评价(每项满分5⭐):
- 难度:⭐⭐⭐⭐
- 工作量:⭐⭐⭐⭐
- 创新性:⭐⭐⭐⭐
1 题目
我们分析一下题目要求,提取如下功能点:
1、小车具备循迹功能,沿循迹线向前行驶;
2、小车可通过按键或语音指令控制送餐的目的餐桌;
3、小车送餐至指定餐桌后,需停车等待客人取餐后再继续前行;
4、小车具备避障功能;
5、行进路线要求: 小车由总服务台出发,沿一条路线前进,依次途径三个餐桌,后返回总服务台。
2 方案设计
2.1 方案框图
分析题目功能点,结合以往的开发经验,初步构思整体方案,形成整体方案框图
2.2 器件选型
根据市售器件,进一步确定所用器件的具体型号:
单片机最小系统:系统主控制器,由51内核单片机及外围电路组成(复位电路、晶振电路、供电电路),单片机型号 STC89C52;
控制按键:由用户按下,用于控制小车送餐的目的餐桌,采用普通微动按键;
餐盘检测:用于检测餐盘是否在车上,采用限位开关;
语音识别模块:采集用户的语音指令,用于控制小车送餐的目的餐桌,与主控通过 UART 串口协议通信,型号 ASR PRO模组;
循迹模块:用于检测地面的黑色路线,5路黑白线循迹模块,每路由一组光电对管组成;
避障模块:采用红外避障模块,检测行进前方是否有障碍物;
OLED显示屏:显示用户发出的指令,系统的工作状态等必要信息,与用户交互,与主控通过 I2C 协议通信,型号 1.3" OLED;
电机驱动模块:接受主控电平信号控制,通过高电压驱动小车车轮转动,型号 TB6612;
小车地盘采用前二驱动轮,后一万向轮的配置,驱动轮型号TT减速电机;
系统采用锂电池供电,一路直供电机驱动,另一路经降压后为控制系统供电。
2.3 小结-设计要点、难点解析
1、系统供电方案的设计,要同时满足电机有足够动能和控制系统正常运行;
2、语音识别模组的原理、使用方法与通信协议;
3、显示界面、按键的操作流程设计,需具备良好的人机交互体验;
4、系统软件的控制流程设计,准确快速的响应用户操作;
5、系统循迹算法的设计,餐桌定位点的检测。
3 硬件设计
使用 Altium Designer 软件进行硬件原理图和PCB绘制
4 软件设计
使用 Keil-MDK ARM建立工程
工程文件树
主程序源码部分展示:
void main(void)
{
/* 变量定义 */
uint8_t direction; // 小车行进方向
/* 初始化 */
SYS_STATE = SYS_STATE_NONE; // 系统状态标志位——无
direction = TRACKING_DRIECT_NONE; // 小车行进方向——无
CROSS_CNT = 0;
uart_rx_data = 0;
target_table->table_1 = 0;
target_table->table_2 = 0;
target_table->table_3 = 0;
uart_init();
motor_init();
OLED_Init();
OLED_Clear();
state_update(SYS_STATE_READY);
/* 主循环 */
while (1)
{
/* 就绪状态 */
while (SYS_STATE_READY == SYS_STATE)
{
switch (key_scan())
{
case 1: target_table->table_1 = ~target_table->table_1; OLED_ShowNum(48, 6, target_table->table_1*1, 1, 16); break;
case 2: target_table->table_2 = ~target_table->table_2; OLED_ShowNum(56, 6, target_table->table_2*2, 1, 16); break;
case 3: target_table->table_3 = ~target_table->table_3; OLED_ShowNum(64, 6, target_table->table_3*3, 1, 16); break;
case 5: state_update(SYS_STATE_DISPATCH); break;
default: break;
}
switch (uart_rx_data)
{
case 0x01: target_table->table_1 = 1; OLED_ShowNum(48, 6, target_table->table_1*1, 1, 16); uart_rx_data = 0; break;
case 0x02: target_table->table_2 = 1; OLED_ShowNum(56, 6, target_table->table_2*2, 1, 16); uart_rx_data = 0; break;
case 0x03: target_table->table_3 = 1; OLED_ShowNum(64, 6, target_table->table_3*3, 1, 16); uart_rx_data = 0; break;
case 0x10: target_table->table_1 = 0; OLED_ShowNum(48, 6, target_table->table_1*1, 1, 16); uart_rx_data = 0; break;
case 0x20: target_table->table_2 = 0; OLED_ShowNum(56, 6, target_table->table_2*2, 1, 16); uart_rx_data = 0; break;
case 0x30: target_table->table_3 = 0; OLED_ShowNum(64, 6, target_table->table_3*3, 1, 16); uart_rx_data = 0; break;
case 0x0F: state_update(SYS_STATE_DISPATCH); uart_rx_data = 0; break;
default: break;
}
/* change state */
// state_update(SYS_STATE_DISPATCH);
}
}
}
}
5 实现效果
6 PCB工程及源代码
想获取工程文件及源码、相关问题、其他毕设题目解答,欢迎私信。
或关注微信公众号“电子设计万事屋”
总结
提示:这里对文章进行总结: