Introduction
先前為了使用開發板用作自動數據紀錄器,分別測試了基於 ESP8266、 ESP32 的網路連接,最後使用代碼如下。
函式庫
ESP8266
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>ESP32
#include <WiFi.h>
#include <HTTPClient.h>全域設定(WiFi 資訊設定)
struct WiFiCredentials {
String ssid;
String password;
};
WiFiCredentials networks[] = {
{"SSID1", "PASS1"},
{"SSID2", "PASS2"},
{"SSID3", "PASS3"},
};函式
void connectToWiFi() {
WiFi.mode(WIFI_STA);
WiFi.disconnect();
int n = WiFi.scanNetworks();
Serial.println("Scan WiFi");
if (n == 0) {
Serial.println(F("No WiFi Available."));
} else {
int strongestSignalIndex = -1;
int strongestSignalRSSI = -1000;
for (int i = 0; i < n; i++) {
String currentSSID = WiFi.SSID(i);
for (int j = 0; j < sizeof(networks) / sizeof(networks[0]); j++) {
if (currentSSID == networks[j].ssid) {
if (WiFi.RSSI(i) > strongestSignalRSSI) {
strongestSignalRSSI = WiFi.RSSI(i);
strongestSignalIndex = j;
}
}
}
}
if (strongestSignalIndex != -1) {
WiFiCredentials bestNetwork = networks[strongestSignalIndex];
Serial.print("Connecting to WiFi: '" + bestNetwork.ssid + "' Connecting.");
WiFi.begin(bestNetwork.ssid.c_str(), bestNetwork.password.c_str());
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println(F("Connected to The Wifi: "));
Serial.println(WiFi.localIP());
Serial.println(WiFi.RSSI());
} else {
Serial.println(F("No WiFi Available."));
}
}
}