STM32学习笔记(十一)蓝牙控制风扇和灯

文章目录

  • 一、HC-01蓝牙模块介绍
  • 二、项目实战

一、HC-01蓝牙模块介绍

蓝牙模块,又叫做蓝牙串口模块
串口透传技术:

透传即透明传送,是指在数据的传输过程中,通过无线的方式这组数据不发生任何形式的改变,仿佛传输过程是透明的一样,同时保证传输的质量,原封不动地到了最终接收者手里

以太网,蓝牙,Zigbee, GPRS 等模块玩法一样,对嵌入式程序员来说,不需要关心通讯模块内部数据及协议栈工作原理,只要通过串口编程获得数据即可
STM32学习笔记(十一)蓝牙控制风扇和灯_第1张图片
修改蓝牙名称:
STM32学习笔记(十一)蓝牙控制风扇和灯_第2张图片

二、项目实战

项目需求
通过蓝牙模块,实现手机控制蓝牙插座/风扇/灯。
本质:

  1. 采用蓝牙的透传功能;
  2. 控制 IO 口的输出。

项目框图:

STM32学习笔记(十一)蓝牙控制风扇和灯_第3张图片
硬件清单
HC01蓝牙模块
CH340
杜邦线

项目设计
HC01_TX – RX1
HC01_RX – TX1

项目实现:

  1. 串口非中断法
HAL_UART_Receive(&huart1, ch, 19, 100);
//HAL_UART_Transmit(&huart1, ch, strlen(ch), 100);
//printf((char *)ch);
printf("%s", ch);
if (!strcmp((const char *)ch, "open")) {
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_RESET);
if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_8) == GPIO_PIN_RESET)
printf("LED1已打开\n");
}else if(!strcmp((const char *)ch, "close")) {
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_SET);
if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_8) == GPIO_PIN_SET)
printf("LED1已关闭\n");
} else {
if(ch[0] != '\0')
printf("指令发送错误:%s", ch);
}
  1. 串口中断法
printf("收到数据:");
if (!strcmp((const char *)UART1_RX_Buffer, "open")) {
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_RESET);
if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_8) == GPIO_PIN_RESET)
printf("LED1已打开\n");
}else if(!strcmp((const char *)UART1_RX_Buffer, "close")) {
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_SET);
if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_8) == GPIO_PIN_SET)
printf("LED1已关闭\n");
} else {
if(UART1_RX_Buffer[0] != '\0')
printf("指令发送错误:%s", UART1_RX_Buffer);
}

你可能感兴趣的:(STM32,stm32,单片机,学习)