ESP32 - Cerradura de solenoide accionada por botón

Este tutorial explica cómo usar un ESP32 con un botón y una cerradura de solenoide. En detalle, aprenderemos a usar el botón para controlar la cerradura de solenoide sin rebote y con rebote. Cada vez que se presione el botón, la puerta se desbloqueará durante 10 segundos y luego se bloqueará.

Acerca de Botón y Cerradura de Solenoide

Tenemos tutoriales específicos sobre la cerradura de solenoide y el botón. Cada tutorial contiene información detallada e 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 de la cerradura de solenoide 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 - Botón que controla la cerradura de solenoide sin antirrebote

/* * 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-solenoid-lock */ #define BUTTON_PIN 22 // ESP32 pin GPIO22 connected to button #define RELAY_PIN 27 // ESP32 pin GPIO27 connected to the solenoid lock relay // variables will change: int prev_button_state; // the previous state of button int button_state; // the current 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 digitalWrite(RELAY_PIN, HIGH); // lock the door button_state = digitalRead(BUTTON_PIN); } void loop() { prev_button_state = button_state; // save the last state button_state = digitalRead(BUTTON_PIN); // read new state if (prev_button_state == HIGH && button_state == LOW) { Serial.println("The button is pressed"); digitalWrite(RELAY_PIN, LOW); // unlock the door in 10 seconds delay(10000); // 10 seconds digitalWrite(RELAY_PIN, HIGH); // lock the door again } }

Pasos R\u00e1pidos

  • Si es la primera vez que usas ESP32, consulta cómo configurar el entorno para ESP32 en Arduino IDE.
  • Realiza el cableado como en la imagen de arriba.
  • Conecta la placa ESP32 a tu PC mediante un cable micro USB.
  • Abre Arduino IDE en tu PC.
  • Selecciona la placa ESP32 adecuada (p. ej. ESP32 Dev Module) y el puerto COM.
  • Copia el código de arriba y pégalo en Arduino IDE.
  • Compila y carga el código en la placa ESP32 haciendo clic en el botón Upload en Arduino IDE.
  • Pulsa el botón una vez.
  • Observa el estado de la lengüeta de la cerradura.

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 la práctica, necesitamos filtrado del rebote para el botón. La próxima parte mostrará cómo aplicar el filtrado del rebote para el botón.

Código ESP32 - Control por botón de la cerradura de solenoide con anti-rebote

¿Por qué es necesario aplicar el anti-rebote al botón? ⇒ ver ESP32 - Button Debounce tutorial

/* * 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-solenoid-lock */ #include <ezButton.h> #define BUTTON_PIN 22 // ESP32 pin GPIO22 connected to button #define RELAY_PIN 27 // ESP32 pin GPIO27 connected to the solenoid lock relay ezButton button(BUTTON_PIN); // create ezButton object that attach to pin 7; 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 digitalWrite(RELAY_PIN, HIGH); // lock the door } void loop() { button.loop(); // MUST call the loop() function first if (button.isPressed()) { Serial.println("The button is pressed"); digitalWrite(RELAY_PIN, LOW); // unlock the door in 10 seconds delay(10000); // 10 seconds digitalWrite(RELAY_PIN, HIGH); // lock the door again } }

Pasos R\u00e1pidos

  • Si es la primera vez que usa ESP32, consulte cómo configurar el entorno para ESP32 en Arduino IDE.
  • Instalar la biblioteca ezButton. Consulte Cómo instalar la biblioteca
  • Copie el código anterior y péguelo en el IDE de Arduino.
  • Compilar y subir el código a la placa ESP32 haciendo clic en el botón Subir en el IDE de Arduino.
  • Presione el botón una vez.
  • Vea el estado de la lengüeta de la cerradura.

※ Nota:

Dado que el código anterior utiliza la función delay(), no es necesario realizar antirrebote para el botón. Sin embargo, todavía proporcionamos el código con antirrebote por si modificas este código y no utilizas la función delay().

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!