Draadloos sturen van een lamp via browser

Een ESP32 microcontroller die is ingesteld als Webserver (internetadres: 192.168.1.xx), sturen we via de browser op een smartphone of PC een relais dat een lamp op 230 V aan- en uitschakelt.

de opstelling: ESP32 webserver microcontroller, relaisboard, 230V lamp en smartphone webpage.
De aansluiting van de 230 V lamp op het relaisbordje en de verbinding met de ESP32 microcontroller.

link naar de webpagina met uitleg: ESP32 Relay Module – Control AC Appliances (Web Server) | Random Nerd Tutorials


Via de browser op adres : http://192.168.1.184 kun je de 2 relais via WiFi aan en uitschakelen


/*
ESP32_TTGO relais_sturen_via_webserver.ino L. Torfs 2 aug 2022

Stuur 2 relais via digitale uitgangen
De webserver genereert een webpagina naar de browser op url: 192.168.1.184
Via hyperlinks kan men de relais draadloos over Wifi aan- of uitzetten

*/

# include <wifi> // library voor draadloos station

// 2 relais als output op GPIOpin

define relais1 15

define relais2 13

// toegang tot de Wifi Router met ssid naam en wachtwoord

const char* ssid = “TP-LINK_2.4GHz_XXXXXX”;
const char* password = “XXXXXXXXX”;

// vast lokaal IP adres voor de webserver op de ESP32 TTGO microcontroller
IPAddress local_IP(192, 168, 1, 184); // indien local Static IP address, needs to be set up a same fixed IP adress onto the wifi – router gateway
IPAddress gateway(192, 168, 1, 1); // IP address gateway
IPAddress subnet(255, 255, 0, 0);
IPAddress primaryDNS(8,8,8,8); // optional
IPAddress secondaryDNS(8,8,4,4); // optional

WiFiServer server(80); // set web server port number to 80

void setup(void) {

Serial.begin(115200); // open seriele communicatie naar Arduino IDE

// relais initieren
pinMode(relais1, OUTPUT);
pinMode(relais2, OUTPUT);

// ———————
init_wifi_connect(); // verbind de ESP32 TTGO module met de Wifi
// ———————

delay(3000); // wacht 3 seconden om de wifi verbinding te kunnen maken

}

void init_wifi_connect() {

// Wifi draadloze communidatie initieren

if (!WiFi.config(local_IP, gateway, subnet, primaryDNS, secondaryDNS)) {
Serial.println(“STATION MODE failed to configure”);
}

// connecteer met Wifi Gateway (internet router)
Serial.print(“Connected to “);
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(“.”);
}

// Print local IP adress and start webserver
Serial.println(“”);
Serial.println(“Wifi connected”);
Serial.print(“IP adresss:”);
Serial.println(WiFi.localIP());
Serial.print(“MAC address:”);
Serial.println(WiFi.macAddress());
Serial.println(“——-“);

server.begin();

}

void luister_client(){

WiFiClient client = server.available(); // listen for incomming clients

if(client) {
Serial.println(“New Client”);

String currentLine = "";   // string hold incomming data from the client
while(client.connected()) {
  if (client.available()) { // if there 's bytes to read from the client
    char c = client.read(); // read a byte then
    Serial.write(c);      // print received character on serial monitor
    if (c=='\n') {           // if received character is a new line
      if (currentLine.length() == 0) {

        // ---------------------- stuur webpage naar de client

        client.println("HTTp/1,1 200 OK");
        client.println("Content-type:text/html");
        //client.println("Connection:close");
        client.println();

        // HTML webpagina
        client.println("<!DOCTYPE html><html>");
        client.println("<body><h1>ESP32 Webserver</h1>");
        client.println("Relais1: <a href='/BON'> AAN </a> / <a href='/BOFF'>UIT</a><br>");
        client.println("Relais2 : <a href='/NON'> AAN </a> / <a href='/NOFF'>UIT</a><br>");
        client.println("</body><html>");

        client.println();  // HTTP response ends with another blank line   

        //-----------------------

        break;             // break out of the wile loop

      }else{ // if you got a new line, then clear currentLine
        //Serial.print("currentLine->"); Serial.println(currentLine);
        currentLine = "";
      }

    }else if (c != '\r') {  // if received character not carriage return
      currentLine += c;  // add recieved character to end of currentLine
    }

    // kijk of client request was "GET /xON" or "GET /xOFF"
    // stuur dan relais aan of uit
   if (currentLine.endsWith("GET /BON")) { digitalWrite(relais1, HIGH);}
   if (currentLine.endsWith("GET /BOFF")) { digitalWrite(relais1, LOW);}
   if (currentLine.endsWith("GET /NON")) { digitalWrite(relais2, HIGH);}
   if (currentLine.endsWith("GET /NOFF")) { digitalWrite(relais2, LOW);}

  }
}

//close connection
client.stop();
Serial.println("Client disconnected.");
//Serial.println("");

}

void loop() {

delay(10);

// ————- // komt er een url aanvraag van de client : http://192.168.1.184
luister_client(); // via de brouwser naar het IP adres van de webserver
// ————-

// while(1) yield(); // We must yield() to stop a watchdog timeout.

}

Geef een reactie

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *