ESP32+Blufi+Tcp+UART

ESP32+Blufi+TCP+UART

在上上一篇文章的基础上添加了蓝牙配网的功能,第一次连接WiFi时,通过手机微信小程序蓝牙配网,第二次通过记录的WiFi内容就能够直接连接。

参考的文档有:

ESP32 IDF官方参考指南:

https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/api-guides/blufi.html

CSDN大佬的参考文档:

https://xuhong.blog.csdn.net/article/details/114676681

上图为乐鑫官方文档中的配网流程图,参考的程序为ESP-IDF工程下面examples/bluetooth/bluedroid/ble/blufi/这个目录下面的工程。

例程示意图

      如上图所示,在ESP32上面运行了example目录下面的三个例程,使用微信小程序进行蓝牙配网后就能直接进行后续的操作,Blufi例程只有蓝牙配网的部分,在蓝牙配网成功后继续广播信号等待新的蓝牙连接。在用微信小程序的配网时注意一个地方,就是蓝牙名称的过滤,在Blufi例程中有对蓝牙广播名称的设置,在小程序中有对蓝牙名称的过滤,我在使用时先修改了Blufi中的名称,在使用小程序时没有看程序直接连接,就导致了微信一直不能搜出来ESP32设置的名称。

入上图所示在微信小程序的util.js文件中的过滤名称函数要与Blufi例程主函数中设置的名称有包含关系,保证过滤函数能把名称过滤出来。

上图是通过小程序搜出来的名称。

例程组合

程序我就是将三个程序都放到examples目录下面sockets目录下面的tcp_client目录的tcp_client.c文件中。

上图是我文件的组织方式,将Blufi的程序写成一个任务函数,在主函数里面启动这个任务,然后在获取到IP地址的地方启动我的另外两个任务。

当Blufi获取到蓝牙连接并断开的事件后就启动两个任务并停止蓝牙广播,但是这样有个问题就是每次连接的时候都需要通过蓝牙连接一下板子。

在断开后启动任务程序能够运行,只是每次都需要重新连接,肯定不行,会被打死。然后我在获取到IP地址后就直接启动任务了,第一次连接后,后面的每次就不用重新连接蓝牙配置WiFi网络了。

最后

ESP32的初学者,希望大家给出宝贵的意见。程序目前能够运行了,但是经过检测,蓝牙还一直在广播,这个耗电啊,后面又在与服务器通信的心跳包中添加了超时重启函数,当板子超过规定的时间没有收到服务器的心跳就直接重启。重启大法好啊。能解决断网的问题,目前就先这样,后面在修改。目前想到在Blufi初始化的时候增加一个标志位,当获取到IP时间后就不执行Blufi初始化函数,当没有获取到IP是就执行初始化函数进行蓝牙配网。这种方式应该还是有点问题,后面再研究研究,谢谢大家。

 

 

 

 

 

 

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值