Wi-Fi接続したい
#include <WiFi.h>
const char* ssid = "EXISTING_SSID_NAME";
const char* password = "EXISTING_WIFI_PASSWORD";
WiFi.begin(ssid, password);
WiFi.begin関数で既存のWi-Fi機器に接続できます。
setup()関数に記述します。
リトライ処理したい
#include <WiFi.h>
const char* ssid = "SET_SSID_NAME";
const char* password = "SET_PASSWORD";
void wifi_init_sta() {
// ステーションモード
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password)
Serial.println("Connecting to WiFi...");
// 接続するまでのリトライ処理
int attempts = 0;
while (WiFi.status() != WL_CONNECTED && attempts < 20) {
delay(500);
Serial.print(".");
attempts++;
}
if (WiFi.status() == WL_CONNECTED) {
Serial.println();
Serial.println("WiFi connected!");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
} else {
Serial.println();
Serial.println("Failed to connect to WiFi");
}
}
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println();
wifi_init_sta();
}
void loop() {};
WiFi接続に失敗することもあるはずなので、リトライ処理を追加したサンプルです。
最初にWiFi.mode(WIFI_STA)でステーションモードを明示的に設定しています。
基本は接続の状態が成功(WL_CONNECTED)になるまでwhileループします。
ただし、接続に失敗し続けた時の無限ループを防止するため、リトライする回数に上限(ここでは20回)を設けています。
ステーション接続に切り替えたい
void wifi_switch_sta() {
// Disconnect ALL connections
WiFi.disconnect(true);
delay(100);
wifi_init_sta();
}
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println();
wifi_init_sta();
}
void loop() {
// "switch sta"コマンドでAP -> STAに切り替え
if (Serial.available()) {
String cmd = Serial.readStringUntil('\n');
if (cmd == "switch sta") {
wifi_switch_sta();
}
}
}
ループ処理の途中で、APモードからSTA(ステーション)モードに切り替えるサンプルです。
ここではswitch staコマンドを受け取ったときにwifi_switch_staが実行されます。
内部ではwifi_init_staを再利用しています。