Lo que hace es detectar movimiento, luego disuade a  intrusos con sonidos de alarma agudos y luces parpadeantes. Ese es el objetivo del proyecto con Arduino , adecuado para principiantes. Planteado completamente desde cero y realizaremos pruebas a medida que avancemos, por lo que esperamos tener una idea de cómo se hace todo.

para realizar este proyecto necesitaras :

Un arduino

Sensor ultrasónico de “ping”, estoy usando HC-SR04 Un PIR sería mejor, pero son caros. Un sensor de ping se puede colocar de forma oculta en una puerta y aún así desempeñar el mismo trabajo básico.    

Un zumbador piezo     

Una Tira de luz LED, con el mismo cableado que usamos en este proyecto.

A medida que va realizando el cableado de este proyecto, no elimine todo cada vez, solo siga construyendo en el último bloque. Para cuando llegue a la sección “Codificación del sistema de alarma”, debe tener todas las partes conectadas, mirando algo como esto:

  

Lo 1ro que haremos sera probar la tira de leds

lo que necesitaras para probarla es

  • Tira led
  • fuente de 12V
  • 3 x MOSFET N transistores
  • Arduino
  • Protoboard
  • Algunos Jumpers macho-macho

La tira de LEDS debe suministrarse con un enchufe macho en un extremo que puede colocar directamente a la protoboard.El circuito que estamos usando es muy sencillo, como puede ver en el diagrama a continuación.

Los MOSFET tienen tres pines: puerta, desagüe y fuente. La puerta es como el interruptor electrónico que controlará el Arduino. Esto determina la corriente que fluye entre la fuente y el drenaje. El drenaje de cada MOSFET debe conectarse a la tierra del Arduino y a la tierra de la fuente de alimentación, mientras que la fuente se conecta a los canales de la tira de LED.

Cuando hayas completado el circuito, descarga y ejecuta este código de prueba enciende todos los leds del mismo color.

Así se vería al probar la tira de led.

Lo 2do  será armar la alarma para conectar el sensor de distancia :

como vera el sensor tiene 4 pines dos de ellos son  GND y VCC, GND va conectado a tierra y VCC va conectado a +5V.El tercer pin es TRIG que es el pin usado para enviar una señal de sonar, póngalo en el pin 6 digital; el cuarto es ECHO se usa para leer la señal de vuelta (y, por lo tanto, calcular la distancia) – ponga esto en el pin 7 digital.

Para hacer las cosas increíblemente simples, hay una biblioteca que podemos usar llamada NewPing. Descargue y coloque en la carpeta de la Biblioteca de Arduino y reinicie el IDE antes de continuar. Prueba utilizando este código; abra el monitor de serie y asegúrese de que la velocidad esté configurada en 115200 baudios. Con un poco de suerte, deberías ver algunas mediciones de distancia enviadas a una velocidad bastante alta. Puede encontrar una variación de 1 o 2 centímetros, pero esto está bien. Intente pasar la mano por delante del sensor, moviéndolo hacia arriba y hacia abajo para observar los cambios en las lecturas.

El código debe ser bastante simple de entender. Hay una pequeña declaración de pines relevantes al comienzo, incluida una distancia máxima. Esto puede variar según el sensor exacto que tenga, pero siempre que pueda obtener lecturas de menos de 1 metro con precisión, debería estar bien. En el bucle de esta aplicación de prueba, usamos la función ping () para enviar un ping de sonda, recuperando un valor en milisegundos de cuánto tiempo tardó en regresar el valor. Para entender esto, usamos las bibliotecas NewPing integradas en la constante US_ROUNDTRIP_CM, que define la cantidad de microsegundos que se tarda en recorrer un solo centímetro. También hay un retraso de 50 ms entre los pings para evitar la sobrecarga del sensor.

El zumbador es un zumbador simple , y podemos usar un pin 3 de PWM para hacer diferentes tonos. Conecte un cable al pin 3, uno al riel a tierra, no importa cuál.

Usa este código para probar.

Codificación del sistema de alarma

Ahora que tenemos todas las piezas de este rompecabezas, vamos a combinarlas :

#include <NewPing.h>

#define RED_PIN    10
#define GREEN_PIN   11
#define BLUE_PIN  9

#define TRIGGER_PIN  6  // Definimos que pin usaremos para conectar el trigger pin del sensor de distancia.
#define ECHO_PIN     7  // Definimos que el pin que usaremos para conectar el pin echo del sensor de distancia
#define MAX_DISTANCE 100 // Definimos la distancia maxima que queremos hacer ping (en centimetros).

Comience escribiendo una función básica setup (). Por ahora solo trataremos con las luces. He agregado un retraso de 5 segundos antes de que se inicie el bucle principal para darnos algo de tiempo para salir del camino si es necesario.

void setup(){

   pinMode(RED_PIN,OUTPUT);
   pinMode(BLUE_PIN,OUTPUT);
   pinMode(GREEN_PIN,OUTPUT);

   analogWrite(RED_PIN,0);
   analogWrite(BLUE_PIN,0);
   analogWrite(RED_PIN,0);

  delay(5000); 
}

Vamos a usar una función de ayuda que nos permite escribir rápidamente un único valor RGB en las luces.

void color (unsigned char red,unsigned char green, unsigned char blue) 
{     
    analogWrite(RED_PIN, red);     
    analogWrite(BLUE_PIN, blue);
    analogWrite(GREEN_PIN, green);
}

Finalmente, nuestro bucle por ahora consistirá en un simple destello de color entre rojo y amarillo (o, como quiera que sea su alarma, simplemente cambie los valores RGB).

void loop(){
   color(255,0,0); //rojo
   delay(100);
   color(255,255,0); //amarillo
   delay(100);
}

Sube y prueba eso para asegurarte de que estás en el camino correcto.

Ahora, integremos el sensor de distancia para disparar esas luces solo cuando algo entra dentro, por ejemplo, 50 cm (apenas menor que el ancho del marco de una puerta). Ya hemos definido los pines correctos e importado la biblioteca, así que antes de su función setup () agregue la siguiente línea para crear una instancia:

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

Debajo de eso, agregue una variable para almacenar el estado de la alarma que se dispara o no, por defecto a falso, por supuesto.

boolean triggered = false;

Agregue una línea a la función setup () para que podamos monitorear la salida en serie y depurar.

Serial.begin(115200);

A continuación, cambiemos el nombre del bucle actual a alarm () – esto es lo que se llamará si la alarma se ha disparado.

void alarm(){
   color(255,0,0); delay(100);
   color(255,255,0);  delay(100);
}

Ahora cree una nueva función loop (), una en la que obtengamos un nuevo ping, lea los resultados y active la alarma si se detecta algo dentro del rango del medidor.

void loop(){
    if(triggered == true){
      alarm();
    }
    else{
      delay(50);
      unsigned int uS = sonar.ping();
      unsigned int distance = uS / US_ROUNDTRIP_CM;
      Serial.println(distance);
      if(distance < 100){
         triggered = true;
      }
   }
}

¿Trabajando? Genial. Ahora vamos a añadir ese zumbador de nuevo. Agregue pinMode a la rutina de setup ().

pinMode(ALARM, OUTPUT);

Luego agregue el bucle del zumbador piezo a la función de alarm():

for (int x=0; x<180; x++) {
sinVal = (sin(x*(3.1412/180))); 
toneVal = 2000+(int(sinVal*1000));
tone(ALARM, toneVal);
  }

Si intenta compilar en este punto, se encontrará con un error. He dejado esto deliberadamente para que pueda ver algunos problemas comunes. En este caso, tanto NewPing como la biblioteca de tonos estándar usan las mismas interrupciones: básicamente son conflictivas y no hay mucho que puedas hacer para solucionarlo.

Aunque no te preocupes. Es un problema común, y alguien ya tiene una solución: descargue y agregue este NewTone a su carpeta de bibliotecas de Arduino. Ajusta el comienzo de tu programa para incluir esto:

#include <NewTone.h>

Y ajuste la línea:

tone(ALARM, toneVal);

A

NewTone(ALARM, toneVal);

Eso es. ahora solo te queda acoplar tu alarma en la puerta de tu habitación para el próximo desafortunado ladrón.

O, un perro tonto, que parecía completamente imperturbable por la alarma.

 Autor: James Bruce

Nos vemos. Saludos


ElectroMercado

2 Comentarios
  1. peter
    peter 10 meses

    Hola. El mencionado PIR arriba es el sensor pir, es lo mismo que un sensor inflarojo?

    0
  2. DitecnoDigital
    DitecnoDigital 10 meses

    Hola Peter, si es el mismo es el sensor infrarrojo pasivo.

    0

Contesta

CONTACTANOS

Esta es su red social de tecnología para compartir tus ideas y proyectos .Puedes enviarnos un correo si tienes dudas.Nos vemos

Enviando

Inicia Sesión con tu Usuario y Contraseña

o    

¿Olvidó sus datos?

Create Account