1.《一个物联网系统的实现》之使用微信小程序给ESP32C3配网
0.前言
拖了这么久没更新,本次博主带来了通过微信小程序的BLE(低功耗蓝牙)
配置ESP32C3
连接到WiFi
的demo。
可有些好事的人会为乐鑫官方不是有通过蓝牙配网的demo吗?为什么要用你的?
答:根据博主有限的知识,目前我了解到乐鑫官给出的配网demo有两种,一种是通过WiFi混杂模式
的WiFi配网,另一种是使用蓝牙的方式配网。前者需要借助微信公众号实现,稳定性较差。而开设微信公众号需要企业资质,所以这种方式有一定的局限性。第二种虽然使用的是蓝牙的方式配网,但是苹果和安卓两个平台分别有不同的客户端。
而像博主这样聪明的人当然选择微信小程序这样"一次编译到处运行的平台",而且就用户而言还省去了安装app的麻烦。(腾讯这个月的广告费该结一下了!!🙈)
1.使用方法
1.1 复制文件夹
- 此项目已经被博主封装为一个组件,只需要将
ble_wifi
复制到项目路径下components
文件夹下(如果没有components
文件夹就新建一个)
1.2 开启项目的Bluebooth
组件并使能Enable BLE 4.2 features
。
如果你是用的是乐鑫官方的eclipse开发,双击项目中的sdkconfig
文件
依次点击Component config
->Bluetooth
勾选Bluetooth
。将菜单拉到最后勾选Enable BLE 4.2 features
。
1.3 修改分区表
- 由于使用了
BLE
、WiFi
等组件编译后的固件比较大(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,
修改sdkconfig
Serial flasher config
->Flash size 4MB
修改sdkconfig
.......看图吧我就不写了🙄。(改完了别忘了保存老铁)
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=0
WiFi未连接过,wifi_flag=1
WiFi连接失败或断开连接,wifi_flag=1
WiFi连接成功。
1.5微信小程序
写的挺乱的。。。。咋导入我就不写了。。
2.Sources
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
Hi there, I enjoy reading through your article
I wanted to write a little comment to support you.你好,请问你的代码的License是什么呢?
另外这个配网我没有试过中文WiFi的连接,微信小程序默认似乎是UTF-16编码,中文WiFi的配网应该是有问题的不过我没试过╰(°▽°)╯
随便搞,商用什么的都没关系的。
建议你看下安信可做的方案,比我搞得好。
https://blog.csdn.net/Boantong_/article/details/115666854