使用 MakePico 設置 Wi-Fi 連接並實現斷線重連機制
在這節課中,我們將學習如何使用 MakePico 設置 Wi-Fi 連接,並實現一個自動重連機制,確保在 Wi-Fi 斷開時能夠自動重新連接到網絡。這些技能對於開發可靠的物聯網(IoT)設備至關重要,因為這些設備通常需要穩定的網絡連接來進行數據傳輸。
步驟 1:引入必要的庫文件並設置 Wi-Fi 連接參數
首先,我們需要引入 WiFi.h 和 WiFiClient.h 這兩個庫文件,這些庫文件提供了 ESP32 進行 Wi-Fi 連接所需的所有功能。接著,設置 Wi-Fi 的 SSID 和密碼。
#include <WiFi.h> #include <WiFiClient.h> // 設置 Wi-Fi SSID 和密碼 const char *ssid = "XXX"; // Wi-Fi SSID const char *password = "XXX"; // Wi-Fi Password
解釋:
WiFi.h和WiFiClient.h是 ESP32 進行 Wi-Fi 連接的核心庫。ssid和password變量存儲了 Wi-Fi 網絡的名稱和密碼,這些是設備連接到網絡所必需的信息。
步驟 2:創建一個自定義函數來初始化 Wi-Fi
接下來,我們創建一個名為 wifiini 的自定義函數來處理 Wi-Fi 的初始化過程。在這個函數中,我們將 Wi-Fi 模式設置為 WIFI_OFF 以確保 Wi-Fi 從關閉狀態開始,然後將其設置為 WIFI_STA(即 Wi-Fi 客戶端模式),這是連接到現有 Wi-Fi 網絡所需的模式。
void wifiini() {
WiFi.mode(WIFI_OFF); // 關閉 Wi-Fi
delay(1000); // 延遲 1 秒,確保狀態切換完成
WiFi.mode(WIFI_STA); // 設置為 Wi-Fi 客戶端模式
}
解釋:
WiFi.mode(WIFI_OFF):將 Wi-Fi 設置為關閉狀態,以確保從乾淨的狀態開始。WiFi.mode(WIFI_STA):將 Wi-Fi 設置為客戶端模式,以便 ESP32 可以連接到 Wi-Fi 路由器。
步驟 3:在 setup 函數中初始化 Wi-Fi 和設置引腳模式
在 Arduino 程式的 setup 函數中,我們將調用 wifiini 函數來初始化 Wi-Fi,並設置 GPIO 引腳的模式。
void setup() {
Serial.begin(115200); // 初始化串行通訊,設置波特率為 115200
pinMode(13, OUTPUT); // 將 GPIO 13 設置為輸出模式
pinMode(14, INPUT); // 將 GPIO 14 設置為輸入模式
wifiini(); // 初始化 Wi-Fi
}
解釋:
Serial.begin(115200):初始化串行通訊,以便在控制台查看調試信息。pinMode(13, OUTPUT)和pinMode(14, INPUT):設置 GPIO 引腳的模式,以便後續控制外部設備或讀取輸入信號。
步驟 4:實現 Wi-Fi 斷線檢測和重連機制
在主迴圈 loop 中,我們設置了一個 Wi-Fi 狀態標誌 espflag,並創建一個自定義函數 connetrouter 來處理 Wi-Fi 連接。如果檢測到 Wi-Fi 斷線,程式將嘗試重新連接。
byte espflag = 0;
void connetrouter() {
int timeout = 0;
WiFi.begin(ssid, password); // 開始連接 Wi-Fi
// 等待連接成功或超時
while (WiFi.status() != WL_CONNECTED && timeout < 20) {
delay(500);
Serial.print("."); // 打印連接過程
timeout++;
}
// 檢查是否成功連接
if (timeout < 20) {
espflag = 1; // 連接成功,設置標誌位
} else {
WiFi.disconnect(); // 連接失敗,斷開 Wi-Fi
}
}
void loop() {
// 檢查 Wi-Fi 是否斷線且之前已連接成功
while (WiFi.status() != WL_CONNECTED && espflag == 0x01) {
espflag = 0x00; // 重置標誌位
}
// 如果未連接,嘗試重新連接
if (espflag == 0x00) {
connetrouter(); // 呼叫連接函數
}
}
解釋:
connetrouter()函數負責嘗試連接 Wi-Fi,並在連接成功或失敗時更新espflag狀態標誌。WiFi.status():返回當前的 Wi-Fi 連接狀態,WL_CONNECTED表示已成功連接。espflag狀態標誌用於追蹤 Wi-Fi 連接的狀態,當 Wi-Fi 斷開時將重新嘗試連接。
步驟 5:上傳代碼並觀察結果
- 上傳代碼:
- 將代碼上傳到 MakePico 開發板,並打開串行監視器以查看調試信息。
- 觀察 Wi-Fi 連接狀態:
- 在串行監視器中,您應該會看到一系列的點(
.),表示正在嘗試連接 Wi-Fi。如果成功連接,點將停止,並且設備將保持連接狀態。 - 如果 Wi-Fi 斷開,程式將自動重新連接。
- 在串行監視器中,您應該會看到一系列的點(
