Cómo detectar movimiento con el Arduino

  1. Ordenadores
  2. Arduino
  3. Cómo detectar movimiento con el Arduino

Libro Relacionado

Por John Nussey

Un sensor de infrarrojos pasivos (PIR) es un sensor común en algunas casas y en la mayoría de los edificios comerciales y le permite detectar movimiento con el Arduino. Es posible que haya visto este sensor en la esquina de una habitación, parpadeando en rojo de vez en cuando. Registra el calor emitido por personas, animales u otras fuentes de calor como radiación infrarroja.

La radiación infrarroja es invisible para el ojo humano pero es fácil de distinguir para el sensor. El sensor en sí es similar al sensor que se encuentra en una cámara digital, pero sin los complejos objetivos para capturar una imagen detallada.

Lo más común es que este tipo de sensor se utilice para la detección de movimiento en alarmas antirrobo. En lugar de detectar movimiento, en realidad detecta cambios en la temperatura.

Hay dos maneras de obtener un sensor PIR. La primera es desmontar una alarma antirrobo PIR, que probablemente está preempaquetada con una lente y un sensor. El segundo método es comprar uno específicamente destinado a proyectos de microcontroladores. La mayoría de las veces viene con una lente básica de ping-pong con forma de pelota y una placa de circuito desnudo en la parte inferior. Este último es más fácil de trabajar porque se conocen todos los detalles.

Considere lo siguiente durante la planificación:

  • Complejidad: Puede ser difícil hackear un sensor PIR existente hecho para un sistema específico. Una de las ventajas de utilizar un sensor existente es que está preempaquetado, lo que reduce la cantidad de tiempo que se necesita para montar los componentes. Si está utilizando un sensor PIR que no está preempaquetado, debería ser mucho más sencillo desde el punto de vista del hardware y el software, pero requiere una cuidadosa reflexión sobre la carcasa. Algunos sensores PIR tienen su propia lógica a bordo y funcionan como un interruptor, y se ponen en ALTO cuando se produce un movimiento por encima del umbral. Este tipo de sensor necesita calibración para identificar cambios en la norma.
  • Coste: Un sensor PIR doméstico cuesta entre $15 y $45 (£10 y £30). El gasto principal es la vivienda, normalmente diseñada para ser discreta o para tener un aspecto adecuado de alta tecnología. Los sensores Bare PIR cuestan una fracción del precio de alrededor de 10 dólares, pero necesitan una carcasa adecuada para ser de uso real.
  • Dónde: Muchas carcasas le permiten colocar el sensor de forma ordenada contra una pared, o podría considerar el uso de mini trípodes para la dirección. Algunos de los soportes para trípode también vienen con un soporte de ventosa, que es perfecto para fijar el sensor a superficies brillantes como el vidrio.

La mayoría de los sensores PIR vienen listos para la acción, y sólo necesitan energía. Se calibran a sí mismos en base a lo que pueden ver y luego envían un valor ALTO o BAJO cuando detectan un cambio. Esto los hace extremadamente fáciles de programar porque se trata de las mismas señales que con un pulsador.

En este ejemplo, aprenderás a usar el SE-10, un sensor PIR disponible en los principales distribuidores de Arduino. Este sensor PIR en particular tiene tres cables: rojo, marrón y negro. El cable rojo es la fuente de alimentación y debe conectarse a 5V. Curiosamente, el cable negro es el cable de señal y no la tierra. El color marrón debe estar conectado a tierra y el negro al pin 2.

La clavija de señal es conocida como colector abierto y necesita ser tirada ALTA para empezar. Para ello, se utiliza una resistencia de 10k para conectarla también a 5V. El perno, por lo tanto, se lee ALTO cuando no hay movimiento y se tira a BAJO cuando hay movimiento.

Necesitas:

  • Un Arduino Uno
  • Una protoboard
  • Un sensor de movimiento SE-10 PIR
  • Una resistencia de 10k ohmios
  • Alambres de salto

Distribuya el circuito como en el esquema y en los esquemas de circuitos.

Completa el circuito y elige File→Examples→01Basics→DigitalReadSerial desde el menú Arduino para cargar el sketch.

Este esquema está pensado para un pulsador pero sigue los mismos principios. Si desea hacer el sketch más específico, puede guardarlo con un nombre más apropiado y nombres de variables.

/* DigitalReadSerial Lee una entrada digital en el pin 2, imprime el resultado en el monitor serie Este código de ejemplo es de dominio público. */// La clavija digital 2 tiene un botón pulsador. Darle un nombre:intButton = 2;// la rutina de configuración se ejecuta una vez cuando se presiona reset:void setup() { /// inicializar la comunicación serie a 9600 bits por segundo: Serial.begin(9600); // hacer que el pin del pulsador sea una entrada: pinMode(pushButton, INPUT);}/// la rutina de bucle se ejecuta una y otra vez para siempre:void loop() { // leer la clavija de entrada: intButtonState = digitalRead(pushButton); //imprimir el estado del botón: Serial.println(buttonState); delay(1); // delay in between reads for stability}

Presione el botón Compilar para comprobar su código. Al hacerlo, se resaltan los errores gramaticales y se vuelven rojos cuando se descubren. Si el sketch se compila correctamente, haga clic en Cargar para enviar el sketch a su foro. Cuando haya terminado la carga, fije el sensor PIR en una superficie libre de movimiento y abra el monitor serie.

Al abrir el monitor serial se reinicia el sketch y el sensor se calibra solo en los primeros 1 a 2 segundos. Cuando se detecta movimiento, debería ver que el valor del botónState cambia de 1 (sin movimiento) a 0 (movimiento).

Si no pasa nada, vuelva a comprobar el cableado:

  • Asegúrese de que está utilizando el número de pin correcto.
  • Comprueba las conexiones de la protoboard. Si los cables o componentes de salto no se conectan utilizando las filas correctas en la protoboard, no funcionarán.
  • Intente reiniciar el sensor PIR desconectando y reconectando el cable GND, y asegúrese de que no se mueva durante o después de la calibración.

Add Your Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *