Download as pdf or txt
Download as pdf or txt
You are on page 1of 8

实训项目:基于语音控制的智能小车

一、 前言

1.1 整体课题要求

本实训是基于单片机 STC89C52 实现对小车的智能语音控制,其小车实现功能


有:语音控制前进、后退、左转、右转。

1.2 总体设计方案

1. 小车硬件设计:介绍包括核心控制芯片、电机驱动电路、语音识别模块、语
音播放模块。显示模块、按键、电源。
2. 软件程序设计:程序流程图设计,已经程序的编写。
3. 功能验证与实现。

二、 硬件方案设计与实现

因为智能小车需具备语音控制、语音播放、直线行驶、前进、后退、数码管关显
示等功能,所以智能小车硬件系统应该由单片机系统、电源控制模块、电机及电机驱
动模块、语音识别模块、语音播放模块、显示模块、按键等组成。系统结构图如图
2-1 所示:

图 2-1 硬件系统结构图
2.1 电机驱动模块设计

1
图 2-2 电机驱动模块设计图
L298N 是 ST 公司生产的一种高电压、大电流电机驱动芯片。该芯片采用 15 脚封装。
实物图如图 2-2 所示:

图 2-3 L298N 实物图


使用 L298N 芯片驱动电机,该芯片可以驱动一台两相步进电机或四相步进电机,
也可以驱动两台直流电机。表 1 是该模块的产品参数:
表1 L298N 产品参数

参数 指标 参数 指标
类型 半桥 工作温 -25°C~130°C
输入类型 非反相 电源电压 4.5V~46V
电流-输出/通道 2A 电流-峰值输出 3A

2.2 语音识别与输出模块

ASR-M09C 语音识别模块是基于贴片 STC11L16XE 芯片而设计,STC11/10xx 系


列单片机是单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代 8051
单片机,指令代码完全兼容传统 8051,但速度快 8-12 倍。内部集成高可靠复位电路,
针对高速通信,智能控制,强干扰场合能够有效处理语音信号。

2
图 2-4 语音模块实物图

三、软件方案设计与实现

3.1 电机驱动程序设计

L298N 可以用来驱动直流电动机和步进电动机、继电器线圈等感性负载;采用标
准逻辑电平信号控制;具有两个使能控制端,在不受输入信号影响的情况下允许或禁
止器件工作有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作;可以外接
检测电阻,将变化量反馈给控制电路。其驱动程序如下:
void ControlCar_yaokong(unsigned char ConType) //定义电机控制子程序
{
stop();
switch(ConType) //判断用户设定电机形式
{
case 1: //前进 //判断用户是否选择形式 1
{
stop(); //进入前进之前先停止一段时间防止
电机反向电压冲击主板导致系统复位
Delay1ms(150);
run();
break;
}
case 2: //后退 //判断用户是否选择形式 2
{
stop(); //进入后退之前先停止一段时间防止电机反向
电压冲击主板导致系统复位
Delay1ms(150);

3
// LeftLed = 1 ;
back(); //M2 电机反转
break; }
case 3: //右转 //判断用户是否选择形式 3
{
stop(); //进入左转之前先停止一段时间防止电机反
向电压冲击主板导致系统复位
Delay1ms(150);
rightrun(); //M2 电机正转
break;
}
case 4: //左转 //判断用户是否选择形式 4
{
stop(); //进入右转之前先停止一段时间防止电机反向电压冲击主板导致
系统复位
Delay1ms(150);
leftrun(); //M1 电机正转//M2 电机反转
break;
}
case 8: //停止
{
stop();
break; //退出当前选择
}}}

3.2 语音控制程序设计

语音识别主要分为“训练”和“识别”两个阶段。在训练阶段,单片机对采集到
的语音样本进行分析处理,从中提取出语音特征信息,建立一个特征模型;在识别阶
段,单片机对采集到的语音样本也进行类似的分析处理,提取出语音的特征信息,然
后将这个特征信息模型与已有的特征模型进行对比,如果二者达到了一定的匹配度,
则输入的语音被识别。

4
图 3-1 语音识别原理图
其具体程序如下:
#ifndef _M09_C_SET_H__
#define _M09_C_SET_H__
#include<intrins.h>
#define __ParameterSet_ /*参数设置,注销掉这句就会自动跳过参数设置,下
同*/
#define __KeywordsSet_ /*词条设置、唤醒词设置、退出唤醒状态词设置*/
//#define __CustomOutputSet_ /*自定义返回值设置*/
void M09_C_SET(void);
void delay(unsigned int k);
extern void SendString(unsigned char *pt);
void M09_C_SET(void)
{
delay(1000);/*延时 500 毫秒,先让 M09_C 准备好*/
#ifdef __ParameterSet_ /*参数设置*/
SendString("@Baud,9600,$");delay(600);/*设置波特率,1200 - 115200 波特率,
本程序使用 9600*/
SendString("@Mic_vol,078,vag,08,bnv,0,$");delay(600);/*设置麦克风参数(078
和 08 不要修改,否则不能识别;最后一位:0-喇叭播放声音时禁止识别,1-喇叭播
放声音是允许识别。智能车建议设置为 1,其他场合设置为 0。)*/
SendString("@WorkingMode,3,WakeUpLengthOfTime,0600,$");delay(600);/*1 :

5
连续对话模式;2:按钮模式;3:唤醒模式;0600 是唤醒后等待时间:600*20 毫秒
=12 秒*/
SendString("@OutputMode,1,$");delay(600);/*设置返回值输出格式,1:单字
节;2:兼容舵机控制器;3:自定义输出*/
SendString("@WakeUpType,Voice,1,UART,1,$");delay(600);/*vice,1:允许语音
唤醒;UART,1:允许串口唤醒。如果是 0 为关闭。*/
#endif
#ifdef __KeywordsSet_ //模块支持 00-49 共 50 个词条。
SendString("@EraseKeyword$");delay(1200);/*擦除所有词条*/
/*--------------------------唤醒词设置--------------------------*/
SendString("@00,xiao ding dang,254,$"); delay(600);/*唤醒词*/
/*------------------------退出唤醒状态指令--------------------------*/
SendString("@01,qing tui xia,253,$"); delay(600);/*退出唤醒状态*/
/*--------------------------词条设置--------------------------*/
SendString("@02,qian jin,001,$"); delay(600); //前进
SendString("@03,hou tui,002,$"); delay(600); //后退
SendString("@04,zuo zhuan,003,$"); delay(600); //左转
SendString("@05,you zhuan,004,$"); delay(600); //右转
SendString("@06,ting zhi,005,$"); delay(600); //右转
#endif
/*--------------------------其他设置--------------------------*/
SendString("@Volume,29,$"); delay(600); /*喇叭音量,取值范围:00-31*/
SendString("@RGBrot,A(R000,G008,B000),B(R008,G008,B000),C6,T0050,1,$ ")
; delay(800); /*设置 RGB 灯的颜色*/
// 如 果 颜 色 跟 视 频 不 对 应 , 请 试 试 这 组 数 据 :
A(R020,G020,B000),B(R020,G000,B000),不同批次的 RGB 灯可能不一样。
//调节参数大小可以调节亮度,亮度最高是 255,最低是 000。
SendString("@Boot$");/*重启模块*/
}
void delay(unsigned int k) //@11.0592MHz,1ms 延时,此延时程序适用于
STC89CXX 系列,其他型号请修改此延时函数

6
{
unsigned char i, j;
do{
_nop_();
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
}while(--k);
}
#endif

四、心得体会

此次实训主要内容为分析语音控制智能小车硬件系统组成,对所选取的各个传感
器和控制器模块进行简要介绍,完成智能小车语音控制功能,包括小车的前进功能、
直线行驶功能、后退、转向等功能的程序设计,还包括对 ASR-M09C 语音识别模块
的使用。
完成以上各功能设计与实现,加深了我们对智能小车的了解,进一步巩固了单片
机的基本知识,了解了 ASR-M09C 语音识别模块的工作原理。在项目完成过程中,
分工明确,较好的实现了各个功能要求,激发了我们学习的兴趣,促进了专业知识的
增长。
设计过程中所需要的软件:程序编译软件 keil 5、下载软件 STC-ISP。所需要的
硬件:小车、STC89C52RC 单片机、电机驱动模块 L298N、ASR-M09C 语音识别模
块。

五、 参考文献

[1]黄凯荣.语音控制智能小车的设计[J].电子制作,2020(15):41-44+6.
[2]张伟.基于语音控制的自主寻迹与避障智能小车设计[J].九江学院学报(自然科学
7
版),2020,35(02):49-50+77.
[3]郭勤,蔡亚永.智能小车控制系统的设计与实现[J].电子测试,2021(11):25-26.
[4]施芸,杨晓艳,雷刚,彭林.基于 STC15 单片机的模块化智能小车实训平台开发[J].电子
技术与软件工程,2021(04):85-86.

You might also like