DIY语音控制小车套件模型)
文章目录一.概要二.实验模型原理1.硬件连接原理框图2.各个传感器模块控制原理语音识别模块交互原理直流有刷电机控制原理三.实验模型控制流程四.语音控制小车程序五.实验效果视频六.小结一.概要智能小车项目融合了机械、电子、控制、计算机等多学科知识是提升综合能力的绝佳载体。智能小车的设计是一个“小而全”的工程缩影它让你在有限的时间和成本内模拟了真实产品的开发流程是一次非常宝贵的工程实践和能力证明。体验“从0到1”的创造从一堆散落的零件和抽象的代码到最终组装出一台能听话运行的小车这种创造的成就感是无可替代的。本文就介绍做一个语音控制小车模型采用STM32F103C8T6单片机直流有刷电机语音识别模块。通过语音模块就能实现小车的前进后退左转右转停止等动作。二.实验模型原理1.硬件连接原理框图模型主要分为六部分:主芯片单元语音识别单元动作执行单元。图中主控芯片为STM32F103C8T6单片机动作执行单元L9110S驱动直流有刷电机语音识别单元是语音识别模块配合喇叭以及咪头。信号线连接:L9110S模块接单片机的PB12,PB13,PB14,PB15引脚语音识别模块接单片机的PB5,PB6,PB7,PB8,PB9引脚。2.各个传感器模块控制原理语音识别模块交互原理语音交互模块是一款集成了离线语音识别功能的模块用户可以通过该模块实现语音识别功能外部加上麦克风与喇叭就能实现语音识别与对话。语音核心板固件程序可以通过 USB转 TTL模块连接实现硬件连接下载接线是 5V,GND,TX,RX四根线。使用语音模块的开发软件天问 Block 编程软件制作好图形化语音对话控制程序下图是语音交互程序接收的语音命令是前“后”“左”“右”“停”“小智小智生成模型后点击2M编译下载连接USB转 TTL模块就能实现对语音模块进行固件程序下载。下载完成后就可以按照提示先喊小智小智唤醒模块再按照需要喊出前”“后”“左”右等控制命令模块相应的引脚就能输出高电平单片机读取对应的GPIO引脚电平实现控制。直流有刷电机控制原理H桥可控制电机的运动和正反转H桥式电机驱动电路包括4个三极管和一个电机。 要使电机运转必须导通对角线上的一对三极管。根据不同三极管对的导通情况电流可能会从左至右或从右至左流过电机从而控制电机的转向。当Q1和Q4导通时电流将经过Q1从左往右流过电机在经过Q4流到电源负极这时图中电机可以顺时针转动。当Q3和Q2导通时电流将经过Q3从右往左流过电机在经过Q2流到电源负极这时图中电机可以逆时针转动。L9110是为消费类产品玩具和其他低压或者电池供电的运动控制类应用提供了一个集成的电机驱动器解决方案。此器件能够驱动一个直流有刷电机由一个内部电荷泵生成所需的栅极驱动电压电路和4个功率NMOS组成H桥驱动集成了电机正转/反转/停止/刹车四个功能。L9110功能框图基本工作模式a)待机状态在待机状态下 INAINBL。包括驱动功率管在内的所有内部电路都处于关断状态。电路消耗极低 的电流。此时马达输出端OUTA 和OUTB 都为高阻状态。b)正转模式正转模式的定义为 INAH,INB L, 此时马达驱动端OUTA 输出高电平马达驱动端OUTB 输出 低电平时马达驱动电流从OUTA 流入马达从OUTB 流到地端此时马达的转动定义为正转模式。c)反转模式反转模式的定义为 INAL,INB H, 此时马达驱动端OUTB 输出高电平马达驱动端OUTA 输出 低电平时马达驱动电流从OUTB 流入马达从OUTA 流到地端此时马达的转动定义为反转模式。d)刹车模式刹车模式的定义为 INAH,INBH ,此时马达驱动端OUTA 以及OUTB 都输出低电平马达内存储的能量将通过OUTA 端NMOS 管或者OUTB 端NMOS 快速释放马达在短时间内就会停止转动。注意在刹车模式下电路将消耗静态功耗。三.实验模型控制流程1.板子上电后语音模块提示“小智小智”唤醒模块这时候要对模块说小智小智提示唤醒成功。2.模块唤醒成功后喊前人脸识别模块会把模块的A5引脚输出高电平模块的PA5跟单片机的PB6是连接的单片机读取到PB6为高电平后会控制左轮顺时针转(PB12输出高PB13输出低)右轮逆时针转(PB14输出低PB15输出高)小车就会前进。3.根据同理喊后小车就会后退喊左小车就会左转喊右小车就会右转喊停小车就会停止。四.语音控制小车程序单片机板子与电机模块连接 板子3.3V-----电机模块V 板子G---------电机模块G 板子B12------电机模块B-1A 板子B13------电机模块B-1B 板子B14------电机模块A-1A 板子B15------电机模块A-1B 单片机板子与语音模块连接 板子3.3V-----语音模块5V 板子G---------语音模块GND 板子B5--------语音模块PA4 板子B6--------语音模块PA5 板子B7--------语音模块PA3 板子B8--------语音模块PA2 板子B9--------语音模块PA1安装好4节5号电池给系统供电单片机板子上LED灯亮说明上电完成。打开STM32CubeMX软件新建工程Part Number处输入STM32F103C8再双击就创建新的工程配置下载口引脚配置外部晶振引脚配置系统主频PB12,PB13,PB14,PB15配置成输出PB5,PB6,PB7,PB8,PB9配置成输入。PB0,PB1配置成输出用于驱动直流有刷电机。配置工程文件名保存路径KEIL5工程输出方式生成工程用Keil5打开工程添加代码添加读取语音模块输出的电平并根据对应的指令驱动直流电机。主要程序intmain(void){/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();//72M系统主频8M外部晶振/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();HAL_Delay(3000);//等待3秒/* USER CODE BEGIN 2 *//* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while(1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_6)GPIO_PIN_SET)//前进{HAL_GPIO_WritePin(GPIOB,GPIO_PIN_12,GPIO_PIN_SET);//左轮HAL_GPIO_WritePin(GPIOB,GPIO_PIN_13,GPIO_PIN_RESET);HAL_GPIO_WritePin(GPIOB,GPIO_PIN_14,GPIO_PIN_RESET);//右轮HAL_GPIO_WritePin(GPIOB,GPIO_PIN_15,GPIO_PIN_SET);}if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_7)GPIO_PIN_SET)//右转{HAL_GPIO_WritePin(GPIOB,GPIO_PIN_12,GPIO_PIN_SET);//左轮HAL_GPIO_WritePin(GPIOB,GPIO_PIN_13,GPIO_PIN_RESET);HAL_GPIO_WritePin(GPIOB,GPIO_PIN_14,GPIO_PIN_RESET);//右轮HAL_GPIO_WritePin(GPIOB,GPIO_PIN_15,GPIO_PIN_RESET);}if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_8)GPIO_PIN_SET)//左转{HAL_GPIO_WritePin(GPIOB,GPIO_PIN_12,GPIO_PIN_RESET);//左轮HAL_GPIO_WritePin(GPIOB,GPIO_PIN_13,GPIO_PIN_RESET);HAL_GPIO_WritePin(GPIOB,GPIO_PIN_14,GPIO_PIN_RESET);//右轮HAL_GPIO_WritePin(GPIOB,GPIO_PIN_15,GPIO_PIN_SET);}if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_9)GPIO_PIN_SET)//后退{HAL_GPIO_WritePin(GPIOB,GPIO_PIN_12,GPIO_PIN_RESET);//左轮HAL_GPIO_WritePin(GPIOB,GPIO_PIN_13,GPIO_PIN_SET);HAL_GPIO_WritePin(GPIOB,GPIO_PIN_14,GPIO_PIN_SET);//右轮HAL_GPIO_WritePin(GPIOB,GPIO_PIN_15,GPIO_PIN_RESET);}if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_5)GPIO_PIN_SET)//停止{HAL_GPIO_WritePin(GPIOB,GPIO_PIN_12,GPIO_PIN_RESET);//左轮HAL_GPIO_WritePin(GPIOB,GPIO_PIN_13,GPIO_PIN_RESET);HAL_GPIO_WritePin(GPIOB,GPIO_PIN_14,GPIO_PIN_RESET);//右轮HAL_GPIO_WritePin(GPIOB,GPIO_PIN_15,GPIO_PIN_RESET);}}/* USER CODE END 3 */}五.实验效果视频语音控制小车制作视频六.小结融合了直流有刷电机控制语音模块对STM32的多传感器融合有更深的了解。