Arduino Nano - Sensor de puerta

El sensor de la puerta es una opción popular para fines de seguridad. Se utiliza para detectar y monitorizar accesos, como puertas y ventanas. Este dispositivo también se conoce como sensor de entrada, sensor de contacto o sensor de ventana.

Este tutorial te explica cómo usar Arduino Nano con el sensor de la puerta. En detalle, aprenderemos:

Hardware Requerido

1×Official Arduino Nano
1×Alternatively, DIYables ATMEGA328P Nano Development Board
1×Cable USB A a Mini-B
1×Sensor de Puerta
1×(Recomendado) Placa de Expansión de Terminales de Tornillo para Arduino Nano
1×(Recomendado) Placa de Expansión Breakout para Arduino Nano
1×(Recomendado) Divisor de Alimentación para Arduino Nano

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

Pinout del sensor de la puerta

Un sensor de puerta consta de dos partes:

  • Un imán.
  • Un interruptor de láminas que tiene dos pines: similar a un interruptor/botón regular, no es necesario diferenciar los dos pines.
Pinout del sensor de la puerta

Cómo funciona

El imán está fijado a la puerta o ventana (la parte móvil), y el interruptor de láminas está sujeto al marco de la puerta (el elemento estático). Los dos componentes entran en contacto cuando la puerta se cierra:

  • Cuando el imán está cerca del interruptor de láminas, el circuito del interruptor de láminas está cerrado
  • Cuando el imán está alejado 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 proporciona una salida de LOW ni HIGH en sus pines. Está cerrado o abierto. Dependiendo de cómo lo conectemos al Arduino Nano, el pin puede tener un valor de LOW, HIGH o un valor flotante (impredecible). Para evitar el valor flotante, se debe usar una resistencia pull-up o pull-down en el pin del Arduino Nano.

Si conectamos uno de los pines del interruptor de láminas a tierra y el otro pin del interruptor de láminas a una entrada del Arduino Nano 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 Arduino es BAJO
  • Cuando el imán está alejado del interruptor de láminas, el valor en el pin de entrada del Arduino es ALTO

Para determinar el estado de la puerta, simplemente miramos 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 buscando un cambio en el estado del pin de entrada del Arduino:

  • Si el estado cambia de bajo a alto, se detecta el evento de apertura de la puerta
  • Si el estado cambia de alto a bajo, se detecta el evento de cierre de la puerta

Diagrama de Cableado

Diagrama de cableado del sensor de puerta Arduino Nano

This image is created using Fritzing. Click to enlarge image

Ver La mejor forma de alimentar Arduino Nano y otros componentes.

Cómo programar para el sensor de la puerta

  • Inicializar el pin del Arduino Nano en modo de entrada digital utilizando la función pinMode(). Por ejemplo, el siguiente código se puede usar para configurar el pin 2 como entrada.
pinMode(2, INPUT_PULLUP);
  • Utiliza la función digitalRead() para determinar el estado del pin del Arduino Nano.
int door_state = digitalRead(2);

Código para Arduino Nano - Verificar el estado de apertura y cierre de la puerta.

/* * Este código de Arduino Nano fue desarrollado por es.newbiely.com * Este código de Arduino Nano se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino-nano/arduino-nano-door-sensor */ #define DOOR_SENSOR_PIN 2 // The Arduino Nano pin 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); // set arduino pin to 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

  • Copie el código y ábralo con el IDE de Arduino.
  • Haga clic en el botón Subir en el IDE de Arduino para compilar y subir el código al Arduino Nano.
  • Acérqué el imán al interruptor de láminas y luego aléjelo.
  • Consulte el resultado en el Monitor Serial.
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 para Arduino Nano - Detección de eventos de apertura y cierre de la puerta

/* * Este código de Arduino Nano fue desarrollado por es.newbiely.com * Este código de Arduino Nano se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino-nano/arduino-nano-door-sensor */ #define DOOR_SENSOR_PIN 2 // The Arduino Nano pin 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); // set arduino pin to 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 event is 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 event is 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 transferir el código al Arduino Nano.
  • Acerca el imán al interruptor de láminas y luego aléjalo.
  • Ver el resultado en el Monitor Serial.
COM6
Send
The door-closing event is detected The door-opening event is 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!