El ESP8266 NodeMCU es una potente placa de desarrollo que se ha vuelto muy popular entre los entusiastas de la electrónica. En este artículo, exploraremos cómo utilizar el PWM (modulación de ancho de pulso) para atenuar un LED utilizando el ESP8266 NodeMCU y el Arduino IDE. Descubre cómo crear efectos de iluminación personalizados y controlar la intensidad de la luz de forma sencilla. ¡Sigue leyendo para aprender cómo llevar tus proyectos de IoT al siguiente nivel!
Este tutorial muestra cómo generar señales PWM usando ESP8266 NodeMCU y Arduino IDE. Como ejemplo, atenuamos el brillo del LED cambiando el ciclo de trabajo con el tiempo.
Para generar una señal PWM en los pines ESP8266 usando Arduino IDE, use escritura analógica (pin, valor). El valor es un número entero entre 0 y 255.
Para las versiones de ESP8266 anteriores a la 3.0, el rango predeterminado es de 0 a 1023. El rango de PWM se puede cambiar llamando analogWriteRange(nuevo_rango).
Quizás también te interesen las otras guías de PWM:
- ESP32 PWM con Arduino IDE – Atenuación de LED
- ESP32/ESP8266 PWM con MicroPython – Atenuación de LED
Antes de continuar con este tutorial, debes tener instalado el complemento ESP8266 en tu IDE de Arduino. Siga el siguiente tutorial para instalar ESP8266 en Arduino IDE.
ESP8266 NodeMCU PWM (modulación de ancho de pulso)
Los GPIO del ESP8266 se pueden configurar en 0 V o 3,3 V, pero no pueden generar voltajes intermedios. Sin embargo, puede generar voltajes promedio «falsos» utilizando la modulación de ancho de pulso (PWM), creando diferentes niveles de brillo del LED para este proyecto.
Si cambia el voltaje de un LED entre ALTO y BAJO muy rápidamente, sus ojos no podrán seguir la velocidad a la que el LED se enciende y apaga. Sólo ves algunas gradaciones de brillo.
Básicamente, así es como funciona PWM: generando una salida que cambia entre ALTA y BAJA a una frecuencia muy alta.
El ciclo de trabajo es la fracción del tiempo que el LED está en ALTO. La siguiente figura ilustra cómo funciona PWM.
Un ciclo de trabajo del 50 por ciento da como resultado un brillo del LED del 50 por ciento, un ciclo de trabajo de 0 significa que el LED está completamente apagado y un ciclo de trabajo de 100 significa que el LED está completamente encendido. Al cambiar el ciclo de trabajo puedes crear diferentes niveles de brillo.
escritura analógica()
Para generar una señal PWM en un pin específico, use la siguiente función:
analogWrite(pin, value);
- Bolígrafo: PWM se puede utilizar en los pines 0 a 16
- Valor: debe estar en el rango de 0 a RANGO PWMque es 255 por defecto. Si el valor es 0, PWM está deshabilitado en este pin. Un valor de 255 corresponde a un ciclo de trabajo del 100%
Puede cambiar el rango de PWM llamando a:
analogWriteRange(new_range);
De forma predeterminada, la frecuencia PWM del ESP8266 es 1 kHz. Puede cambiar la frecuencia PWM de la siguiente manera:
analogWriteFreq(new_frequency);
Los valores válidos están entre 100 Hz y 40.000 Hz.
ESP8266 NodeMCU LED regulable con PWM
En esta sección, crearemos un ejemplo simple de cómo atenuar un LED para que pueda ver cómo puede usar PWM en sus proyectos. Necesitará las siguientes piezas:
- ESP8266 (leer Las mejores placas de desarrollo ESP8266)
- LED de 5 mm
- Resistencia de 330 ohmios
- tablero de circuitos
- Cables de puente
- Opcional osciloscopio (leer Los mejores osciloscopios para principiantes)
Si tienes un ESP-01Usted necesita uno programador FTDI o un Adaptador serie para cargar el código.
Puedes utilizar los enlaces anteriores o ir directamente MakerAdvisor.com/tools ¡Para encontrar todas las piezas para tus proyectos al mejor precio!
Esquema
Después de cargar el código, conecte un LED a su ESP8266 como se muestra en el siguiente esquema. Conectamos el LED a GPIO2Sin embargo, también puede utilizar cualquier otro GPIO adecuado.
Si está utilizando un ESP-01, puede consultar la configuración de pines de la placa aquí.
Código ESP8266 NodeMCU PWM
Copie el código en su IDE de Arduino y cárguelo en su ESP8266.
/*********
Rui Santos
Complete project details at https://randomnerdtutorials.com
*********/
const int ledPin = 2;
void setup() {
}
void loop() {
// increase the LED brightness
for(int dutyCycle = 0; dutyCycle < 255; dutyCycle++){
// changing the LED brightness with PWM
analogWrite(ledPin, dutyCycle);
delay(1);
}
// decrease the LED brightness
for(int dutyCycle = 255; dutyCycle > 0; dutyCycle--){
// changing the LED brightness with PWM
analogWrite(ledPin, dutyCycle);
delay(1);
}
}
Así es como funciona el código
Continúe leyendo esta sección para aprender cómo funciona el código o pase a la siguiente sección.
Primero defina el pin al que está conectado el LED. En este caso el LED está conectado GPIO2 (D4).
const int ledPin = 2;
En el Cinta()varíe el ciclo de trabajo entre 0 y 255 para aumentar el brillo del LED.
for(int dutyCycle = 0; dutyCycle < 255; dutyCycle++){
// changing the LED brightness with PWM
analogWrite(ledPin, dutyCycle);
delay(1);
}
Y luego entre 255 y 0 para disminuir el brillo.
for(int dutyCycle = 255; dutyCycle > 0; dutyCycle--){
// changing the LED brightness with PWM
analogWrite(ledPin, dutyCycle);
delay(1);
}
Para ajustar el brillo del LED, utilice escritura analógica() Función que acepta como argumentos GPIO donde se desea obtener la señal PWM y un valor entre 0 y 255 para establecer el ciclo de trabajo.
Sube el código
Vaya a su IDE de Arduino Herramientas > tablón y seleccione su modelo ESP8266 (si está utilizando un ESP-01, seleccione «Módulo ESP8266 genérico»).
Ir a Herramientas > Puerto y seleccione el puerto COM al que está conectado el ESP8266.
Si está utilizando un ESP-01, necesitará un programador FTDI o un adaptador serie para cargar el código. Estas son las conexiones que necesitas hacer:
ESP-01 | programador FTDI |
RX | Texas |
Texas | RX |
CH_PD | 3,3 V |
GPIO 0 | Dimensiones |
VCC | 3,3 V |
Dimensiones | Dimensiones |
demostración
Después de cargar su boceto, el LED se conectará GPIO2 El brillo debería aumentar o disminuir con el tiempo.
puedes conectarte GPIO2 a un osciloscopio para ver cómo cambia la señal PWM con el tiempo.
Lea nuestra guía de compra: Los mejores osciloscopios para principiantes y entusiastas de la electrónica..
Envolver
Esperamos que esta guía sobre cómo utilizar el ESP8266 PWM le haya resultado útil. Además de controlar el brillo del LED, PWM también se puede utilizar para controlar la velocidad del motor de CC.
Quizás también quieras probar nuestros otros proyectos:
- Valores de temperatura y humedad ESP8266 DHT en la pantalla OLED
- Servidor web de temperatura y humedad ESP8266 DHT
- Hackear un sensor de movimiento PIR con un ESP8266
- Construya un servidor web ESP8266
Si le gusta ESP8266, asegúrese de consultar nuestros recursos:
- Domótica con ESP8266 (eBook + vídeo curso)
- Tutoriales y proyectos gratuitos de ESP8266
- Programación MicroPython con ESP32 y ESP8266
Gracias por leer.
Generación de señales PWM con ESP8266 NodeMCU usando Arduino IDE
Este tutorial muestra cómo generar señales PWM con ESP8266 NodeMCU utilizando Arduino IDE. Como ejemplo, atenuaremos el brillo del LED cambiando el ciclo de trabajo con el tiempo.
¿Cómo generar una señal PWM en los pines ESP8266 con Arduino IDE?
Para generar una señal PWM en los pines ESP8266 con Arduino IDE, utiliza la función analogWrite(pin, valor). El valor es un entero entre 0 y 255.
¿Cómo cambiar el rango PWM en ESP8266?
Para las versiones de ESP8266 anteriores a 3.0, el rango por defecto es entre 0 y 1023. El rango PWM se puede cambiar llamando a analogWriteRange(nuevo_rango).
¿Qué es el ciclo de trabajo en PWM?
El ciclo de trabajo es la fracción del tiempo en el que el LED está encendido. Un ciclo de trabajo del 50 por ciento resulta en un 50 por ciento de brillo del LED, un ciclo de trabajo de 0 significa que el LED está completamente apagado y un ciclo de trabajo de 100 significa que el LED está totalmente encendido.
¿Cómo usar el código PWM en ESP8266 NodeMCU?
Para producir una señal PWM en un pin dado, utiliza la función analogWrite(pin, valor). Para cambiar el rango PWM, llama a analogWriteRange(nuevo_rango). Puedes cambiar la frecuencia PWM con analogWriteFreq(nueva_frecuencia).
¿Qué partes necesito para el proyecto de atenuación LED con PWM?
Necesitarás un ESP8266, un LED de 5mm, una resistencia de 330 ohmios, una protoboard, cables jumper y opcionalmente un osciloscopio.
¿Cómo funciona el código para atenuar un LED con PWM en ESP8266 NodeMCU?
El código varía el ciclo de trabajo entre 0 y 255 para aumentar y disminuir el brillo del LED.
¿Cómo subir el código al ESP8266 NodeMCU?
En el Arduino IDE, selecciona tu modelo de ESP8266 en Tools > Board y el puerto COM al que está conectado el ESP8266 en Tools > Port. Si estás utilizando un ESP-01, necesitarás un programador FTDI o un Adaptador Serial.
¿Qué se espera observar después de subir el código?
Después de subir el sketch, el LED conectado al GPIO 2 del ESP8266 debería aumentar y disminuir su brillo con el tiempo.
Conclusión
El PWM en ESP8266 NodeMCU es una técnica útil para controlar el brillo de los LEDs y la velocidad de los motores DC. Esperamos que este tutorial te haya sido de ayuda para comprender su funcionamiento.
Qué buena explicación! Me ayudó mucho a entender cómo usar el PWM con el NodeMCU. ¡Gracias!
SandraGonz: ¡Excelente tutorial! Muy claro y preciso, me encantó. ¡Gracias por compartir!
¡Me encantó este tutorial! Muy útil y fácil de seguir. ¡Gracias por enseñarnos cómo atenuar un LED con el PWM en el NodeMCU! 🙌🏼
¡Gran artículo! Me pareció muy interesante y fácil de seguir. ¡Gracias por enseñarnos cómo hacer atenuación de LED con el NodeMCU! 👌🏼
¡Wow, qué buena explicación! Me encantó cómo detallaste el proceso de atenuación de LED con el PWM en el NodeMCU. Gracias por compartir este tutorial súper útil. 👍🏼