Verbindt de ESP8266 of ESP32 op de juiste manier met WiFi

Er zijn veel manieren hoe je een ESP8266 of ESP32 kan verbinden met WiFi, maar in de meeste gevallen wordt een methode gebruikt waarbij het script stopt op het moment dat de WiFi verbinding niet gevonden wordt. Soms is dit wenselijk, maar als je iets gemaakt hebt wat ook zelfstandig kan werken dan heb je liever dat het script doorloopt en regelmatig probeert de WiFi verbinding te herstellen.

Om het één en ander te kunnen demonstreren heb ik een eenvoudige testopstelling gemaakt. Ik gebruik 2 LEDs, de ene om aan te geven dat er een verbinging met WiFi wordt gemaakt, de andere om aan te geven dat de Loop wordt uitgevoerd.

De rode LED is verbonden met D2 en geeft het verbinden met WiFi weer.
De groene LED is verbonden met D4 en geeft weer als de Loop wordt doorlopen.
De gebruikte LEDs zijn geschikt voor 5 volt, vandaar dat er geen weerstand is gebruikt.

De code die wordt gebruikt kan je hier te vinden.

De code voor het verbinden met WiFi uitgelegd.

Bij het verbinden met WiFi wordt een teller bijgehouden, WiFiTry. Als 5 keer geprobeerd is om met WiFi te verbinden, dan loopt de code verder.
  void ConnectWiFi() { 
  //Connect with WiFi network
  
  WiFi.begin(YourWiFiSSID, YourWiFiPassword);
  Serial.println("Connecting to WiFi");
  //Try to connect to WiFi for 5 times
  while (WiFi.status() != WL_CONNECTED && WiFiTry < 5) {
    digitalWrite(LEDRed, HIGH);
    ++WiFiTry;
    Serial.print("WiFi status: ");; Serial.println(WiFi.status());
    Serial.print("WiFiTry: ");; Serial.println(WiFiTry);
    delay(500);
    digitalWrite(LEDRed, LOW);
    delay(500);
  }
  Serial.println("");
  Serial.print("WiFiTry: ");; Serial.println(WiFiTry);
  WiFiTry = 0;
  Serial.print("Got IP: ");  Serial.println(WiFi.localIP());
}
     

In de loop wordt aan het einde gecontrolleerd of de ESP32 / ESP8266 nog een verbinding heeft met WiFi. Op die manier wordt gedetecteerd als de verbinding verbroken is en deze hersteld moet wordt.
   void loop() {
  //  Your Code here
  digitalWrite(LEDGreen, HIGH);
  delay(500);
  digitalWrite(LEDGreen, LOW);
  delay(500);
  Serial.println();
  Serial.println("Loop is working");

  
  // Check the WiFi connection and reconnect if lost.
  if (WiFi.status() != WL_CONNECTED) { 
    Serial.println("No WiFi Connection!");  
    ConnectWiFi();
  } else {
    Serial.println("WiFi Connection!");  
  }
}
    
Video met uitleg:


Nu weet je hoe je een ESP32 / ESP8266 op de juiste manier met WiFi kan verbinden. Doe er je voordeel mee.

Nog een fijne dag.
Ap Matteman