一 使用蓝牙透传模块简介
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侧,通过串口小助手,看到数据收发的结果: