ESP32 と WiFiMulti 機能
複数のネットワークにアクセスできる場合、ESP32 は複数のネットワークに接続できます。コード内で SSID とパスワードを定義するだけです。利用可能なネットワークを検索し、コードで定義した最強の Wi-Fi ネットワークに接続します。
ノート: ネットワークへの接続が失われた場合、ESP32 は一度に 1 つのネットワークに接続することに注意してください。ESP32 は他の利用可能な WiFi ネットワークに接続します。
Arduino IDE で WiFiMulti の例を開くことができます。
に行く : ファイル > 例 > WiFi > WifiMulti
ESP32 で複数の WiFi ネットワークを追加する方法
ESP32 ボードに複数の WiFi ネットワークを追加するには。使用します Wifiマルチ 機能 addAP() . addAP() 関数は、引数として複数の SSID とパスワードを受け入れることができます。複数のネットワークを追加するには、SSID とパスワードを個別に定義する必要があります。以下は、複数のネットワークを追加するための構文です。 Wifiマルチ 機能 addAP() :
wifiマルチ。 addAP ( 「SSID ネットワーク1」 、 「パスワード1」 ) ;
wifiマルチ。 addAP ( 「SSIDネットワーク2」 、 「パスワード2」 ) ;
wifiマルチ。 addAP ( 「SSIDネットワーク3」 、 「パスワード3」 ) ;
ESP32 で最強の WiFi ネットワークに接続する方法
ESP32 を利用可能な最強のネットワークに接続するために、ESP32 WiFi スキャンと WiFi マルチの例を組み合わせます。次の手順を実行するコードを Arduino IDE に記述します。
- 利用可能なネットワークをスキャンする
- RSSI (信号強度) をシリアル モニターに出力します。したがって、利用可能な最強のネットワークを確認できます
- 最強のネットワークに自動接続
- 接続が失われると、次に利用可能な最も強力なネットワークに自動的に接続します
コードをテストするには、 スマートフォン ホットスポットと WiFi ネットワーク。エラーを回避するために、モバイル ホットスポット ネットワークには常に単純な名前を割り当てます。
Arduino IDE を使用して、ESP32 ボードで指定されたコードをアップロードします。
コード
Arduino IDE を開き、ESP32 でコードをアップロードします。 COM ポートを選択することを忘れないでください。
#include#include
Wi-Fiマルチ Wi-Fiマルチ ;
/*AP 接続時間ごと。 ESP32が接続に時間がかかる場合に増加*/
定数 uint32_t connectTimeoutMs = 10000 ;
空所 設定 ( ) {
シリアル。 始める ( 115200 ) ; /*シリアル通信開始*/
遅れ ( 10 ) ;
Wi-Fi。 モード ( WIFI_STA ) ; /*ステーションとして初期化されたESP32 WIFI*/
/*既知のすべての SSID とそのパスワードを入力します*/
wifiマルチ。 addAP ( 「あなたのSSID」 、 'パスワード' ) ; /*接続したいネットワーク1*/
wifiマルチ。 addAP ( '電話' ) ; /*接続したいネットワーク2*/
// WiFi.scanNetworks は合計ネットワークを提供します
整数 n = Wi-Fi。 スキャンネットワーク ( ) ; /*利用可能なネットワークをスキャン*/
シリアル。 println ( 「スキャン完了」 ) ;
もしも ( n == 0 ) {
シリアル。 println ( 「利用可能なネットワークがありません」 ) ; /*ネットワークが見つからない場合に表示*/
}
そうしないと {
シリアル。 印刷する ( n ) ;
シリアル。 println ( 「ネットワークが見つかりました」 ) ; /*ネットワークが見つかった場合に出力します*/
為に ( 整数 私 = 0 ; 私 < n ; ++ 私 ) {
シリアル。 印刷する ( 私 + 1 ) ; /*利用可能なネットワークのSSIDとRSSIを表示*/
シリアル。 印刷する ( ':' ) ;
シリアル。 印刷する ( Wi-Fi。 SSID ( 私 ) ) ;
シリアル。 印刷する ( '(' ) ;
シリアル。 印刷する ( Wi-Fi。 RSSI ( 私 ) ) ;
シリアル。 印刷する ( ')' ) ;
シリアル。 println ( ( Wi-Fi。 暗号化の種類 ( 私 ) == WIFI_AUTH_OPEN ) ? ' ' : 「*」 ) ;
遅れ ( 10 ) ;
}
}
/*利用可能な SSID とパスワードを使用して、利用可能な最強の定義済みネットワークに接続します*/
シリアル。 println ( 「Wi-Fi に接続しています...」 ) ;
もしも ( wifiマルチ。 走る ( ) == WL_接続済み ) {
シリアル。 println ( '' ) ;
シリアル。 println ( 「WIFIネットワークに接続しました」 ) ;
シリアル。 println ( '接続されたネットワークの IP アドレス: ' ) ;
シリアル。 println ( Wi-Fi。 ローカルIP ( ) ) ; /*接続されたネットワークのIPアドレスを出力します*/
}
}
空所 ループ ( ) {
もしも ( wifiマルチ。 走る ( connectTimeoutMs ) == WL_接続済み ) { /*接続が失われた場合、次のネットワークに接続します*/
シリアル。 印刷する ( 'Wi-Fi 接続: ' ) ;
シリアル。 印刷する ( Wi-Fi。 SSID ( ) ) ;
シリアル。 印刷する ( ' ' ) ;
シリアル。 println ( Wi-Fi。 RSSI ( ) ) ;
}
そうしないと {
シリアル。 println ( 「WiFiが接続されていません!」 ) ; /*すべての条件が失敗した場合、これを出力します*/
}
遅れ ( 1000 ) ;
}
ESP32 用の WiFi ライブラリを定義することからコードを開始し、 WiFiマルチ 物体。次に、セットアップの部分で、2 つのネットワークを追加しました。 1 つはパスワードが暗号化された WiFi ネットワークであるため、スマートフォンのホットスポットである 2 番目のネットワークが開いている間にパスワードを入力する必要があるため、ネットワーク SSID を入力するだけでパスワードを入力する必要はありません。
次に、 wifiMulti.run() コマンド ESP32 は、利用可能な最強のネットワークに接続します。 WiFi が接続されると、コードは接続されたネットワーク SSID、IP アドレス、および RSSI を出力します。
出力
最初に ESP32 にコードをアップロードした後、利用可能なネットワークをスキャンし、利用可能な最も強力なネットワークに接続します。ここでは、各ネットワークの RSSI 値を確認できます。RSSI が低いほど、ネットワークが強いことを意味します。
ESP32 が接続されていることがわかります。 電話網 それは持っているので RSSI の値 -62 SSID とパスワードが定義されているもう一方のネットワークは、 チームサム その値は -73. ここで、モバイル ホットスポット ネットワークの RSSI 値がゼロに近いほど、接続が強いことを意味します。
スマートフォンのホットスポットを切断します。 ESP32 は、他の強力な利用可能なネットワークに接続します。出力にあるように、ESP32 が次に強力な利用可能なネットワークに接続されていることがわかります。接続先のネットワークは、RSSI 値が 0f -65 の Team SAM です。
結論
ESP32 は、そのサークルで利用可能な最強のネットワークに接続できます。コード内で複数のネットワーク SSID とパスワードを定義するだけです。を使用して WiFiマルチ 関数 ESP32 は利用可能なネットワークをスキャンし、接続が失われると、ESP32 範囲内の他の利用可能なネットワークに接続します。