Tira de LED RGB ESP32/ESP8266 con servidor web selector de color

En este artículo te mostraremos cómo crear una tira de LED RGB controlada por un ESP32/ESP8266 con un servidor web que te permitirá seleccionar cualquier color para personalizar la iluminación de tu hogar u oficina. ¡Descubre cómo darle un toque único a tus espacios con esta fantástica y versátil tecnología!

En este proyecto te mostraremos cómo controlar remotamente una tira de LED RGB con una placa ESP8266 o ESP32 a través de un servidor web con un selector de color.

Tira de LED RGB ESP32/ESP8266 con servidor web selector de color

Controlamos una tira LED RGB de 5V y el código está escrito en el IDE de Arduino.

Para comprender mejor este proyecto, hay algunos tutoriales que quizás quieras ver primero (este paso es opcional):

  • Así funcionan los LED RGB
  • Servidor web ESP32 con Arduino IDE
  • Servidor web ESP8266 con Arduino IDE

Mira el vídeotutorial

Puede ver el video tutorial o continuar leyendo esta página para obtener las instrucciones escritas.

Descripción del proyecto

Antes de comenzar, veamos cómo funciona este proyecto:

Tira de LED RGB ESP32/ESP8266 con servidor web selector de color
  • El servidor web ESP32/ESP8266 muestra un selector de color.
  • Cuando selecciona un color, su navegador solicita una URL que contiene los parámetros R, G y B del color seleccionado.
  • Su ESP32/ESP8266 recibe la solicitud y divide el valor de cada parámetro de color.
  • Luego envía una señal PWM con el valor apropiado a los GPIO que controlan la tira.

Piezas requeridas

Para este proyecto necesitarás las siguientes piezas:

Puedes utilizar los enlaces anteriores o ir directamente MakerAdvisor.com/tools ¡Para encontrar todas las piezas para tus proyectos al mejor precio!

Tira de LED RGB ESP32/ESP8266 con servidor web selector de color

Esquema

Para este proyecto utilizamos una tira de LED RGB que puede funcionar con 5V.

Tira de LED RGB ESP32/ESP8266 con servidor web selector de color

Nota: Existen otras regletas similares que requieren 12V para funcionar. Aún puedes usarlos con el código proporcionado, pero necesitarás una fuente de alimentación adecuada.

En este ejemplo, alimentamos la tira de LED y el ESP32 o ESP8266 con la misma fuente de alimentación de 5V.

ESP32 – representación esquemática

Siga el siguiente diagrama de cableado para conectar la tira a su ESP32.

Tira de LED RGB ESP32/ESP8266 con servidor web selector de color

ESP8266 – Diagrama esquemático

Siga el siguiente diagrama de cableado para conectar la tira a su ESP8266.

Tira de LED RGB ESP32/ESP8266 con servidor web selector de color

Transistores NPN

En este circuito utilizamos el transistor NPN S8050. Dependiendo de cuántos LED tenga en su tira, es posible que necesite usar un transistor NPN que pueda manejar una corriente continua más alta en el pin colector.

Tira de LED RGB ESP32/ESP8266 con servidor web selector de color

Para determinar el requisito máximo de energía de su tira de LED, puede medir el consumo de energía cuando todos los LED alcanzan el brillo máximo (cuando el color es blanco).

Como utilizamos 12 LED, la corriente máxima con brillo máximo en blanco es de aproximadamente 630 mA. Entonces podemos usar el transistor NPN S8050 que puede manejar hasta 700 mA.

Tira de LED RGB ESP32/ESP8266 con servidor web selector de color

Nota: Su tira utilizará la máxima potencia cuando configure el color blanco (esto es lo mismo que configurar los tres colores al máximo brillo). Configurar otros colores consumirá menos energía, por lo que tu tira probablemente no usará la máxima potencia.

código ESP32

Programaremos el ESP32 usando Arduino IDE. Por lo tanto, asegúrese de tener instalado el complemento ESP32 antes de continuar:

  • Instalación de la placa ESP32 en Arduino IDE 2 (Windows, Mac OS X, Linux)

Después de ensamblar el circuito, copie el siguiente código en su IDE de Arduino para programar el ESP32.

/*********
  Rui Santos
  Complete project details at https://randomnerdtutorials.com  
*********/

// Load Wi-Fi library
#include <WiFi.h>

// Replace with your network credentials
const char* ssid     = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";

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

// Decode HTTP GET value
String redString = "0";
String greenString = "0";
String blueString = "0";
int pos1 = 0;
int pos2 = 0;
int pos3 = 0;
int pos4 = 0;

// Variable to store the HTTP req  uest
String header;

// Red, green, and blue pins for PWM control
const int redPin = 13;     // 13 corresponds to GPIO13
const int greenPin = 12;   // 12 corresponds to GPIO12
const int bluePin = 14;    // 14 corresponds to GPIO14

// Setting PWM frequency, channels and bit resolution
const int freq = 5000;
const int redChannel = 0;
const int greenChannel = 1;
const int blueChannel = 2;
// Bit resolution 2^8 = 256
const int resolution = 8;

// Current time
unsigned long currentTime = millis();
// Previous time
unsigned long previousTime = 0; 
// Define timeout time in milliseconds (example: 2000ms = 2s)
const long timeoutTime = 2000;

void setup() {
  Serial.begin(115200);
  // configure LED PWM functionalitites
  ledcAttachChannel(redPin, freq, resolution, redChannel);
  ledcAttachChannel(greenPin, freq, resolution, greenChannel);
  ledcAttachChannel(bluePin, freq, resolution, blueChannel);
  
  // Connect to Wi-Fi network with SSID and password
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  // Print local IP address and start web server
  Serial.println("");
  Serial.println("WiFi connected.");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
  server.begin();
}

void loop(){
  WiFiClient client = server.available();   // Listen for incoming clients

  if (client) {                             // If a new client connects,
    currentTime = millis();
    previousTime = currentTime;
    Serial.println("New Client.");          // print a message out in the serial port
    String currentLine = "";                // make a String to hold incoming data from the client
    while (client.connected() && currentTime - previousTime <= timeoutTime) {            // loop while the client's connected
      currentTime = millis();
      if (client.available()) {             // if there's bytes to read from the client,
        char c = client.read();             // read a byte, then
        Serial.write(c);                    // print it out the serial monitor
        header += c;
        if (c == 'n') {                    // if the byte is a newline character
          // if the current line is blank, you got two newline characters in a row.
          // that's the end of the client HTTP request, so send a response:
          if (currentLine.length() == 0) {
            // HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK)
            // and a content-type so the client knows what's coming, then a blank line:
            client.println("HTTP/1.1 200 OK");
            client.println("Content-type:text/html");
            client.println("Connection: close");
            client.println();
                   
            // Display the HTML web page
            client.println("<!DOCTYPE html><html>");
            client.println("<head><meta name="viewport" content="width=device-width, initial-scale=1">");
            client.println("<link rel="icon" href="data:,">");
            client.println("<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">");
            client.println("<script src="https://cdnjs.cloudflare.com/ajax/libs/jscolor/2.0.4/jscolor.min.js"></script>");
            client.println("</head><body><div class="container"><div class="row"><h1>ESP Color Picker</h1></div>");
            client.println("<a class="btn btn-primary btn-lg" href="#" id="change_color" role="button">Change Color</a> ");
            client.println("<input class="jscolor {onFineChange:'update(this)'}" id="rgb"></div>");
            client.println("<script>function update(picker) {document.getElementById('rgb').innerHTML = Math.round(picker.rgb[0]) + ', ' +  Math.round(picker.rgb[1]) + ', ' + Math.round(picker.rgb[2]);");
            client.println("document.getElementById("change_color").href="?r" + Math.round(picker.rgb[0]) + "g" +  Math.round(picker.rgb[1]) + "b" + Math.round(picker.rgb[2]) + "&";}</script></body></html>");
            // The HTTP response ends with another blank line
            client.println();

            // Request sample: /?r201g32b255&
            // Red = 201 | Green = 32 | Blue = 255
            if(header.indexOf("GET /?r") >= 0) {
              pos1 = header.indexOf('r');
              pos2 = header.indexOf('g');
              pos3 = header.indexOf('b');
              pos4 = header.indexOf('&');
              redString = header.substring(pos1+1, pos2);
              greenString = header.substring(pos2+1, pos3);
              blueString = header.substring(pos3+1, pos4);
              /*Serial.println(redString.toInt());
              Serial.println(greenString.toInt());
              Serial.println(blueString.toInt());*/
              ledcWrite(redPin, redString.toInt());
              ledcWrite(greenPin, greenString.toInt());
              ledcWrite(bluePin, blueString.toInt());
            }
            // Break out of the while loop
            break;
          } else { // if you got a newline, then clear currentLine
            currentLine = "";
          }
        } else if (c != 'r') {  // if you got anything else but a carriage return character,
          currentLine += c;      // add it to the end of the currentLine
        }
      }
    }
    // Clear the header variable
    header = "";
    // Close the connection
    client.stop();
    Serial.println("Client disconnected.");
    Serial.println("");
  }
}

Ver código sin formato

Antes de cargar el código, no olvide ingresar sus credenciales de red para que el ESP pueda conectarse a su red local.

const char* ssid     = "";
const char* password = "";

Si alguna vez ha creado un servidor web con ESP32, este código no es muy diferente. Agrega el selector de color a la página web y decodifica la solicitud para controlar el color de la franja. Así que sólo veremos las partes relevantes para este proyecto.

código ESP8266

Programamos el ESP8266 con el IDE de Arduino. Para cargar código en su ESP8266, primero debe instalar el complemento ESP8266 si aún no lo ha hecho (instale la placa ESP8266 en el IDE de Arduino).

Después de ensamblar el circuito, copie el siguiente código en su IDE de Arduino para programar el ESP8266.

/*********
  Rui Santos
  Complete project details at https://randomnerdtutorials.com  
*********/

// Load Wi-Fi library
#include <ESP8266WiFi.h>

// Replace with your network credentials
const char* ssid     = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";

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

// Decode HTTP GET value
String redString = "0";
String greenString = "0";
String blueString = "0";
int pos1 = 0;
int pos2 = 0;
int pos3 = 0;
int pos4 = 0;

// Variable to store the HTTP req  uest
String header;

// Red, green, and blue pins for PWM control
const int redPin = 13;     // 13 corresponds to GPIO13
const int greenPin = 12;   // 12 corresponds to GPIO12
const int bluePin = 14;    // 14 corresponds to GPIO14

// Setting PWM bit resolution
const int resolution = 256;

// Current time
unsigned long currentTime = millis();
// Previous time
unsigned long previousTime = 0; 
// Define timeout time in milliseconds (example: 2000ms = 2s)
const long timeoutTime = 2000;

void setup() {
  Serial.begin(115200);
  
  // configure LED PWM resolution/range and set pins to LOW
  analogWriteRange(resolution);
  analogWrite(redPin, 0);
  analogWrite(greenPin, 0);
  analogWrite(bluePin, 0);
  
  // Connect to Wi-Fi network with SSID and password
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  // Print local IP address and start web server
  Serial.println("");
  Serial.println("WiFi connected.");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
  server.begin();
}

void loop(){
  WiFiClient client = server.available();   // Listen for incoming clients

  if (client) {                             // If a new client connects,
    currentTime = millis();
    previousTime = currentTime;
    Serial.println("New Client.");          // print a message out in the serial port
    String currentLine = "";                // make a String to hold incoming data from the client
    while (client.connected() && currentTime - previousTime <= timeoutTime) {            // loop while the client's connected
      currentTime = millis();
      if (client.available()) {             // if there's bytes to read from the client,
        char c = client.read();             // read a byte, then
        Serial.write(c);                    // print it out the serial monitor
        header += c;
        if (c == 'n') {                    // if the byte is a newline character
          // if the current line is blank, you got two newline characters in a row.
          // that's the end of the client HTTP request, so send a response:
          if (currentLine.length() == 0) {
            // HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK)
            // and a content-type so the client knows what's coming, then a blank line:
            client.println("HTTP/1.1 200 OK");
            client.println("Content-type:text/html");
            client.println("Connection: close");
            client.println();
                   
            // Display the HTML web page
            client.println("<!DOCTYPE html><html>");
            client.println("<head><meta name="viewport" content="width=device-width, initial-scale=1">");
            client.println("<link rel="icon" href="data:,">");
            client.println("<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">");
            client.println("<script src="https://cdnjs.cloudflare.com/ajax/libs/jscolor/2.0.4/jscolor.min.js"></script>");
            client.println("</head><body><div class="container"><div class="row"><h1>ESP Color Picker</h1></div>");
            client.println("<a class="btn btn-primary btn-lg" href="#" id="change_color" role="button">Change Color</a> ");
            client.println("<input class="jscolor {onFineChange:'update(this)'}" id="rgb"></div>");
            client.println("<script>function update(picker) {document.getElementById('rgb').innerHTML = Math.round(picker.rgb[0]) + ', ' +  Math.round(picker.rgb[1]) + ', ' + Math.round(picker.rgb[2]);");
            client.println("document.getElementById("change_color").href="?r" + Math.round(picker.rgb[0]) + "g" +  Math.round(picker.rgb[1]) + "b" + Math.round(picker.rgb[2]) + "&";}</script></body></html>");
            // The HTTP response ends with another blank line
            client.println();

            // Request sample: /?r201g32b255&
            // Red = 201 | Green = 32 | Blue = 255
            if(header.indexOf("GET /?r") >= 0) {
              pos1 = header.indexOf('r');
              pos2 = header.indexOf('g');
              pos3 = header.indexOf('b');
              pos4 = header.indexOf('&');
              redString = header.substring(pos1+1, pos2);
              greenString = header.substring(pos2+1, pos3);
              blueString = header.substring(pos3+1, pos4);
              /*Serial.println(redString.toInt());
              Serial.println(greenString.toInt());
              Serial.println(blueString.toInt());*/
              analogWrite(redPin, redString.toInt());
              analogWrite(greenPin, greenString.toInt());
              analogWrite(bluePin, blueString.toInt());
            }
            // Break out of the while loop
            break;
          } else { // if you got a newline, then clear currentLine
            currentLine = "";
          }
        } else if (c != 'r') {  // if you got anything else but a carriage return character,
          currentLine += c;      // add it to the end of the currentLine
        }
      }
    }
    // Clear the header variable
    header = "";
    // Close the connection
    client.stop();
    Serial.println("Client disconnected.");
    Serial.println("");
  }
}

Ver código sin formato

Antes de cargar el código, no olvide ingresar sus credenciales de red para que el ESP pueda conectarse a su red local.

const char* ssid     = "";
const char* password = "";

Si alguna vez ha creado un servidor web con ESP8266, este código no es muy diferente. Agrega el selector de color a la página web y decodifica la solicitud para controlar el color de la franja. Así que sólo veremos las partes relevantes para este proyecto.

Así es como funciona el código

Los bocetos para ESP32 y ESP8266 son muy similares y solo se diferencian en la biblioteca de Wi-Fi y la forma en que generan señales PWM. Te lo explicamos en esta sección.

El boceto ESP32 utiliza el WiFi.h Biblioteca.

#include <WiFi.h>

El boceto ESP8266 utiliza el ESP8266WiFi.h Biblioteca.

#include <ESP8266WiFi.h>

Las siguientes líneas definen variables de cadena para contener los parámetros R, G y B de la solicitud.

String redString = "0";
String greenString = "0";
String blueString = "0";

Las siguientes cuatro variables se utilizarán más adelante para decodificar la solicitud HTTP.

int pos1 = 0;
int pos2 = 0;
int pos3 = 0;
int pos4 = 0;

Cree tres variables para los GPIO que controlan los parámetros de las tiras R, G y B. En este caso utilizamos GPIO 13, GPIO 12Y GPIO 14.

const int redPin = 13;     
const int greenPin = 12;  
const int bluePin = 14; 

Estos GPIO necesitan generar señales PWM, por lo que primero debemos configurar las propiedades de PWM. Establezca la frecuencia de la señal PWM en 5000 Hz. Luego asigne un canal PWM a cada color (esto no es necesario en el boceto de ESP8266).

const int freq = 5000;
const int redChannel = 0;
const int greenChannel = 1;
const int blueChannel = 2;

Y finalmente, establezca la resolución de los canales PWM en 8 bits (no es necesario en el boceto de ESP8266).

const int resolution = 8;

En el configuración()cree pines LEDC con las propiedades PWM definidas anteriormente (no necesarias en el boceto ESP8266).

  ledcAttachChannel(redPin, freq, resolution, redChannel);
  ledcAttachChannel(greenPin, freq, resolution, greenChannel);
  ledcAttachChannel(bluePin, freq, resolution, blueChannel);

Obtenga más información sobre PWM con ESP32: ESP32 PWM con Arduino IDE (salida analógica)

La siguiente sección de código muestra el selector de color en su página web y realiza una solicitud basada en el color que seleccionó.

client.println("<!DOCTYPE html><html>");
client.println("<head><meta name="viewport" content="width=device-width, initial-scale=1">");
client.println("<link rel="icon" href="data:,">");
client.println("<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">");
client.println("<script src="https://cdnjs.cloudflare.com/ajax/libs/jscolor/2.0.4/jscolor.min.js"></script>");
client.println("</head><body><div class="container"><div class="row"><h1>ESP Color Picker</h1></div>");
client.println("<a class="btn btn-primary btn-lg" href="#" id="change_color" role="button">Change Color</a> ");
client.println("<input class="jscolor {onFineChange:'update(this)'}" id="rgb"></div>");
client.println("<script>function update(picker) {document.getElementById('rgb').innerHTML = Math.round(picker.rgb[0]) + ', ' +  Math.round(picker.rgb[1]) + ', ' + Math.round(picker.rgb[2]);");        client.println("document.getElementById("change_color").href="?r" + Math.round(picker.rgb[0]) + "g" +  Math.round(picker.rgb[1]) + "b" + Math.round(picker.rgb[2]) + "&";}</script></body></html>");
// The HTTP response ends with another blank line
client.println();

Cuando seleccione un color, recibirá una solicitud en el siguiente formato.

/?r201g32b255&

Entonces necesitamos dividir esta cadena para obtener los parámetros R, G y B. Los parámetros se guardan en Hilo rojo, hilo verdeY hilo azul Variables y pueden tener valores entre 0 y 255.

pos1 = header.indexOf('r');
pos2 = header.indexOf('g');
pos3 = header.indexOf('b');
pos4 = header.indexOf('&');
redString = header.substring(pos1+1, pos2);
greenString = header.substring(pos2+1, pos3);
blueString = header.substring(pos3+1, pos4);

Para controlar la tira con el ESP32, use el ledcEscribir() Función para generar señales PWM con los valores decodificados de la solicitud HTTP.

ledcWrite(redPin, redString.toInt());
ledcWrite(greenPin, greenString.toInt());
ledcWrite(bluePin, blueString.toInt());

Nota: Obtenga más información sobre PWM con ESP32: ESP32 PWM con Arduino IDE.

Para controlar la regleta con el ESP8266 solo necesitamos eso escritura analógica() Función para generar señales PWM con los valores decodificados de la solicitud HTPP.

analogWrite(redPin, redString.toInt());
analogWrite(greenPin, greenString.toInt());
analogWrite(bluePin, blueString.toInt())

Como obtenemos los valores en una variable de cadena, debemos convertirlos a números enteros. Para esto utilizamos aInt() Método.

Obtenga más información sobre PWM con ESP8266: ESP8266 NodeMCU PWM con Arduino IDE – LED atenuado (salida analógica)

demostración

Después de ingresar sus credenciales de red, seleccione la placa y el puerto COM correctos y cargue el código en su ESP32 o ESP8266.

Después de la carga, abra el monitor serie con una velocidad de baudios de 115200 y presione el botón de activación/reinicio de ESP. Debería obtener la dirección IP de la placa.

Tira de LED RGB ESP32/ESP8266 con servidor web selector de color

Abra su navegador e ingrese la dirección IP de ESP. Ahora usa el selector de color para seleccionar un color para la franja.

Tira de LED RGB ESP32/ESP8266 con servidor web selector de color

Luego debe presionar el botón «Cambiar color» para que el color surta efecto.

Tira de LED RGB ESP32/ESP8266 con servidor web selector de color

Para apagar la tira de LED RGB, elija el color negro.

Los colores más llamativos (en la parte superior de la selección de colores) son los que producen mejores resultados.

Tira de LED RGB ESP32/ESP8266 con servidor web selector de color

Ahora utiliza la tira para decorar tu hogar: debajo de la cama, detrás del televisor, debajo del mueble de la cocina y mucho más.

Envolver

En este artículo, aprendió cómo controlar de forma remota una tira de LED RGB a través de un servidor web usando su ESP32 o ESP8266 en su red local.

Esperamos que este tutorial te haya resultado útil. Si te gusta este proyecto, también te puede gustar:

  • MicroPython: LED RGB direccionables WS2812B con ESP32 y ESP8266
  • ¿Cómo funcionan los LED RGB?
  • Node-RED con tira LED RGB direccionable WS2812B
  • Servidor web de servomotor ESP32 con Arduino IDE

Obtenga más información sobre el ESP32 con nuestros recursos:

  • Aprendiendo ESP32 con Arduino IDE (segunda edición)
  • HOGAR INTELIGENTE con Raspberry Pi, ESP32, ESP8266
  • Construya servidores web con ESP32 y ESP8266
  • Aplicación web Firebase con ESP32 y ESP8266
  • Proyectos, tutoriales y guías ESP32 gratuitos

Este es un extracto de nuestro curso: Aprendiendo ESP32 con Arduino IDE. Si te gusta ESP32 y quieres aprender más sobre él, te recomendamos apuntarte al curso Aprende ESP32 con Arduino IDE.

Error 403 The request cannot be completed because you have exceeded your quota. : quotaExceeded

Tira de LED RGB ESP32/ESP8266 con servidor web selector de color

En este proyecto te mostraremos cómo controlar de forma remota una tira de LED RGB con una placa ESP8266 o ESP32 utilizando un servidor web con un selector de color.

Descripción del Proyecto

Antes de comenzar, veamos cómo funciona este proyecto:

  • El servidor web ESP32/ESP8266 muestra un selector de color.
  • Cuando seleccionas un color, tu navegador hace una solicitud a una URL que contiene los parámetros R, G y B del color seleccionado.
  • Tu ESP32/ESP8266 recibe la solicitud y divide el valor para cada parámetro de color.
  • Luego, envía una señal PWM con el valor correspondiente a los GPIOs que controlan la tira de LED.

Partes Necesarias

Para este proyecto necesitas las siguientes partes:

  • ESP32 o ESP8266
  • Tira de LED RGB (5V)
  • 3x Transistores NPN
  • 3x Resistencias de 1k ohm
  • Cables de puente
  • Protoboard

Esquemático

Para este proyecto, estaremos utilizando una tira de LED RGB que puede funcionar con 5V. Aquí tienes los esquemáticos para conectar la tira a tu ESP32 o ESP8266.

Código ESP32

Programaremos el ESP32 con Arduino IDE. Asegúrate de tener el complemento del ESP32 instalado antes de continuar. Una vez que hayas ensamblado el circuito, copia el siguiente código a tu Arduino IDE para programar el ESP32.

Inserta aquí el código del ESP32...

Código ESP8266

Programaremos el ESP8266 utilizando el Arduino IDE. Para cargar el código en tu ESP8266, primero necesitas instalar el complemento ESP8266 si aún no lo has hecho. Una vez que hayas ensamblado el circuito, copia el siguiente código a tu Arduino IDE para programar el ESP8266.

Inserta aquí el código del ESP8266...

¿Cómo Funciona el Código?

Las sketches para ESP32 y ESP8266 son muy similares, con solo algunas diferencias en la biblioteca WiFi y la forma en que generan las señales PWM. Explicaremos eso en esta sección.

El código ESP32 utiliza la biblioteca WiFi.h, mientras que el código ESP8266 utiliza la biblioteca ESP8266WiFi.h.

A continuación, se definen variables de cadena para contener los parámetros R, G y B de la solicitud HTTP.

Conclusión

Con este artículo, has aprendido cómo controlar una tira de LED RGB de forma remota utilizando un servidor web con tu ESP32 o ESP8266 en tu red local.

Si te gustó este proyecto, también te pueden interesar los siguientes:

  • MicroPython: WS2812B Addressable RGB LEDs with ESP32 and ESP8266
  • Node-RED with WS2812B Addressable RGB LED Strip

Este es un fragmento de nuestro curso: Learn ESP32 with Arduino IDE. Si te gusta ESP32 y quieres aprender más sobre él, te recomendamos inscribirte en el curso Learn ESP32 with Arduino IDE.

5 comentarios en «Tira de LED RGB ESP32/ESP8266 con servidor web selector de color»

Deja un comentario