之前实现了手机与esp32模块的通信,是基于TCP的,手机作为服务端,模块作为客户端进行通信。本文由于具体需求,本文实现基于BLE低功耗蓝牙
(Bluetooth Low Energy)的手机-模块间通信,实现数据透传。
乐鑫esp32-wroom开发板
手机APP:BLE调试助手(应用商店没有就去百度)
串口调试助手
参考博文
:ESP32 常用蓝牙AT指令使用例程
基本原理是,将模块BLE配置好后可以发送蓝牙广播包,手机就可以接收到。
AT+BLEINIT=2
AT+BLENAME="ESP32"//这里我用了ESP32,你也可以自己设
把你设置的名字转成16进制
存下来下一步用。
可以百度16进制转换,也可以直接打在串口调试助手发送框,点HEX
(或者十六进制表示
)就自动转了。
设置广播
AT+BLEADVDATA="02010606094553503332"
下面对这段广播格式进行讲解:
02
:字段配置
01
:字段配置
06
:字段配置
06
:表示后面这一字段长度为6(具体多少取决于你设置的BLENAME转成的16进制数据长度)
09
:完整的设备名称在后面
4553503332
:设备名称“ESP32”的十六进制表示。
AT+BLEADVSTART
CONNECT
连接。至此手机成功连接设备蓝牙。具体操作在这篇博文第二段已经解释得非常详细了。我说一下实际操作中的注意点。
AT+BLEINIT?
+BLEINIT:1 //当前为1
OK
AT+BLEINIT=2//直接设2报错
ERROR
AT+BLEINIT=0//先设为0
OK
AT+BLEINIT=2//再设为2
OK
write
和notify
)时,注意对照获得的端口列表和app里面的端口列表。AT+BLEADVSTART
OK
+BLECONN:0,"58:55:44:bf:b7:11"
+BLECONNPARAM:0,0,0,6,0,500
+BLECONNPARAM:0,0,0,12,0,500
AT+BLEGATTSCHAR? //查询所有端口号
+BLEGATTSCHAR:"char",1,1,0xC300,0x02
+BLEGATTSCHAR:"desc",1,1,1,0x2901
+BLEGATTSCHAR:"char",1,2,0xC301,0x02
+BLEGATTSCHAR:"desc",1,2,1,0x2901
+BLEGATTSCHAR:"char",1,3,0xC302,0x08
+BLEGATTSCHAR:"desc",1,3,1,0x2901
+BLEGATTSCHAR:"char",1,4,0xC303,0x04
+BLEGATTSCHAR:"desc",1,4,1,0x2901
+BLEGATTSCHAR:"char",1,5,0xC304,0x08
+BLEGATTSCHAR:"char",1,6,0xC305,0x10
+BLEGATTSCHAR:"desc",1,6,1,0x2902
+BLEGATTSCHAR:"char",1,7,0xC306,0x20
+BLEGATTSCHAR:"desc",1,7,1,0x2902
+BLEGATTSCHAR:"char",1,8,0xC307,0x02
+BLEGATTSCHAR:"desc",1,8,1,0x2901
OK
打开5号Write端口,可以编辑消息发送至模块,通过串口通信软件查看来自手机的消息。
AT+BLESPPCFG=1,1,6,1,5
OK
AT+BLESPP
OK
>Hello module i am mobile
打开1号Notify端口,监听来自模块的消息
文章实现了继WiFi后,手机与模块通信的第二种方法——BLE蓝牙通信数据透传,此方法将功耗降低,更适合用于对模块有长期无维护工作需求的环境。
总得来说本实验步骤较为清楚,按照此文章指导,一步步操作即可实现。