En este proyecto utilizarmos el ESP32 junto por medio de una pagina web encenderemos y apagaremos un LED.
No se utilizara tarjeta SD.
Hardware
Utilizaremos nuestro ESP32
Una Resistencia de 330ohms
Un LED
Conexión
sketch
//Power by: One line #include <WiFi.h> //------------------Servidor Web en puerto 80--------------------- WiFiServer server(80); //---------------------Credenciales de WiFi----------------------- const char* ssid = "nombre de red"; const char* password = "contraseña"; //---------------------VARIABLES GLOBALES------------------------- int contconexion = 0; String header; // Variable para guardar el HTTP request String estadoSalida = "off"; const int salida = 2; //------------------------CODIGO HTML------------------------------ String pagina = "<!DOCTYPE html>" "<html>" "<head>" "<meta charset='utf-8' />" "<title>Servidor Web ESP32</title>" "</head>" "<body>" "<center>" "<h1>Servidor Web ESP32</h1>" "<p><a href='/on'><button style='height:50px;width:100px'>ON</button></a></p>" "<p><a href='/off'><button style='height:50px;width:100px'>OFF</button></a></p>" "</center>" "</body>" "</html>"; //---------------------------SETUP-------------------------------- void setup() { Serial.begin(115200); Serial.println(""); pinMode(salida, OUTPUT); digitalWrite(salida, LOW); // Conexión WIFI WiFi.begin(ssid, password); //Cuenta hasta 50 si no se puede conectar lo cancela while (WiFi.status() != WL_CONNECTED and contconexion <50) { ++contconexion; delay(500); Serial.print("."); } if (contconexion <50) { //para usar con ip fija IPAddress ip(192,168,1,180); IPAddress gateway(192,168,1,1); IPAddress subnet(255,255,255,0); WiFi.config(ip, gateway, subnet); Serial.println(""); Serial.println("WiFi conectado"); Serial.println(WiFi.localIP()); server.begin(); // iniciamos el servidor } else { Serial.println(""); Serial.println("Error de conexion"); } } //----------------------------LOOP---------------------------------- void loop(){ WiFiClient client = server.available(); // Escucha a los clientes entrantes if (client) { // Si se conecta un nuevo cliente Serial.println("New Client."); // String currentLine = ""; // while (client.connected()) { // loop mientras el cliente está conectado if (client.available()) { // si hay bytes para leer desde el cliente char c = client.read(); // lee un byte Serial.write(c); // imprime ese byte en el monitor serial header += c; if (c == '\n') { // si el byte es un caracter de salto de linea // si la nueva linea está en blanco significa que es el fin del // HTTP request del cliente, entonces respondemos: if (currentLine.length() == 0) { client.println("HTTP/1.1 200 OK"); client.println("Content-type:text/html"); client.println("Connection: close"); client.println(); // enciende y apaga el GPIO if (header.indexOf("GET /on") >= 0) { Serial.println("GPIO on"); estadoSalida = "on"; digitalWrite(salida, HIGH); } else if (header.indexOf("GET /off") >= 0) { Serial.println("GPIO off"); estadoSalida = "off"; digitalWrite(salida, LOW); } // Muestra la página web client.println(pagina); // la respuesta HTTP temina con una linea en blanco client.println(); break; } else { // si tenemos una nueva linea limpiamos currentLine currentLine = ""; } } else if (c != '\r') { // si C es distinto al caracter de retorno de carro currentLine += c; // lo agrega al final de currentLine } } } // Limpiamos la variable header header = ""; // Cerramos la conexión client.stop(); Serial.println("Client disconnected."); Serial.println(""); } }*notas: Cambiar el nombre y contraseña de la red
No se utilizara tarjeta SD.
Resultado
ESP32 control de 5 LEDS con servidor web
Tomando de referencia el código anterior conectaremos 5 leds de igual manera tomaremos de referencia el esquema anterior y conectaremos los leds, al pin 13, pin 12, pin 14, pin 27 y pin 26.Hardware
Utilizaremos nuestro ESP32
5- Resistencias de 330ohms (naranja, naranja, café)
sketch
//Power by: One line #include <WiFi.h> //------------------Servidor Web en puerto 80--------------------- WiFiServer server(80); //---------------------Credenciales de WiFi----------------------- const char* ssid = "TURBONETT_9843AB"; const char* password = "antony.95."; //---------------------VARIABLES GLOBALES------------------------- int contconexion = 0; String header; // Variable para guardar el HTTP request String estadoSalida = "off"; const int salida = 2; int led1= 13; int led2= 12; int led3= 14; int led4= 27; int led5= 26; //------------------------CODIGO HTML------------------------------ String pagina = "<!DOCTYPE html>" "<html>" "<head>" "<meta charset='utf-8' />" "<title>Servidor Web ESP32</title>" "<style type=text/css>.auto-style2 {text-align: center;}" "</style>" "</head>" "<body>" "<center>" "<h1 class='auto-style2'>ESP32 Control LED</h1>" "<a href='/on1'><button style='height:50px;width:100px'>" "<div class='auto-style2'>LED1<br>ON</div></button></a> <a href='/on2'><button style='height:50px;width:100px'>LED2<br>ON</button></a> <a href='/on3'><button style='height:50px;width:100px'>LED3<br>ON</button></a> <a href='/on4'><button style='height:50px;width:100px'>LED4<br>ON</button></a> <a href='/on5'><button style='height:50px;width:100px'>LED5<br>ON</button></a> <a href='/on6'><button style='height:50px;width:100px'>ALL LEDS<br>ON</button></a>" "<p class='auto-style2'><a href='/off1'><button style='height:50px;width:100px'>LED1<br>OFF</button></a> <a href='/off2'><button style='height:50px;width:100px'>LED2<br>OFF</button></a> <a href='/off3'><button style='height:50px;width:100px'>LED3<br>OFF</button></a> <a href='/off4'><button style='height:50px;width:100px'>LED4<br>OFF</button></a> <a href='/off5'><button style='height:50px;width:100px'>LED5<br>OFF</button></a> <a href='/off6'><button style='height:50px;width:100px'>ALL LEDS<br>OFF</button></a></p>" "<p>Power by: One line</p>" "</center>" "</body>" "</html>"; //---------------------------SETUP-------------------------------- void setup() { Serial.begin(115200); Serial.println(""); pinMode(salida, OUTPUT); digitalWrite(salida, LOW); pinMode(led1, OUTPUT); digitalWrite(led1, LOW); pinMode(led2, OUTPUT); digitalWrite(led2, LOW); pinMode(led3, OUTPUT); digitalWrite(led3, LOW); pinMode(led4, OUTPUT); digitalWrite(led4, LOW); pinMode(led5, OUTPUT); digitalWrite(led5, LOW); // Conexión WIFI WiFi.begin(ssid, password); //Cuenta hasta 50 si no se puede conectar lo cancela while (WiFi.status() != WL_CONNECTED and contconexion <50) { ++contconexion; delay(500); Serial.print("."); } if (contconexion <50) { //para usar con ip fija IPAddress ip(192,168,1,180); IPAddress gateway(192,168,1,1); IPAddress subnet(255,255,255,0); WiFi.config(ip, gateway, subnet); Serial.println(""); Serial.println("WiFi conectado"); Serial.println(WiFi.localIP()); server.begin(); // iniciamos el servidor } else { Serial.println(""); Serial.println("Error de conexion"); } } //----------------------------LOOP---------------------------------- void loop(){ WiFiClient client = server.available(); // Escucha a los clientes entrantes if (client) { // Si se conecta un nuevo cliente Serial.println("New Client."); // String currentLine = ""; // while (client.connected()) { // loop mientras el cliente está conectado if (client.available()) { // si hay bytes para leer desde el cliente char c = client.read(); // lee un byte Serial.write(c); // imprime ese byte en el monitor serial header += c; if (c == '\n') { // si el byte es un caracter de salto de linea // si la nueva linea está en blanco significa que es el fin del // HTTP request del cliente, entonces respondemos: if (currentLine.length() == 0) { client.println("HTTP/1.1 200 OK"); client.println("Content-type:text/html"); client.println("Connection: close"); client.println(); // enciende y apaga led1 if (header.indexOf("GET /on1") >= 0) { Serial.println("GPIO on"); digitalWrite(led1, HIGH); } else if (header.indexOf("GET /off1") >= 0) { Serial.println("GPIO off1"); digitalWrite(led1, LOW); } // enciende y apaga led2 if (header.indexOf("GET /on2") >= 0) { Serial.println("GPIO on2"); digitalWrite(led2, HIGH); } else if (header.indexOf("GET /off2") >= 0) { Serial.println("GPIO off2"); digitalWrite(led2, LOW); } // enciende y apaga led3 if (header.indexOf("GET /on3") >= 0) { Serial.println("GPIO on3"); digitalWrite(led3, HIGH); } else if (header.indexOf("GET /off3") >= 0) { Serial.println("GPIO off3"); digitalWrite(led3, LOW); } // enciende y apaga led4 if (header.indexOf("GET /on4") >= 0) { Serial.println("GPIO on4"); digitalWrite(led4, HIGH); } else if (header.indexOf("GET /off4") >= 0) { Serial.println("GPIO off4"); digitalWrite(led4, LOW); } // enciende y apaga led5 if (header.indexOf("GET /on5") >= 0) { Serial.println("GPIO on5"); digitalWrite(led5, HIGH); } else if (header.indexOf("GET /off5") >= 0) { Serial.println("GPIO off5"); digitalWrite(led5, LOW); } // enciende y apaga los todos leds if (header.indexOf("GET /on6") >= 0) { Serial.println("GPIO on"); estadoSalida = "on"; digitalWrite(salida, HIGH); digitalWrite(led1, HIGH); digitalWrite(led2, HIGH); digitalWrite(led3, HIGH); digitalWrite(led4, HIGH); digitalWrite(led5, HIGH); } else if (header.indexOf("GET /off6") >= 0) { Serial.println("GPIO off"); estadoSalida = "off"; digitalWrite(salida, LOW); digitalWrite(led1, LOW); digitalWrite(led2, LOW); digitalWrite(led3, LOW); digitalWrite(led4, LOW); digitalWrite(led5, LOW); } // Muestra la página web client.println(pagina); // la respuesta HTTP temina con una linea en blanco client.println(); break; } else { // si tenemos una nueva linea limpiamos currentLine currentLine = ""; } } else if (c != '\r') { // si C es distinto al caracter de retorno de carro currentLine += c; // lo agrega al final de currentLine } } } // Limpiamos la variable header header = ""; // Cerramos la conexión client.stop(); Serial.println("Client disconnected."); Serial.println(""); } }
Comentarios
Publicar un comentario