ESP8266 - Sensor de puerta

El sensor de puertas es una opción popular para los sistemas de seguridad, ya que puede detectar y monitorear entradas como puertas, ventanas y más. También se le conoce como sensor de entrada, sensor de contacto o sensor de ventana.

Este tutorial te enseña cómo usar el ESP8266 con el sensor de la puerta. En detalle, aprenderemos:

Hardware Requerido

1×ESP8266 NodeMCU
1×Cable USB Tipo-A a Tipo-C (para PC USB-A)
1×Cable USB Tipo-C a Tipo-C (para PC USB-C)
1×Sensor de Puerta
1×(Recomendado) Placa de Expansión de Terminales de Tornillo para ESP8266
1×(Recomendado) Divisor de Alimentación para ESP8266 Tipo-C

Or you can buy the following kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgación: Algunos de los enlaces proporcionados en esta sección son enlaces de afiliado de Amazon. Podemos recibir una comisión por las compras realizadas a través de estos enlaces sin costo adicional para usted. Apreciamos su apoyo.

Acerca del sensor de la puerta

Esquema de pines del sensor de la puerta

Un sensor de puerta consta de dos partes:

  • Un interruptor de láminas con dos pines
  • Un imán
Diagrama de pines del sensor de la puerta

Al igual que un interruptor o pulsador convencional, no es necesario diferenciar entre los dos terminales del interruptor de láminas.

Cómo funciona

El imán está fijado a la puerta o a la ventana (el componente móvil), y el interruptor de láminas está sujeto al marco de la puerta (la parte estacionaria). Cuando la puerta está cerrada, los dos componentes están en contacto:

  • Si el imán está cerca del interruptor de láminas, el circuito del interruptor de láminas está cerrado
  • Si el imán está lejos del interruptor de láminas, el circuito del interruptor de láminas está abierto
Sensor de puerta: cómo funciona

※ Nota:

El interruptor de láminas no produce una señal BAJA o ALTA en sus pines. Está cerrado o abierto. Dependiendo de cómo lo conectemos al ESP8266, el valor del pin puede ser BAJO, ALTO, o un valor flotante impredecible. Para evitar esto, se debe usar una resistencia pull-up o pull-down en el pin del ESP8266.

Si conectamos un pin del interruptor de láminas a GND y el otro pin del interruptor de láminas a un pin de entrada del ESP8266 con una resistencia pull-up (interna o externa):

  • Cuando el imán está cerca del interruptor de láminas, el valor en el pin de entrada del ESP8266 es bajo
  • Cuando el imán está lejos del interruptor de láminas, el valor en el pin de entrada del ESP8266 es alto

Para determinar el estado de la puerta, simplemente comprobamos el estado del pin de entrada del Arduino:

  • Si el estado es bajo, la puerta está cerrada
  • Si el estado es alto, la puerta está abierta

También podemos detectar cuándo se abre o se cierra la puerta observando los cambios de estado en el pin de entrada del ESP8266.

  • Si el estado cambia de bajo a alto, se ha detectado la apertura de la puerta
  • Si el estado cambia de alto a bajo, se ha detectado el cierre de la puerta

Diagrama de Cableado

Diagrama de cableado del sensor de puerta ESP8266 NodeMCU

This image is created using Fritzing. Click to enlarge image

Para obtener m\u00e1s informaci\u00f3n, consulte Pines del ESP8266 y c\u00f3mo alimentar ESP8266 y otros componentes.

Cómo programar para un sensor de puerta

  • Configura el pin del ESP8266 en modo de entrada digital utilizando la función pinMode(). Por ejemplo, el pin D7 se configura como entrada.
pinMode(D7, INPUT_PULLUP);
  • Utiliza la función digitalRead() para evaluar el estado del pin ESP8266.
int door_state = digitalRead(D7);

Código ESP8266 - Verificar si la puerta está abierta o cerrada

/* * Este código de ESP8266 NodeMCU fue desarrollado por es.newbiely.com * Este código de ESP8266 NodeMCU se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/esp8266/esp8266-door-sensor */ #define DOOR_SENSOR_PIN D7 // The ESP8266 pin D7 connected to door sensor's pin int door_state; void setup() { Serial.begin(9600); // Initialize the Serial to communicate with the Serial Monitor. pinMode(DOOR_SENSOR_PIN, INPUT_PULLUP); // Configure the ESP8266 pin to the input pull-up mode } void loop() { door_state = digitalRead(DOOR_SENSOR_PIN); // read state if (door_state == HIGH) { Serial.println("The door is open"); } else { Serial.println("The door is closed"); } }

Pasos R\u00e1pidos

Para empezar con ESP8266 en el IDE de Arduino, siga estos pasos:

  • Consulta el tutorial cómo configurar el entorno para ESP8266 en Arduino IDE si esta es tu primera vez usando ESP8266.
  • Conecte los componentes como se muestra en el diagrama.
  • Conecte la placa ESP8266 a su computadora usando un cable USB.
  • Abra el IDE de Arduino en su computadora.
  • Elija la placa ESP8266 correcta, como (p. ej. NodeMCU 1.0 (ESP-12E Module)), y su puerto COM correspondiente.
  • Copie el código y ábralo con el IDE de Arduino.
  • Haga clic en el botón Subir en el IDE para enviar el código al ESP8266.
  • Acerca el imán al interruptor de láminas (reed switch), luego aléjalo.
  • Verifique el Monitor Serial para ver el resultado.
COM6
Send
The door is open The door is open The door is closed The door is closed The door is closed The door is closed The door is closed The door is open The door is open
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Código ESP8266 - Detección de eventos de apertura y cierre de puertas

/* * Este código de ESP8266 NodeMCU fue desarrollado por es.newbiely.com * Este código de ESP8266 NodeMCU se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/esp8266/esp8266-door-sensor */ #define DOOR_SENSOR_PIN D7 // The ESP8266 pin D7 connected to door sensor's pin int door_state; // current state of door sensor int prev_door_state; // previous state of door sensor void setup() { Serial.begin(9600); // Initialize the Serial to communicate with the Serial Monitor. pinMode(DOOR_SENSOR_PIN, INPUT_PULLUP); // Configure the ESP8266 pin to the input pull-up mode door_state = digitalRead(DOOR_SENSOR_PIN); // read state } void loop() { prev_door_state = door_state; // save the last state door_state = digitalRead(DOOR_SENSOR_PIN); // read new state if (prev_door_state == LOW && door_state == HIGH) { // state change: LOW -> HIGH Serial.println("The door-opening has been detected"); // TODO: turn on alarm, light or send notification ... } else if (prev_door_state == HIGH && door_state == LOW) { // state change: HIGH -> LOW Serial.println("The door-closing has been detected"); // TODO: turn off alarm, light or send notification ... } }
  • Copia el código y ábrelo en el IDE de Arduino.
  • Haz clic en el botón Subir para transferirlo al ESP8266.
  • Acerca el imán al interruptor de láminas, luego aléjalo.
  • Consulta el resultado en el Monitor Serial.
COM6
Send
The door-closing has been detected The door-opening has been detected
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

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.

Referencias de Funciones

※ 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!