单片机语音识别控制&蓝牙通信

发布于:2024-07-05 ⋅ 阅读:(15) ⋅ 点赞:(0)


本文章是基于Arduino单片机、51单片机、STM32单片机语音识别控制和蓝牙通信,设计这三种单片机方便新手选择自己合适的单片机学习语音识别控制,文章重点涉及到串口的知识点,学会了串口对于蓝牙模块很简单,本文章可以学习到 语音识别控制蓝牙无线控制

为什么语音识别控制要设计成无线控制呢???关于下面这种场合就合适鸭。

在这里插入图片描述


1、Arduino单片机语音控制

1.1 直连

功能:语音控制电灯的 “开启” 和 “关闭”
语音模块与主控制器Arduino直接连接,由于接了220V的电灯,此时用到了继电器

语音模块与主控制器硬件连接

语音模块 Arduino
VCC VCC
GND GND
T2 0
R2 1

继电器与主控制器硬件连接

继电器 Arduino
VCC 5V
GND GND
INT1 13

实物连接如下图所示

在这里插入图片描述

1.2 蓝牙无线连接

功能①:语音控制电灯的 “开启” 和 “关闭”
功能②:手机app控制电灯的 “开启” 和 “关闭”
语音模块与主控制器Arduino直接通过两个蓝牙模块连接,其中语音模块连接的蓝牙模块通过软件设置作为主机,主控制器Arduino连接的蓝牙模块通过软件设置作为从机,下图是蓝牙模块设置的软件界面

在这里插入图片描述
语音模块与蓝牙模块(主机)硬件连接

语音模块 蓝牙模块(主机)
VCC VCC
GND GND
T2 RX
R2 TX

主控制器与蓝牙模块(从机)硬件连接

主控制器 蓝牙模块(从机)
VCC VCC
GND GND
1 RX
0 TX

继电器与主控制器硬件连接

继电器 Arduino
VCC 5V
GND GND
INT1 13

连接实物如下图所示

在这里插入图片描述
如果不想用语音控制电灯的 “开启” 和 “关闭”,可以直接把语音模块和蓝牙模块(主机)直接去掉,通过手机app打开蓝牙直接连接蓝牙模块(主机),通过发送程序给定对应的字节,这样也可以达到控制的效果。

在这里插入图片描述

1.3 部分核心程序

代码如下:

  val = Serial.read(); /*如果串口接收到数据,把输出存放在变量val中*/
  if (-1 != val) /*如果val不等于-1,证明串口已经接收到数据。*/
  {
    if (0x03 == val) /*判断接收到的数据是不是*/
    {
      digitalWrite(LED, LOW); /*如果是0x03,把LED点亮*/
    }
    else if (0x04 == val) /*判断串口接收到的数据是不是0x04*/
    {
      digitalWrite(LED, HIGH); /*如果是0x04,关闭LED灯*/
    }
    else
    {
      digitalWrite(LED, HIGH); /*其他情况灯灭*/
    }
  }

1.4 实物演示

Arduino语音识别控制


2、51单片机语音控制

2.1 直连

功能:语音控制电灯的 “开启” 和 “关闭”
语音模块与主控制器STC89C52直接连接,由于接了220V的电灯,此时用到了继电器

语音模块与主控制器硬件连接

语音模块 STC89C52
VCC VCC
GND GND
T2 P3^0
R2 P3^1

继电器与主控制器硬件连接

继电器 STC89C52
VCC 5V
GND GND
INT1 P2^0

实物连接如下图所示

在这里插入图片描述

2.2 蓝牙无线连接

功能①:语音控制电灯的 “开启” 和 “关闭”
功能②:手机app控制电灯的 “开启” 和 “关闭”
语音模块与主控制器STC89C52直接通过两个蓝牙模块连接,其中语音模块连接的蓝牙模块通过软件设置作为主机,主控制器STC89C52连接的蓝牙模块通过软件设置作为从机,下图是蓝牙模块设置的软件界面

在这里插入图片描述
语音模块与蓝牙模块(主机)硬件连接

语音模块 蓝牙模块(主机)
VCC VCC
GND GND
T2 RX
R2 TX

主控制器与蓝牙模块(从机)硬件连接

主控制器 蓝牙模块(从机)
VCC VCC
GND GND
P3^1 RX
P3^0 TX

继电器与主控制器硬件连接

继电器 Arduino
VCC 5V
GND GND
INT1 P2^0

连接实物如下图所示

在这里插入图片描述
如果不想用语音控制电灯的 “开启” 和 “关闭”,可以直接把语音模块和蓝牙模块(主机)直接去掉,通过手机app打开蓝牙直接连接蓝牙模块(主机),通过发送程序给定对应的字节,这样也可以达到控制的效果。

在这里插入图片描述

2.3 部分核心程序

void Usart_Int(void) interrupt 4
{
  uchar i;
  uchar receive_data;
	
  EA = 0;
	
  if(RI == 1) //当硬件接收到一个数据时,RI会置位
	{ 		
		RI = 0;
		receive_data = SBUF;//接收到的数据
			
		if(receive_data == 0x03)	 //if(receive_data == '1')
		{
				LED = 0;//接收到03亮灯
		}
		else if(receive_data == 0x04)
		{
				LED = 1; //如果是0x04,关闭LED灯
		}
		else
		{
				LED = 1; //其他情况灯灭
		}
		
	}
		
		for(i=0; i<PuZh_Size; i++)
		{
			SBUF = PuZh[i];   //将要发送的数据放入到发送寄存器
			while(!TI);		    //等待发送数据完成
			TI=0;			        //清除发送完成标志位
			Delay_ms(1);
		}
		EA = 1;
}

2.4 实物演示

51单片机语音识别控制


3、STM32单片机语音控制

3.1 直连

功能:语音控制电灯的 “开启” 和 “关闭”
语音模块与主控制器STM32直接连接,由于接了220V的电灯,此时用到了继电器

在这里插入图片描述

3.2 蓝牙无线连接

功能①:语音控制电灯的 “开启” 和 “关闭”
功能②:手机app控制电灯的 “开启” 和 “关闭”
语音模块与主控制器STM32直接通过两个蓝牙模块连接,其中语音模块连接的蓝牙模块通过软件设置作为主机,主控制器STM32连接的蓝牙模块通过软件设置作为从机,下图是蓝牙模块设置的软件界面

在这里插入图片描述
语音模块与蓝牙模块(主机)硬件连接

语音模块 蓝牙模块(主机)
VCC VCC
GND GND
T2 RX
R2 TX

主控制器与蓝牙模块(从机)硬件连接

主控制器 蓝牙模块(从机)
VCC VCC
GND GND
PA2 RX
PA3 TX

继电器与主控制器硬件连接

继电器 Arduino
VCC 5V
GND GND
INT1 PB6

连接实物如下图所示

在这里插入图片描述
如果不想用语音控制电灯的 “开启” 和 “关闭”,可以直接把语音模块和蓝牙模块(主机)直接去掉,通过手机app打开蓝牙直接连接蓝牙模块(主机),通过发送程序给定对应的字节,这样也可以达到控制的效果。

在这里插入图片描述

3.3 部分核心程序

 int main(void)
 {		 
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
	uart_init(9600);	 							//串口初始化为115200
	My_USART2_Init();
 	LED_Init();			     						//LED端口初始化
 	while(1)
	{
		if(res == 0x03)		//如果是0x03,把LED点亮
		{
			LED1 = 0;
			JDQ = 0;	//继电器使能
		}
		else if(res == 0x04)//如果是0x04,关闭LED灯
		{
			LED1 = 1;
			JDQ = 1;	//继电器不使能
		}
		else			//其他情况灯灭
		{
			LED1 = 1;
			JDQ = 1;
		}
	}	 
 }

	

3.4 实物演示

点击链接跳转观看:https://www.bilibili.com/video/BV1Hk8ReZEJn/?vd_source=396950d4f7e8d110fcda0429d9a5c0f6


最后

在这里插入图片描述

不懂的小伙伴或是有问题的可以+我企鹅号(970484728),备注来意,一起学习一起进步。


网站公告

今日签到

点亮在社区的每一天
去签到