ESP32 - Relé conmutado por pulsador

Este tutorial explica cómo usar el ESP32 para alternar el estado de un relé entre ENCENDIDO y APAGADO cuando se presiona un botón. Más específicamente:

El código del ESP32 contiene código para un botón que conmuta un relé sin y con antirrebote.

Podemos ampliar este tutorial para usar un botón que cambie el estado de una solenoide, un ventilador, una bombilla o un actuador... al conectarlos al relé.

Acerca de Relé y Botón

Tenemos tutoriales específicos sobre relés y botones. Cada tutorial contiene información detallada y instrucciones paso a paso sobre la asignación de pines de hardware, el principio de funcionamiento, la conexión de cableado al ESP32 y el código para ESP32... Obtén más información sobre ellos en los siguientes enlaces:

Diagrama de Cableado

Diagrama de cableado del relé con botón ESP32

This image is created using Fritzing. Click to enlarge image

Si no sabe c\u00f3mo alimentar ESP32 y otros componentes, encuentre instrucciones en el siguiente tutorial: C\u00f3mo alimentar ESP32.

Código ESP32 - El botón conmutará el relé sin rebote

/* * Este código de ESP32 fue desarrollado por es.newbiely.com * Este código de ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/esp32/esp32-button-toggle-relay */ #define BUTTON_PIN 22 // ESP32 pin GPIO22 connected to button's pin #define RELAY_PIN 27 // ESP32 pin GPIO27 connected to relay's pin // variables will change: int relay_state = LOW; // the current state of relay int button_state; // the current state of button int last_button_state; // the previous state of button void setup() { Serial.begin(9600); // initialize serial pinMode(BUTTON_PIN, INPUT_PULLUP); // set ESP32 pin to input pull-up mode pinMode(RELAY_PIN, OUTPUT); // set ESP32 pin to output mode button_state = digitalRead(BUTTON_PIN); } void loop() { last_button_state = button_state; // save the last state button_state = digitalRead(BUTTON_PIN); // read new state if (last_button_state == HIGH && button_state == LOW) { Serial.println("The button is pressed"); // toggle state of relay relay_state = !relay_state; // control relay arccoding to the toggled state digitalWrite(RELAY_PIN, relay_state); } }

Pasos R\u00e1pidos

  • Si es la primera vez que usas ESP32, consulta cómo configurar el entorno para ESP32 en el IDE de Arduino.
  • Realiza el cableado tal como se ve en la imagen anterior.
  • Conecta la placa ESP32 a tu PC mediante un cable micro USB.
  • Abre el IDE de Arduino en tu PC.
  • Selecciona la placa ESP32 correcta (p. ej. ESP32 Dev Module) y el puerto COM.
  • Copia el código anterior y pégalo en el IDE de Arduino.
  • Compila y sube el código a la placa ESP32 haciendo clic en el botón Upload en el IDE de Arduino.
  • Mantén presionado el botón durante varios segundos y luego suéltalo.
  • Observa el cambio en el estado del relé.

Traduce el contenido que se muestra a continuación del inglés al español, devuelve solo el resultado:

Explicación del código línea por línea

El código ESP32 anterior contiene una explicación línea por línea. Por favor, lea los comentarios en el código.

En el código, relay_state = !relay_state es equivalente al siguiente código:

if(relay_state == LOW) relay_state = HIGH; else relay_state = LOW;

※ Nota:

El código anterior no incluye la lógica de rebote para el botón. Sin la implementación de rebote para el botón, pueden ocurrir comportamientos inesperados. Ver Por qué se necesita el rebote para el botón. La detección de rebote para el botón es complicada para los principiantes. Afortunadamente, la biblioteca ezButton realiza la detección de rebote del botón por nosotros.

Código ESP32 - Botón que alterna el relé con rebote

/* * Este código de ESP32 fue desarrollado por es.newbiely.com * Este código de ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/esp32/esp32-button-toggle-relay */ #include <ezButton.h> #define BUTTON_PIN 22 // ESP32 pin GPIO22 connected to button's pin #define RELAY_PIN 27 // ESP32 pin GPIO27 connected to relay's pin ezButton button(BUTTON_PIN); // create ezButton object that attach to pin 7; // variables will change: int relay_state = LOW; // the current state of relay void setup() { Serial.begin(9600); // initialize serial pinMode(RELAY_PIN, OUTPUT); // set ESP32 pin to output mode button.setDebounceTime(50); // set debounce time to 50 milliseconds } void loop() { button.loop(); // MUST call the loop() function first if (button.isPressed()) { Serial.println("The button is pressed"); // toggle state of relay relay_state = !relay_state; // control relay arccoding to the toggled state digitalWrite(RELAY_PIN, relay_state); } }

Pasos R\u00e1pidos

  • Si es la primera vez que usa ESP32, vea cómo configurar el entorno para ESP32 en Arduino IDE.
  • Instale la biblioteca ezButton. Vea Cómo hacerlo
  • Copie el código anterior y péguelo en el IDE de Arduino.
  • Compile y suba el código a la placa ESP32 haciendo clic en el botón Subir en el IDE de Arduino.
  • Pulse el botón varias veces.
  • Observe el cambio en el estado del relé.

Video Tutorial

Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.

※ NUESTROS MENSAJES

  • No dude en compartir el enlace de este tutorial. Sin embargo, por favor no use nuestro contenido en otros sitios web. Hemos invertido mucho esfuerzo y tiempo en crear el contenido, ¡por favor respete nuestro trabajo!