找回密码
 注册
关于网站域名变更的通知
查看: 209|回复: 2
打印 上一主题 下一主题

语音模块LD3320控制小车运动

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-12-1 14:08 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
原理:
利用LD3320模块控制小车运动,小车驱动模块为L298N,语音模块采用LD3320。LD3320内核为51单片机,将识别的状态通过串口发送STM32,利用STM32控制小车运动。
实验现象:
(1)语音“前进”,小车前进;
(2)语音“后退”,小车后退;
(3)语音“停止”,小车停止;
(4)语音“左转”,小车左转;
(5)语音“右转”,小车右转;
(6)语音“跳舞”,小车跳舞 。

LD3320语音程序与STM32小车控制程序
硬件连接图
LD3320部分程序:
关键词程序:

uint8 LD_AsrAddFixed()
{
  uint8 k, flag;
  uint8 nAsrAddLength;
#define DATE_A 11   /*数组二维数值*/
#define DATE_B 20   /*数组一维数值*/
  uint8 code sRecog[DATE_A][DATE_B] =
  {
    "xiao long",\
    "qian jin",\
    "hou ",\
    "ting zhi",\
    "zuo zhuan",\
    "you zhuan",\
    "tiao wu",\
    "kai deng",\
    "guan deng",\
  };

执行程序:

void   User_handle(uint8 dat)
{  if(0==dat)
  {    G0_flag=ENABLE; LED=0;
  }
  else if(ENABLE==G0_flag)
  {    G0_flag=DISABLE;
        LED=1;
      switch(dat)        
{
case CODE_1:         /*forward*/               
UARTSendByte(0x01);     PrintCom("1cat go\r\n");      break;
case CODE_2:        /*backword*/               
UARTSendByte(0x02);    PrintCom("2cat back\r\n");     break;
case CODE_3:        /*stop*/
UARTSendByte(0x03);   PrintCom("3cat stop\r\n");     break;
case CODE_4:        /*left*/                       
UARTSendByte(0x04);  PrintCom("4cat left\r\n");     break;
case CODE_5:       /*right*/
UARTSendByte(0x05);    PrintCom("5cat right\r\n");     break;
case CODE_6:        /*dance*/
UARTSendByte(0x06);    PrintCom("6cat dance\r\n");     break;
case CODE_7:        /*turn on*/
UARTSendByte(0x07);    PrintCom("7turn on\r\n");     break;
case CODE_8:     /*turn off*/
UARTSendByte(0x08);    PrintCom("8turn off\r\n");     break;
default:/*text.....*/
break;
}
  }
  else
  {    PrintCom("请说出一级口令\r\n"); /*text.....*/   }
}
STM32主程序:

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "motor.h"
#include "pwm.h"
int main(void)
{  vu8 key=0;          u8 len=0;          u8 get=0;
    HAL_Init();                            //初始化HAL库   
    Stm32_Clock_Init(RCC_PLL_MUL9); //设置时钟,72M
    delay_init(72);                 //初始化延时函数
   LED_Init();                     //初始化LED
   MOTOR_Init();                   //初始化电机端口
   uart_init(9600);
   uart3_init(9600);
   TIM3_PWM_Init(899,0
   LED0=0;       
  while(1)
  {   if(USART3_RX_STA&0x8000)
     {     len=USART3_RX_STA&0x3fff;
get=USART3_RX_BUF[0];  printf("\r\n\r\ncode is %d\r\n", get);
switch(get)
{
case 1: {DiRForward(480);} break;
case 2: {DirBack(480);} break;
case 3: {Stop();} break;
case 4: {Left(480,0);} break;
case 5: {Right(0,480);} break;
case 6: {Left(480,0);Right(0,480);DirForward(480);Left(480,0);Right(0,480);} break;
default: {LED0=1;LED1=1;}break;                       
}
HAL_UART_Transmit(&UART3_Handler,(uint8_t*)USART3_RX_BUF,len,1000);
while(__HAL_UART_GET_FLAG(&UART3_Handler,UART_FLAG_TC)!=SET);
USART3_RX_STA=0;
}   }   }

STM32串口输出程序

该用户从未签到

2#
发表于 2021-12-1 14:18 | 只看该作者
串口收不到数据怎么解决

该用户从未签到

3#
发表于 2021-12-1 14:19 | 只看该作者
这些状态是怎么存储的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-6-18 10:09 , Processed in 0.078125 second(s), 27 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表