【嵌入式】蓝牙串口通信透传模块(HC-08)的使用

一 使用蓝牙透传模块简介

    HC-08 蓝牙串口通信模块是新一代的基于 Bluetooth Specification V4.0 BLE 蓝牙协议的数传模块。无线工作频段为 2.4GHz ISM,调制方式是 GFSK。模块最大发射功率为 4dBm,接收灵敏度-93dBm,空旷环境下和 iphone4s 可以实现 80 米超远距离通信。模块大小 26.9mm×13mm×2.2mm,集成了邮票封装孔和排针焊接孔,既可以贴片封装,也又可以焊接排针,很方便嵌入应用系统之内。自带 LED 状态指示灯,可直观判断蓝牙的连接状态。
    模块采用 TI 的 CC2540F256 芯片,配置 256K 字节空间,支持 AT 指令,用户可根据需要更改角色(主、从模式)以及串口波特率、设备名称等参数,使用灵活。

二 蓝牙模块使用准备

    (1)手机端APP:

        安卓手机下载串口通信APP:https://download.csdn.net/download/sinat_33408502/13076457

        苹果手机APP Store 下载安装 Lightblue 或蓝牙助手

    (2)PC端串口通信小助手:https://download.csdn.net/download/sinat_33408502/13076654

    (3)USB转TTL模块

    (4)TTL转232模块

三 蓝牙连接MCU与手机进行通信

    连接示意图如下:

    

    其中,需要注意的是:

    (1)VCC最好接3.3V(如果需要5V的供电,不能不加保护直连,可能会烧坏模块。需要在模块的 RX 端串接一个 220Ω~1KΩ的电阻再接 MCU 的 TX,模块的 TX 直接接 MCU 的 RX,无需串接电阻);

    (2)蓝牙模块的波特率默认为9600,可以在使用中,根据实际需要,用AT指令进行修改(我这边使用的是4800的波特率);

    (3)蓝牙模块是TTL电平,如果使用的MCU串口是232的串口,中间需要转接反相器或者232转TTL电平的转换模块(实际测试中发现,MCU串口发送数字1,手机端APP收到的数据是7F,排查原因在于此)

    (4)以上连接之后,蓝牙的通信协议等都被封装在透传模块中,可以视为一个蓝牙转串口的设备,只要针对MCU的串口进行操作即可。下面是MCU的串口控制程序:

/**************************************************************************
* 函数名称: initUART3
* 功能描述: UART3串口初始化
* 输入参数:
* 输出参数:
* 返 回 值:
* 其它说明: 
**************************************************************************/
void initUART3(void)
{
	UART_CFG_Type UARTConfigStruct;
	UART_FIFO_CFG_Type UARTFIFOConfigStruct;
	scu_pinmux(0xF, 2, MD_PDN, FUNC1); 	                    
	scu_pinmux(0xF, 3, MD_PLN|MD_EZI|MD_ZI, FUNC1); 	        
	UART_ConfigStructInit3(&UARTConfigStruct);  //设置串口波特率为4800
	UART_FIFOConfigStructInit(&UARTFIFOConfigStruct);
	UART_Init((LPC_USARTn_Type *)LPC_USART3, &UARTConfigStruct);
	UART_FIFOConfig((LPC_USARTn_Type *)LPC_USART3, &UARTFIFOConfigStruct);
	UART_TxCmd((LPC_USARTn_Type *)LPC_USART3, ENABLE);
    UART_IntConfig((LPC_USARTn_Type *)LPC_USART3, UART_INTCFG_RBR, ENABLE);
    UART_IntConfig((LPC_USARTn_Type *)LPC_USART3, UART_INTCFG_RLS, ENABLE);
    
	NVIC_SetPriority(USART3_IRQn, ((0x01 << 3) | 0x01));  //设置串口优先级
    NVIC_EnableIRQ( USART3_IRQn);  
}
/**************************************************************************
* 函数名称: UART3_IRQHandler
* 功能描述: UART3中断服务程序
* 输入参数:
* 输出参数:
* 返 回 值:
* 其它说明: 
**************************************************************************/
void UART3_IRQHandler (void)
{
    uint8_t res;
	static uint8_t cnt;	
	while(1)
	{
		if (!(LPC_USART3->LSR & UART_LSR_RDR)) 
		{
			break;
		}
        else
		{
			res = UART_ReceiveByte(LPC_USART3);  //串口收
			uart3_buf[cnt++] = res;
            UART_SendByte(LPC_USART3, res);  //串口发(echo)
			if(cnt > 15)
			{
				cnt = 0;
			}
		}
	}
}

    综上,连接手机端APP可以看到数据收发的结果:

四 蓝牙模块之间的连接

    连接示意图如下:

    其中,需要注意的是:

    (1)上图MCU侧的蓝牙模块接线以及控制程序不变;

    (2)使用两个蓝牙模块,一块接MCU(设置为主机),一块接TTL转USB的转换模块到电脑(默认为从机),同时注意同步波特率;

    综上,在PC侧,通过串口小助手,看到数据收发的结果:

猜你喜欢

转载自blog.csdn.net/sinat_33408502/article/details/109379160