Agregue el siguiente código a la parte donde falló la conexión Wi-Fi:
ESP_LOGI(TAG,"reason: fail %d\n", event->event_info.disconnected.reason);
P.ej:
case SYSTEM_EVENT_STA_DISCONNECTED:
{
if (s_retry_num < EXAMPLE_ESP_MAXIMUM_RETRY) {
esp_wifi_connect();
xEventGroupClearBits(s_wifi_event_group, WIFI_CONNECTED_BIT);
s_retry_num++;
ESP_LOGI(TAG,"retry to connect to the AP");
}
ESP_LOGI(TAG,"connect to the AP fail\n");
ESP_LOGI(TAG,"reason: fail %d\n", event->event_info.disconnected.reason);
break;
}
Luego compile, grabe y abra el monitor serial. Si Wi-Fi verificará el motivo de error correspondiente en el terminal en este momento, por ejemplo:
I (10654) wifi station: connect to the AP fail
I (10654) wifi station: reason: fail 201
Adjunto: Tabla de comparación de motivos de la falla de la conexión Wi-Fi:
typedef enum {
WIFI_REASON_UNSPECIFIED = 1,
WIFI_REASON_AUTH_EXPIRE = 2,
WIFI_REASON_AUTH_LEAVE = 3,
WIFI_REASON_ASSOC_EXPIRE = 4,
WIFI_REASON_ASSOC_TOOMANY = 5,
WIFI_REASON_NOT_AUTHED = 6,
WIFI_REASON_NOT_ASSOCED = 7,
WIFI_REASON_ASSOC_LEAVE = 8,
WIFI_REASON_ASSOC_NOT_AUTHED = 9,
WIFI_REASON_DISASSOC_PWRCAP_BAD = 10,
WIFI_REASON_DISASSOC_SUPCHAN_BAD = 11,
WIFI_REASON_IE_INVALID = 13,
WIFI_REASON_MIC_FAILURE = 14,
WIFI_REASON_4WAY_HANDSHAKE_TIMEOUT = 15,
WIFI_REASON_GROUP_KEY_UPDATE_TIMEOUT = 16,
WIFI_REASON_IE_IN_4WAY_DIFFERS = 17,
WIFI_REASON_GROUP_CIPHER_INVALID = 18,
WIFI_REASON_PAIRWISE_CIPHER_INVALID = 19,
WIFI_REASON_AKMP_INVALID = 20,
WIFI_REASON_UNSUPP_RSN_IE_VERSION = 21,
WIFI_REASON_INVALID_RSN_IE_CAP = 22,
WIFI_REASON_802_1X_AUTH_FAILED = 23,
WIFI_REASON_CIPHER_SUITE_REJECTED = 24,
WIFI_REASON_BEACON_TIMEOUT = 200,
WIFI_REASON_NO_AP_FOUND = 201,
WIFI_REASON_AUTH_FAIL = 202,
WIFI_REASON_ASSOC_FAIL = 203,
WIFI_REASON_HANDSHAKE_TIMEOUT = 204,
WIFI_REASON_CONNECTION_FAIL = 205,
} wifi_err_reason_t;
NOTA: Si los problemas del canal, la falla de la conexión Wi-Fi ocurre en 13 & caso SSID oculto, algo como las siguientes modificaciones
policy
:
wifi_country_t wifi_country = {0};
ESP_ERROR_CHECK (esp_wifi_get_country (& wifi_country));
wifi_country.policy = WIFI_COUNTRY_POLICY_MANUAL;
ESPERROR_ (esp_wifi_set_country (& wifi_country));