BLE模块在低功耗控制领域的应用中需对模块进行一定的适配配置,整体步骤大致可分为三步:
第一步:配置模块参数;包含使能广播、设置连接间隙、绑定MAC地址(这一步的作用是使模块在断线后能快速的与目标设备建立连接,并排除非法设备造成的干扰)。
第二步:传感器采集数据,并唤醒模块设备,进行数据传输。
第三步:中央控制器接收数据并做处理,控制执行器做出反应。
本文将以E104-BT02为例,介绍具体的使用方法:
一、设置E104-BT02的参数:
1.进入配置模式:为了使模块能直接进入到配置模式,将模块的P06_WKP引脚拉低唤醒模块,然后将P00_MOD引脚拉低进入配置模式
2.开启广播,通过AT指令开启广播:<STARTADV>,返回<OK>则表示设置成功
ed91c289ef1048dc824dbe2e9b7ab1f0?from=pc.jpg
图一 开启广播

3.设置连接间隙,设置最大、最小连接间隙,在设置时需要注意最大连接间隙必须大于等于最小连接间隙,所以在设置时可以先设置最小间隙:<CONMIN8>,然后再设置最大连接:<CONMAX8>,这样做可以保证在设置最大连接间隙的时候不至于报错。
8fe5dfc924ce4b7587d40c5112d6469e?from=pc.jpg
图二 设置连接间隙

4.绑定对方MAC地址,此MAC地址根据实际设置,本文中就以“112233445566”代替,需要注意的是MAC地址需要使用hex格式发送:<BONDMAC>,首先将<BONDMAC>指令输入,然后转换为16(hex)进制发送,最后在“>”(3E)前面以16进制(hex)格式输入MAC地址。
68da9ec1ec3c4eba942caa29578d5adc?from=pc.jpg
67b280eb8c2042598aeac3c7dde6cea2?from=pc.jpg
图三 绑定MAC地址
至此参数配置完成。
二、传感器唤醒E104-BT02进行数据传输,需要操作的流程如下:唤醒模块、检测连接状态、进入透传模式。
1.传感器采集数据,此步骤根据实际的传感器编写自己的逻辑代码
2.当数据采集完成后,唤醒设备进行数据传输。控制MCU给E104-BT02模块的P06_WKP引脚输入低电平唤醒,控制伪代码如下:
GPIO_SET_VALUE(WKP,LOW);
3.检测连接状态,检测P11_STATE引脚是否为低,低电平表示已经建立连接,若为连接则等待建立连接,逻辑伪代码如下:
while( GPIO_READ_VALUE(STATE) == LOW ) {
break;
}
4.控制E104-BT02模块进入透传模式,控制进入透传将P00_MOD引脚拉高进入透传,控制逻辑伪代码如下:
GPIO_SET_VALUE(MOE,HIGH);
到E104-BT02模块可以进行数据传输了
5.传输数据,将传感器采集的数据通过UART串口传送到控制中心,比如此时待传输数据为:data:07020101。MCU通过串口将数据发送至E104-BT02:,逻辑伪代码如下:
UART_SEND(“data:07020101”);
6.当控制中心收到数据后可以给一个回复响应,当收到响应后表示通信完成,系统可以进入休眠,此时给P06_WKP引脚一个高电平使模块进入休眠,伪代码如下:
while( RECV_RESP() ){
GPIO_SET_VALUE(WKP,HIGH);
break;
}
自此一套完整的数据采集、唤醒、数据传输、休眠的过程就完成了。整个系统进入低功耗模式等待下一次唤醒。
三、控制器设计:
在对端设置接收到数据后,进行解析,生成控制逻辑,执行器执行动作,此步骤用户需要根据自己需求自行设计。比如最终是控制继电器开合、或者控制蜂鸣器鸣笛、或者控制LED进行灯光闪烁。这里列举一个控制继电器的操作,继电器工作示意图如图四,
01dc26be8e0d4d059f64ac9433115c53?from=pc.jpg
图四 继电器工作示意图

控制端伪代码如下:
ctrl = 数据解析(recv);
if( ctrl == STATE_1 ){
继电器设置为常开();
}
else{
继电器设置为常闭();
}
发送接收响应();//告诉传感器已经正确收到数据并处理。