ESP32 WiFi tips

Just some handy pointers for working with and managing WiFi on the ESP32.

void wifiConnect(const char* ssid, const char* passphrase) {
  while (WiFi.status() != WL_CONNECTED) {
    WiFi.mode(WIFI_STA);
    WiFi.setHostname("ESP32-Dev");
    WiFi.begin(ssid, passphrase);
    for (uint8_t i = 0; i < 6; i++) {
        delay(1000);
        if (WiFi.status() == WL_CONNECTED) {
          WiFi.config(WiFi.localIP(), WiFi.gatewayIP(), WiFi.subnetMask(), IPAddress(9,9,9,9), IPAddress(8,8,8,8));
          //Serial.println(WiFi.status());
          return;
        }
        Serial.print(".");
    }
    Serial.println();
    //Serial.println(WiFi.status());
    Serial.print("WiFi didn't connect: ");
    switch(WiFi.status()) {
      case WL_IDLE_STATUS : Serial.println("WiFi idle"); break;
      case WL_NO_SSID_AVAIL : Serial.println("SSID unavailable"); break;
      case WL_SCAN_COMPLETED : Serial.println("Network scan complete"); break;
      case WL_CONNECTED : Serial.println("Connected"); break;
      case WL_CONNECT_FAILED : Serial.println("Connection failed"); break;
      case WL_CONNECTION_LOST : Serial.println("Connection lost"); break;
      case WL_DISCONNECTED : Serial.println("Disconnected"); break;
      default : Serial.println(WiFi.status()); break;
    }
    Serial.println("Will try again in 10s.");
    WiFi.disconnect();
    WiFi.mode(WIFI_MODE_NULL);
    delay(10000);
  }
  Serial.println(WiFi.status());
}

void setup() {
  ...
  wifiConnect(ssid, password);
  ...
}

void loop() {
  ...
  // Set state to for expected power management
  WiFi.disconnect();
  WiFi.mode(WIFI_MODE_NULL);
  ...
}

Posted

in

,

by