蓝牙串口模块测试

当使用HC-05蓝牙模块时,需要将其连接至USB转TTL模块,连接方式为:RXD接至TX、TXD接至RX、VCC连接至VCC(5V-5V)、GND连接至GND。无需连接EN引脚。

将USB转TTL模块连接至电脑,并打开串口调试助手。要进入AT指令模式,首先需要将AT引脚置高,在上电(按住蓝牙模块上的按键再接通电源)。当蓝牙模块的状态灯变成慢闪时,就表示已经成功进入AT模式。设置AT模式,具体的AT指令可以参考HC05 AT指令集。注意,在AT模式下通信波特率为38400,停止位为1个,无奇偶校验。

要配置模块相关的参数,可以进行以下步骤:

  1. 恢复出厂设置:发送AT+ORGL指令
  2. 设置设备名称:发送AT+NAME=MyBluetooth指令,其中“MyBluetooth”为您所希望设置的名称。可通过AT+NAME?进行查询。
  3. 设置/查询模块角色:发送AT+ROLE=Param指令,其中Param取值有0(从机)、1(主机)和2(回环角色)。在这里我们需要将其设置为从机模式,即发送AT+ROLE=0指令。如果查询返回+ROLE:0,则该模块已经是从机模式,无需再次设置。
  4. 设置配对码:发送AT+PSWD=Param指令,其中Param为您所希望设置的配对码。默认通常为1234或0000,可通过AT+PSWD?进行查询。
  5. 设置串口通讯参数:发送AT+UART=115200,1,0指令,其中115200为蓝牙通信串口波特率,停止位为1位,无校验位。可通过AT+UART?进行查询。

最后,要返回正常工作模式,需要重新上电模块(USB转TTL模块连接至电脑,无需按按键,小灯快速闪烁,处于待连接状态),并将手机蓝牙与蓝牙名称为“MyBluetooth”的设备进行配对(输入配对码1234)。打开手机端蓝牙调试助手,寻找名称为“MyBluetooth”的设备(会有部分延迟,建议多试几个软件,名字不好找的可以找已配对的设备,方面寻找),开始蓝牙通信。

stm32cubemx正常配置LED,uart1,uart2(利用串口助手查看手机指令)。

/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "usart.h"
#include "gpio.h"

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */

/* USER CODE END Includes */

/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */

/* USER CODE END PTD */

/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */

/* USER CODE END PD */

/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */

/* USER CODE END PM */

/* Private variables ---------------------------------------------------------*/

/* USER CODE BEGIN PV */

/* USER CODE END PV */

/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
/* USER CODE BEGIN PFP */

/* USER CODE END PFP */

/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
char str1[]="收到开灯指令";
char str2[]="收到关灯指令";
int uart_time=0;

/* USER CODE END 0 */

/**
  * @brief  The application entry point.
  * @retval int
  */
int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_USART1_UART_Init();
  MX_USART2_UART_Init();
  /* USER CODE BEGIN 2 */

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
	uint8_t data;
    HAL_UART_Receive(&huart1, &data, 1, HAL_MAX_DELAY); // 等待接收蓝牙数据
		
	if (data == 0x31)//ASCII码,也可使用'1'
    {
      HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET); // 控制LED灯亮
			/*通过uart2,在pc串口助手显示指令*/
            if(uart_time == 0)
			{
				uart_time =1;
				HAL_UART_Transmit(&huart2, (uint8_t*)str1 , 12, 0xffff);
				HAL_Delay (1000);
				uart_time =0;
			}
            /*通过uart1,在手机蓝牙助手显示指令,可选择使用*/
			if(uart_time == 0)
			{
				uart_time =1;
				HAL_UART_Transmit(&huart1, (uint8_t*)str1 , 12, 0xffff);
				HAL_Delay (1000);
				uart_time =0;
			}
    }
    else if (data == 0x30)//ASCII码,也可使用'0'
    {
			HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET); // 控制LED灯灭
      if(uart_time == 0)
			{
				uart_time =1;
				HAL_UART_Transmit(&huart2, (uint8_t*)str2 , 12, 0xffff);
				HAL_Delay (1000);
				uart_time =0;
			}
			if(uart_time == 0)
			{
				uart_time =1;
				HAL_UART_Transmit(&huart1, (uint8_t*)str2 , 12, 0xffff);
				HAL_Delay (1000);
				uart_time =0;
			}
    }

    HAL_Delay(10);
  }
  /* USER CODE END 3 */
}

 也可使用重定向printf,但printf使用的串口需说明清楚,参数uart_time为了避免两个串口抢占串口存储资源,设置的互斥机制,但仍会存在乱码行为,需要进一步明确原因,有了解原因的也可与我沟通。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值