Haribit Intern day8 esp32与手机进行BLE蓝牙数据透传

文章目录

  • 目的
  • 准备
  • 操作步骤
    • 1. 蓝牙设置与广播
    • 2. 模块-手机BLE数据透传
      • 2.1 手机给模块发送消息
      • 2.2 模块给手机发送消息
  • 总结


目的

之前实现了手机与esp32模块的通信,是基于TCP的,手机作为服务端,模块作为客户端进行通信。本文由于具体需求,本文实现基于BLE低功耗蓝牙(Bluetooth Low Energy)的手机-模块间通信,实现数据透传。


准备

  1. 乐鑫esp32-wroom开发板

  2. 手机APP:BLE调试助手(应用商店没有就去百度)

  3. 串口调试助手


操作步骤

参考博文:ESP32 常用蓝牙AT指令使用例程


1. 蓝牙设置与广播

基本原理是,将模块BLE配置好后可以发送蓝牙广播包,手机就可以接收到。

  • 将BLE初始化,将模块设为服务端
AT+BLEINIT=2
  • 设置BLENEME模块的名字
AT+BLENAME="ESP32"//这里我用了ESP32,你也可以自己设
  • 把你设置的名字转成16进制存下来下一步用。
    可以百度16进制转换,也可以直接打在串口调试助手发送框,点HEX(或者十六进制表示)就自动转了。

  • 设置广播

AT+BLEADVDATA="02010606094553503332"

下面对这段广播格式进行讲解:

02:字段配置
01:字段配置
06:字段配置
06:表示后面这一字段长度为6(具体多少取决于你设置的BLENAME转成的16进制数据长度)
09:完整的设备名称在后面
4553503332:设备名称“ESP32”的十六进制表示。

  • 开启广播
AT+BLEADVSTART
  • 手机打开APP BLE调试助手,发现了名为“ESP32”的设备,点击CONNECT连接。至此手机成功连接设备蓝牙。

2. 模块-手机BLE数据透传

具体操作在这篇博文第二段已经解释得非常详细了。我说一下实际操作中的注意点。

  • 在设置BLEINIT时,如果之前设置成了1,想要改成2,遇到报ERROR无法改的情况,解决方案是,先将BLEINIT改为0,再改为2即可。可能是小bug吧。(过程如下所示)
AT+BLEINIT?
+BLEINIT:1   //当前为1

OK
AT+BLEINIT=2//直接设2报错

ERROR
AT+BLEINIT=0//先设为0

OK
AT+BLEINIT=2//再设为2

OK

  • 寻找两个需要使用的端口(writenotify)时,注意对照获得的端口列表和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

2.1 手机给模块发送消息

打开5号Write端口,可以编辑消息发送至模块,通过串口通信软件查看来自手机的消息。

Haribit Intern day8 esp32与手机进行BLE蓝牙数据透传_第1张图片
串口调试助手上收到消息:

AT+BLESPPCFG=1,1,6,1,5

OK
AT+BLESPP

OK

>Hello module i am mobile

2.2 模块给手机发送消息

打开1号Notify端口,监听来自模块的消息

Haribit Intern day8 esp32与手机进行BLE蓝牙数据透传_第2张图片


总结

文章实现了继WiFi后,手机与模块通信的第二种方法——BLE蓝牙通信数据透传,此方法将功耗降低,更适合用于对模块有长期无维护工作需求的环境。

总得来说本实验步骤较为清楚,按照此文章指导,一步步操作即可实现。


你可能感兴趣的:(Haribit,蓝牙,物联网,串口通信,嵌入式,iot)