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

基于单片机语音识别控制&蓝牙控制

  • 1、Arduino单片机语音控制
  • 1.1 直连
  • 1.2 蓝牙无线连接
  • 1.3 部分核心程序
  • 1.4 实物演示
  • 2、51单片机语音控制
  • 2.1 直连
  • 2.2 蓝牙无线连接
  • 2.3 部分核心程序
  • 2.4 实物演示
  • 3、STM32单片机语音控制
  • 3.1 直连
  • 3.2 蓝牙无线连接
  • 3.3 部分核心程序
  • 3.4 实物演示
  • 最后

  • 本文章是基于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),备注来意,一起学习一起进步。

    作者:゛小廖

    物联沃分享整理
    物联沃-IOTWORD物联网 » 单片机语音识别控制&蓝牙通信

    发表回复