0.前言

拖了这么久没更新,本次博主带来了通过微信小程序的BLE(低功耗蓝牙)配置ESP32C3连接到WiFi的demo。

可有些好事的人会为乐鑫官方不是有通过蓝牙配网的demo吗?为什么要用你的?

答:根据博主有限的知识,目前我了解到乐鑫官给出的配网demo有两种,一种是通过WiFi混杂模式的WiFi配网,另一种是使用蓝牙的方式配网。前者需要借助微信公众号实现,稳定性较差。而开设微信公众号需要企业资质,所以这种方式有一定的局限性。第二种虽然使用的是蓝牙的方式配网,但是苹果和安卓两个平台分别有不同的客户端。

而像博主这样聪明的人当然选择微信小程序这样"一次编译到处运行的平台",而且就用户而言还省去了安装app的麻烦。(腾讯这个月的广告费该结一下了!!🙈)

1.使用方法

1.1 复制文件夹

  • 此项目已经被博主封装为一个组件,只需要将ble_wifi复制到项目路径下components文件夹下(如果没有components文件夹就新建一个)

image-20220219163414712

1.2 开启项目的Bluebooth组件并使能Enable BLE 4.2 features

如果你是用的是乐鑫官方的eclipse开发,双击项目中的sdkconfig文件

image-20220219163803349

依次点击Component config->Bluetooth勾选Bluetooth。将菜单拉到最后勾选Enable BLE 4.2 features

image-20220219164017978

image-20220219164320600

1.3 修改分区表

  • 由于使用了BLEWiFi等组件编译后的固件比较大(2M版本的ESP32C3跑不起来),为了避免后续出错修改一下分区表。
  • 在项目根目录下新建文件partitions.csv内容如下
# ESP-IDF Partition Table,,,,,
# Name,   Type, SubType, Offset,  Size,   Flags
nvs,      data, nvs,     0x9000,  0x6000,
phy_init, data, phy,     0xf000,  0x1000,
factory,  app,  factory, 0x10000, 2M,

image-20220219165049279

修改sdkconfig Serial flasher config->Flash size 4MB

image-20220219165650536

修改sdkconfig .......看图吧我就不写了🙄。(改完了别忘了保存老铁)

image-20220219165824718

1.4 使用(PS:这回是真使用了!!)

  • 在你的项目中引入头文件#include "ble_wifi.h" #include "nvs_flash.h"
  • 初始化nvs。(WiFi的配置信息会通过nvs保存因此要提前初始化)

    esp_err_t ret;
    
    ret = nvs_flash_init();
    if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) {
      ESP_ERROR_CHECK(nvs_flash_erase());
      ret = nvs_flash_init();
    }
  • 调用ble_wifi_init_sta()函数初始化WiFi。WiFi会被初始化为station模式,如果上次WiFi连接过,ble_wifi_init_sta()会根据上次的配置信息自动连接WiFi。
  • 通过ble_wifi_set_wifi_connect_start()会使ESP32C3进入配网模式。此时使用微信小程序就可以设置ESP23C3联网了。
  • 通过ble_wifi_set_wifi_connect_stop()会使ESP32C3退出配网模式。
  • 有些情况你可能想知道WiFi的状态,只需要读取ble_wifi.c文件下wifi_flag的值。wifi_flag=0WiFi未连接过,wifi_flag=1WiFi连接失败或断开连接,wifi_flag=1WiFi连接成功。

1.5微信小程序

写的挺乱的。。。。咋导入我就不写了。。

2.Sources

https://pan.baidu.com/s/1OZAfvRGDH0v0Nwd1ftC8VA
提取码:v2zt

文章目录