毕业设计 真实案例分享 基于单片机的语音识别循迹送餐车设计 - 单片机 嵌入式 物联网 语音识别

系列文章目录

第一题 基于单片机的超声波测距器设计
第二题 基于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工程及源代码

想获取工程文件及源码、相关问题、其他毕设题目解答,欢迎私信。
或关注微信公众号“电子设计万事屋”

总结

提示:这里对文章进行总结:

  • 10
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值