概览
BluFi 是一款基于蓝牙通道的 Wi-Fi 网络配置功能,适用于 ESP32。它通过安全协议将 Wi-Fi 配置和证书传输到 ESP32,然后 ESP32 可基于这些信息连接到 AP 或建立 SoftAP。
用户可按需自定义用于对称加密、非对称加密和校验的算法。这里我们采用 DH 算法进行密钥协商、128-AES 算法用于数据加密、CRC16 算法用于校验和验证。
BluFi 流程
BluFi 配网功能包含配置 SoftAP 和 Station 两部分。
下面以配置 Station 为例说明配置步骤。 BluFi 配网的配置 Station 包含广播、连接、服务发现、协商共享密钥、传输数据、回传连接状态等步骤。
代码
引入相关库文件
#include <WiFi.h>
#include <Preferences.h>
#include "BluetoothSerial.h"
定义变量
String ssids_array[50];
String network_string;
String connected_string;
const char* pref_ssid = "";
const char* pref_pass = "";
String client_wifi_ssid;
String client_wifi_password;
const char* bluetooth_name = "ESP32 BLE";
long start_wifi_millis;
long wifi_timeout = 10000;
bool bluetooth_disconnect = false;
enum wifi_setup_stages { NONE, SCAN_START, SCAN_COMPLETE, SSID_ENTERED, WAIT_PASS, PASS_ENTERED, WAIT_CONNECT, LOGIN_FAILED };
enum wifi_setup_stages wifi_stage = NONE;
BluetoothSerial SerialBT;
Preferences preferences;
WIFI联网函数
bool init_wifi()
{
String temp