ESP32 - Botón que controla la cerradura electromagnética

Este tutorial te enseña cómo usar el ESP32 con el botón y la cerradura electromagnética. En detalle, aprenderemos a usar el botón para controlar la cerradura electromagnética sin antirrebote y con antirrebote. Cada vez que se pulsa el botón, la puerta se desbloquea durante 10 segundos y luego se bloquea.

Acerca del botón y de la cerradura electromagnética

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

Diagrama de Cableado

Diagrama de cableado de la cerradura electromagnética 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 electromagnética 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-controls-electromagnetic-lock */ #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 lastButtonState; // the previous state of button int currentButtonState; // 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 currentButtonState = digitalRead(BUTTON_PIN); } void loop() { lastButtonState = currentButtonState; // save the last state currentButtonState = digitalRead(BUTTON_PIN); // read new state if (lastButtonState == HIGH && currentButtonState == 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 anterior.
  • 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 anterior y pégalo en Arduino IDE.
  • Compila y sube el código a la placa ESP32 haciendo clic en el botón Upload en el IDE de Arduino.
  • Coloca la placa de armadura cerca del electroimán.
  • Presiona el botón una vez.
  • Observa la atracción entre la placa de armadura y el electroimán durante 10 segundos.

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 antirrebote para el botón. La próxima parte mostrará cómo aplicar el antirrebote para el botón.

Código ESP32 - Botón que controla una cerradura electromagnética con antirrebote

¿Por qué es necesario aplicar el filtro anti-rebote al botón? ⇒ ver Tutorial de anti-rebote de botones para ESP32

/* * 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-controls-electromagnetic-lock */ #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; 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 usas ESP32, consulta cómo configurar el entorno para ESP32 en Arduino IDE.
  • Instala la biblioteca ezButton. Consulta Cómo
  • 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 Upload en el IDE de Arduino.
  • Coloque la placa de armadura cerca del electroimán.
  • Presione el botón una vez.
  • Observe la atracción entre la placa de armadura y el electroimán durante 10 segundos.

※ Nota:

Dado que el código anterior utilizó la función delay(), no es necesario realizar antirrebote para el botón. Sin embargo, aún 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!