同じコードでも、バージョン2.0.1で動いていて、バージョン2.0.2以降でコンパイルした場合に接続できなくなる現象を自宅環境では問題解決する事ができましたのでこちらに書いておきます。
以下、Core debug levelをveboseでコンパイルした場合のログです。
[ 124][V][WiFiGeneric.cpp:283] _arduino_event_cb(): STA Started
[ 124][D][WiFiGeneric.cpp:852] _eventCallback(): Arduino Event: 2 - STA_START
[ 245][V][WiFiGeneric.cpp:96] set_esp_interface_ip(): Configuring Station static IP: 0.0.0.0, MASK: 0.0.0.0, GW: 0.0.0.0
[ 2297][V][WiFiGeneric.cpp:300] _arduino_event_cb(): STA Disconnected: SSID: xxxxx, BSSID: 00:00:00:00:00:00, Reason: 201
[ 2298][D][WiFiGeneric.cpp:852] _eventCallback(): Arduino Event: 5 - STA_DISCONNECTED
[ 2306][W][WiFiGeneric.cpp:873] _eventCallback(): Reason: 201 - NO_AP_FOUND
[ 2313][D][WiFiGeneric.cpp:889] _eventCallback(): WiFi Reconnect Running
[ 2374][V][WiFiGeneric.cpp:96] set_esp_interface_ip(): Configuring Station static IP: 0.0.0.0, MASK: 0.0.0.0, GW: 0.0.0.0
[ 4425][V][WiFiGeneric.cpp:300] _arduino_event_cb(): STA Disconnected: SSID: xxxxx, BSSID: 00:00:00:00:00:00, Reason: 201
[ 4426][D][WiFiGeneric.cpp:852] _eventCallback(): Arduino Event: 5 - STA_DISCONNECTED
[ 4434][W][WiFiGeneric.cpp:873] _eventCallback(): Reason: 201 - NO_AP_FOUND
[ 4441][D][WiFiGeneric.cpp:898] _eventCallback(): WiFi AutoReconnect Running
[ 4449][V][WiFiGeneric.cpp:96] set_esp_interface_ip(): Configuring Station static IP: 0.0.0.0, MASK: 0.0.0.0, GW: 0.0.0.0
「Reason: 201 – NO_AP_FOUND」が返ってきて接続できません。
延々と繰り返していきます。
対処方法は
WiFi.mode(WIFI_STA);
の前に
WiFi.setMinSecurity(WIFI_AUTH_WPA_PSK);
を入れることにより無線LANの暗号化方式のレベルを下げる指定ができ、この方法でバージョン2.0.3でも接続できる様になりました。
MinSecurityのデフォルト値がバージョン2.0.2以降、WIFI_AUTH_WPA_PSKからWIFI_AUTH_WPA2_PSKに変更になった様です。
[ 37][D][WiFiGeneric.cpp:852] _eventCallback(): Arduino Event: 0 - WIFI_READY
[ 123][V][WiFiGeneric.cpp:283] _arduino_event_cb(): STA Started
[ 124][D][WiFiGeneric.cpp:852] _eventCallback(): Arduino Event: 2 - STA_START
[ 225][V][WiFiGeneric.cpp:96] set_esp_interface_ip(): Configuring Station static IP: 0.0.0.0, MASK: 0.0.0.0, GW: 0.0.0.0
[ 432][V][WiFiGeneric.cpp:295] _arduino_event_cb(): STA Connected: SSID: xxxxx, BSSID: 08:10:86:15:f4:de, Channel: 1, Auth: PSK
[ 434][D][WiFiGeneric.cpp:852] _eventCallback(): Arduino Event: 4 - STA_CONNECTED
[ 999][V][WiFiGeneric.cpp:305] _arduino_event_cb(): STA Got New IP:192.168.1.2
[ 999][D][WiFiGeneric.cpp:852] _eventCallback(): Arduino Event: 7 - STA_GOT_IP
[ 1002][D][WiFiGeneric.cpp:914] _eventCallback(): STA IP: 192.168.1.2, MASK: 255.255.255.0, GW: 192.168.1.1
自宅環境の無線LANアクセスポイントはWPA/WPA2対応の機器、設定ですが、なぜかデフォルトの「WPA_WPA2_PSK」設定では接続が出来ませんでした。
WiFi.setMinSecurity() で指定できる値は、「esp_wifi_types.h」にあります。
typedef enum {
WIFI_AUTH_OPEN = 0, /**< authenticate mode : open */
WIFI_AUTH_WEP, /**< authenticate mode : WEP */
WIFI_AUTH_WPA_PSK, /**< authenticate mode : WPA_PSK */
WIFI_AUTH_WPA2_PSK, /**< authenticate mode : WPA2_PSK */
WIFI_AUTH_WPA_WPA2_PSK, /**< authenticate mode : WPA_WPA2_PSK */
WIFI_AUTH_WPA2_ENTERPRISE, /**< authenticate mode : WPA2_ENTERPRISE */
WIFI_AUTH_WPA3_PSK, /**< authenticate mode : WPA3_PSK */
WIFI_AUTH_WPA2_WPA3_PSK, /**< authenticate mode : WPA2_WPA3_PSK */
WIFI_AUTH_WAPI_PSK, /**< authenticate mode : WAPI_PSK */
WIFI_AUTH_MAX
} wifi_auth_mode_t;
暗号化種類の中にWAPI_PSK (WLAN Authentication and Privacy Infrastructure (WAPI))もあります。興味深いですね。