Semana 4 Sensor PIR y Alarma - NestorPlasencia/hackspace-electronica GitHub Wiki

SENSOR DE PRESENCIA

Con bastante frecuencia necesitamos algún sistema de detectar la presencia de personas o animales en movimiento en un área dada. Es la base de cualquier sistema de detección de intrusos pero también se usan mucho en las escaleras comunitarias o aseos públicos para encender la luz en cuanto detecta el movimiento.

Todos los seres vivos desprenden calor y lo mismo ocurre con los automóviles y cualquier otra maquinaria, y ese calor se emite en forma de radiación infrarroja que podemos detectar con los dispositivos adecuados, como los sensores PIR.

Estos sensores PIR pueden disparar directamente una alarma con una señal directamente, es decir que en su salida tendremos 5V si detecta la presencia, por ello lo utilizaremos como entrada digital.

En Circuits.io solo dejemos el arduino y el protoboard.

En +Components, adicionamos un PIR Sensor

Lo ubicamos en la protoboard, unimos sus terminales power y ground a positivo y negativo respectivamente y el pin de señal a la entrada digital 2.

Vamos a testear si realmente está detectando presencia, para eso usaremos un condicional, que encenderá el led 13 si detecta un voltaje de 5V en la entrada digital 2.

El código que vamos a usar es de una lectura analogica.

int pir = 2; 
int led = 13; 
void setup(){
	pinMode(led,OUTPUT);
	pinMode(pir,INPUT);
}
void loop(){
	if(digitalRead(pir) == HIGH){
		digitalWrite(led,HIGH);
	}else {
		digitalWrite(led,LOW);
	}
}

En Code Editor ejecutamos la simulación con Upload and Run y movemos el indicador del sensor.

Una forma de alertar que hay un intruso es mediante una alarma vamos a agregar un parlante piezoeléctrico.

En +Components, adicionamos un Piezo

Enlazamos uno de sus pines a negativo y el otro al pin digital 8.

Arduino posee funciones específicas para usar los parlantes piezo eléctricos.

Para crear sonidos usamos la función tone cuya sintaxis es la siguiente:

tone(pinsalida,frecuencia);

Esta función lo que hace es intercambiar valores HIGH/LOW a la frecuencia deseada en el pin seleccionado hasta que la volvemos a llamar con otra frecuencia o le ordenamos que pare con esta función.

noTone(pinsalida);

Vamos a crear un función llamada alarma que emite un sonido para alertarnos de la presencia en el rango del sensor.

void alarma(int pin, int freq) {
   tone(pin, freq);
   delay(100);
   noTone(pin);
}

En las configuraciones agregamos el parlante como una salida digital.

int pir = 2; 
int led = 13;
int parlante = 8; 
void setup(){
	pinMode(led,OUTPUT);
	pinMode(parlante,OUTPUT);
	pinMode(pir,INPUT);
}

Y en void loop usaremos una estructura while, para que mientras detecte presencia haga sonar la alarma.

void loop(){
	while(digitalRead(pir) == HIGH){
		alarma(parlante,300);
	}
}

En Code Editor ejecutamos la simulación con Upload and Run y movemos el indicador del sensor.