我是靠谱客的博主 大力万宝路,最近开发中收集的这篇文章主要介绍乐鑫ESP32-WROOM-32入门蓝牙数据发送有一个注意事项:手机向蓝牙发两个字节,模块会自动加前缀+WRITE```` ,加起来刚好20个字节(注意换行符也算),然后会触发手机程序里面的GATT_INVALID_ATTR_LEN错误,错误代码参考,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

买的成品模块,下载程序的时候按一下复位按键,哪一个是复位按键,参考

只下载一个还不够,波特率不要太低,按一下复位引脚

下载哪些bin文件,或者直接在download.config里面查看

上电后如果一直重复打印信息(USB和tx、rx引脚打印相同,都是串口0)
Brownout detector was triggered,八成是供电不足,电脑usb供不动,触发了断电探测器重启

AT指令的话连接串口2,即P16和P17,115200,8N1

返回如下图:

wifi透传模式下不能开蓝牙

关于AT指令配置,复制指令的时候注意把中文符号换成英文

蓝牙和wifi的地址不一样


AT+BLEADDR?
+BLEADDR:a4:cf:12:5d:11:ce
OK
AT+CIPSTAMAC?
+CIPSTAMAC:"a4:cf:12:5d:11:cc"

OK
 

开机透传模式可以只是连接到wifi,没连到TCP,也可以都连接,开机默认连上次设置wifi,默认蓝牙未初始化

下面是配置wifi连接服务器指令

AT+CWMODE=3  设置wifi模式station

AT+CWJAP="SSID","password"   连接路由

AT+CIPSTART="TCP","192.168.3.116",8080,1  作为客户端连接服务器

AT+CIPSEND=4  发送4字节数据

>test 发test

响应 SEND OK

//注意开启keep-alive功能,

下面是配置手机测试工具可以找到的蓝牙指令

AT+BLEINIT=2                                              //将esp32设置成蓝牙服务端

AT+BLEADVPARAM=32,64,0,0,7

AT+BLEADVDATA=“02010609094c434b4a5f424c45030302A0”
/* The adv data is

  • 02 01 06 //<length>,<type>,<data>
  • 09 09 4c434b4a5f424c45 //<length>,<type>,<data>  LCKJ__BLE,注意长度和后面数据要对应
  • 03 03 02A0 //<length>,<type>,<data>
  • 09 10 55AAF008D17C175A //<length>,<type>,<data>

第一列表示长度,第二列表示命令,要将0A改成设置后的长度;

关于广播包type 


AT+BLEGATTSSRVCRE                               //GATTS 创建服务
AT+BLEGATTSSRVSTART                           //GATTS 开启全部服务。
AT+BLEADVSTART                                      //打开广播 注意每次手机和蓝牙连接再断开后,吗,模块也会关闭蓝牙,需要用需要在打开

测试电脑串口向蓝牙发数据手机收不到,手机向蓝牙发,电脑可以收到

参考1  参考2

手机连接上后,在0000a002 的0000c302特性里面进行向蓝牙发送数据

设置第 1 号服务的第 7 号 characteristic 为写通道,设置第 1 号服务的第 5 号
characteristic 为读通道
AT+BLESPPCFG=1,1,7,1,5

貌似不行

使⽤用 1 号服务的 6 号特征(0000c305)通知⻓长度为 4 的数据
AT+BLEGATTSNTFY=0,1,6,4  手机要点开始通知

如果手机测试工具连接不上,可以查看蓝牙和定位开没开,然后先用手机蓝牙连接一下,再测试工具连

蓝牙数据发送有一个注意事项:手机向蓝牙发两个字节,模块会自动加前缀+WRITE```` ,加起来刚好20个字节(注意换行符也算),然后会触发手机程序里面的GATT_INVALID_ATTR_LEN错误,错误代码参考

上述错误的解决方法是可以换一个发送通道,有的通道不会特别严格,甚至没有错误响应,比如0000c302,现在用的是0000c304

但是只有0000c302报错,用0000c303和0000c304发数据不会返回错误

手机进入接收数据通道,模块返回+WRITE:0,1,6,1,2,  所以如果蓝牙有回馈,要延时一点,否则容易和+WRITE:0,1,6,1,2,混淆

发送完数据后延时几百毫秒再进入接收通道,否则有效数据和+WRITE:0,1,6,1,2,容易粘包

GATT包含若干个Profile,一个Profile包含若干个Services,一个Service包含若干个Characteristics,一个Characteristic包含Properties字段和若干个Descriptor(可选)。

最后

以上就是大力万宝路为你收集整理的乐鑫ESP32-WROOM-32入门蓝牙数据发送有一个注意事项:手机向蓝牙发两个字节,模块会自动加前缀+WRITE```` ,加起来刚好20个字节(注意换行符也算),然后会触发手机程序里面的GATT_INVALID_ATTR_LEN错误,错误代码参考的全部内容,希望文章能够帮你解决乐鑫ESP32-WROOM-32入门蓝牙数据发送有一个注意事项:手机向蓝牙发两个字节,模块会自动加前缀+WRITE```` ,加起来刚好20个字节(注意换行符也算),然后会触发手机程序里面的GATT_INVALID_ATTR_LEN错误,错误代码参考所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部