佛山 顺德网站设计,延庆手机网站建设,网站无法导入照片,推广计划名称写什么本文主要介绍基于STM32F103C8T6和蓝牙模块实现的交互控制
简介
蓝牙#xff08;Bluetooth#xff09;是一种用于无线通信的技术标准#xff0c;允许设备在短距离内进行数据交换和通信。它是由爱立信#xff08;Ericsson#xff09;公司在1994年推出的#xff0c;以取代…本文主要介绍基于STM32F103C8T6和蓝牙模块实现的交互控制
简介
蓝牙Bluetooth是一种用于无线通信的技术标准允许设备在短距离内进行数据交换和通信。它是由爱立信Ericsson公司在1994年推出的以取代传统的有线连接方式使设备之间能够实现低功耗、低成本的数据传输和通信。
蓝牙技术的特点 无线通信蓝牙允许设备在近距离内通常是10米左右具体取决于设备版本进行通信无需使用电缆或其他物理连接。 低功耗蓝牙技术被设计为低功耗的通信方式这使得它在移动设备上广泛使用如智能手机、平板电脑、蓝牙耳机等。 多设备连接蓝牙允许一个主设备如手机同时连接多个从设备如蓝牙耳机、蓝牙音箱等实现更灵活的数据传输和通信。 通用性蓝牙技术在许多设备和应用中得到广泛应用例如无线耳机、键盘、鼠标、汽车蓝牙连接、智能家居设备等。 安全性蓝牙技术在不断发展和改进中以提高其安全性以防止未经授权的访问和数据泄露。 蓝牙技术在不同的版本中有不同的特性和功能从经典蓝牙Bluetooth Classic到低功耗蓝牙Bluetooth Low Energy简称BLE每个版本都针对不同的应用场景和需求。
常见的蓝牙模块 1HC-05/HC-06: HC-05和HC-06是广泛使用的经典蓝牙模块常用于与单片机如Arduino进行无线通信。 它们基于蓝牙2.0标准支持串口通信UART协议使得与单片机的连接和数据交换相对简单。 HC-05可作为主设备或从设备支持蓝牙SPP串口通信和AT命令模式。 HC-06通常作为从设备仅支持蓝牙SPP模式。 它们具有基本的通信范围通常在10米左右。
2HM-10/CC2541: HM-10和CC2541是低功耗蓝牙BLE模块适用于物联网IoT设备和传感器网络。 它们基于蓝牙4.0标准具有低功耗和短距离通信的特点。 它们支持BLE通信协议如GATT通用属性配置文件和ATT属性协议用于数据传输和连接管理。 HM-10具有较大的功能集包括主设备和从设备模式而CC2541主要作为从设备。 它们通常用于连接和控制传感器、智能家居设备等。
3RN42/RN52: RN42和RN52是经典蓝牙模块由Microchip以前是Roving Networks生产。 它们基于蓝牙2.1EDR标准提供了丰富的功能和易于使用的接口。 这些模块支持串口通信UART协议具有较大的通信范围通常在30米以上。 它们适用于各种应用如音频传输、数据通信和蓝牙配对。 RN52还提供了额外的音频功能如立体声音频传输和音频配置选项。
4ESP32: ESP32是一款强大的Wi-Fi和蓝牙组合模块由Espressif Systems开发。 它集成了双核处理器、Wi-Fi、蓝牙、低功耗技术和丰富的外设接口。 ESP32支持蓝牙经典和低功耗蓝牙BLE具有较大的灵活性和功能性。 它广泛应用于物联网IoT应用、嵌入式系统和智能设备开发。
综上本文主要介绍基于HC-05和STM32F103C8T6的蓝牙无线控制
接线
将HC-05模块的VCC引脚连接到STM32的3.3V电源引脚GND引脚连接到STM32的地引脚。 将HC-05模块的TXD引脚连接到STM32的一个UART接收引脚例如USART1_RXRXD引脚连接到STM32的一个UART发送引脚例如USART1_TX。 如果需要进行模块的配置或进入AT命令模式可以将HC-05模块的EN引脚连接到STM32的一个GPIO引脚并在代码中控制该引脚的状态。 本示例中管脚连接状态如下所示
STM32F103C8T6蓝牙模块VCCVCCGNDGNDA2RXDA3TXD
程序示例
串口UART初始化函数
void My_USART2_Init(void)
{ GPIO_InitTypeDef GPIO_InitStrue; USART_InitTypeDef USART_InitStrue; NVIC_InitTypeDef NVIC_InitStrue; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//GPIO端口使能 RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);//串口端口使能 //实际使用的是这俩IO口GPIO_InitStrue.GPIO_ModeGPIO_Mode_AF_PP; GPIO_InitStrue.GPIO_PinGPIO_Pin_2; //TXDGPIO_InitStrue.GPIO_SpeedGPIO_Speed_10MHz; GPIO_Init(GPIOA,GPIO_InitStrue); GPIO_InitStrue.GPIO_ModeGPIO_Mode_IN_FLOATING; GPIO_InitStrue.GPIO_PinGPIO_Pin_3; //RXDGPIO_InitStrue.GPIO_SpeedGPIO_Speed_10MHz; GPIO_Init(GPIOA,GPIO_InitStrue); USART_InitStrue.USART_BaudRate9600; USART_InitStrue.USART_HardwareFlowControlUSART_HardwareFlowControl_None; USART_InitStrue.USART_ModeUSART_Mode_Tx|USART_Mode_Rx; USART_InitStrue.USART_ParityUSART_Parity_No; USART_InitStrue.USART_StopBitsUSART_StopBits_1; USART_InitStrue.USART_WordLengthUSART_WordLength_8b; USART_Init(USART2,USART_InitStrue);USART_Cmd(USART2,ENABLE); //使能串口2 USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);//开启接收中断 NVIC_InitStrue.NVIC_IRQChannelUSART2_IRQn; NVIC_InitStrue.NVIC_IRQChannelCmdENABLE; NVIC_InitStrue.NVIC_IRQChannelPreemptionPriority0; NVIC_InitStrue.NVIC_IRQChannelSubPriority1; NVIC_Init(NVIC_InitStrue);
} 主函数中关于蓝牙点灯和关灯的操作函数 while(1){ if(res1){Led_On(LED1);//TIM_SetCompare2(TIM3,175);delay_ms(1000);}if(res2){Led_Off(LED1);//TIM_SetCompare2(TIM3,180);delay_ms(1000);} }示例效果
首先手机中装的蓝牙APP是如下SPP蓝牙串口助手可支持命令聊天及键盘模式等 其中接收命令是“1”时LED点亮
if(res1){Led_On(LED1);//TIM_SetCompare2(TIM3,175);delay_ms(1000);}接收命令是“2”时LED灯灭
if(res2){Led_Off(LED1);//TIM_SetCompare2(TIM3,180);delay_ms(1000);} 具体指令可以在代码中修改也可以使用键盘模式控制如下所示
附完整资源链接
链接https://pan.baidu.com/s/1o-lnlWjCYFTDZIvoJBs-iQ 提取码4wh6