# WiFiAsyncConnect **Repository Path**: ashin10/wifi-async-connect ## Basic Information - **Project Name**: WiFiAsyncConnect - **Description**: 用于ESP32异步开启WiFi.注意: 仅供ESP32系列使用 - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-12-09 - **Last Updated**: 2022-12-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: Arduino, ESP32, WiFi, async, AsyncTimer ## README # ESP32 WiFi异步连接工具类 使用Arduino,用于ESP32异步开启WiFi的工具类 **注意: 仅适用于ESP32系列使用** 通常,调用WiFi会使用delay,例如: ```cpp WiFi.begin("your-wifi-ssid", "password"); while (WiFi.status() != WL_CONNECTED) { delay(100); //阻塞 Serial.print("."); } ``` 本工具类使用[AsyncTimer](https://github.com/Aasim-A/AsyncTimer)使WiFi可以**异步**连接 # 使用方法 1. 引入依赖`AsyncTimer` 2. 在入口类/.ino文件中调用 ```cpp void setup() { Serial.begin(115200); WifiAsyncConnect::set_wifi_check_callback(); //设置回调callback } void loop() { WifiAsyncConnect::wifi_async_check(); //异步连接WiFi //此处执行其他任务,且不会阻塞 //... } ``` 3. 同时,需要在`WiFiSetting.h`中配置`ssid`与`password` ```cpp #define WIFI1 "your-ssid" #define PASS1 "your-password" // #define WIFI1_STATIC true //可选,设置为固定ip,需要额外配置静态ip的参数 ``` 配置完后,通常,串口打印会如下 ```shell //成功的情况 wifi open wifi begin connect to SSID1..all wifi checked,wifi connect succeed //失败的情况 wifi open wifi begin connect to ssid1...........over trying times wifi begin connect to ssid2...........over trying times all wifi checked,wifi connect failed ``` ### 其他可用函数 - `WifiAsyncConnect::get_wifi_status()` 返回WiFi连接状态 - `WifiAsyncConnect::wifi_close()` 关闭WiFi - `WifiAsyncConnect::is_timer_checked` 布尔变量,在WiFi连接后会关闭异步定时器AsyncTimer,此时该变量会设为`true`,可以用于**判断是否完成WiFi连接** # 其他注意 - 因为各芯片的WiFi库不同,本工具类仅适用于Esp32系列 - 如果loop中存在比较复杂的其他函数,因为是异步,会导致wifi连接失败,可以调大`WIFI_CHECK_INTERVAL`至2000(毫秒)