Introducción
Los sensores PIR le permiten detectar movimiento, casi siempre se usan para saber si un humano se ha movido dentro o fuera del rango de los sensores.
Las siglas PIR vienen del inglés "Passive Infrared" que significa "Infrarrojo Pasivo". Básicamente miden la luz infrarroja de los objetos en su campo de visión, por lo tanto, pueden detectar el movimiento en función de los cambios de esta luz en el entorno.
Son pequeños, baratos, de bajo consumo, fáciles de usar y no se desgastan. Por esa razón, se encuentran comúnmente en electrodomésticos y aparatos utilizados en hogares o empresas.
Lista de Materiales
- Módulo de Sensor PIR
- Arduino UNO (cualquier versión)
- LED
- Buzzer
- Protoboard
- Cables de conexión
- Resistencia de 330 ohmios
Conexión
Conectar los sensores PIR a un microcontrolador Arduino es realmente simple. El PIR actúa como una salida digital que puede ser de alto o bajo voltaje.
Entonces, todo lo que necesita hacer es escuchar en una entrada digital en su Arduino. Si el pin emite un un pitido agudo significa que fue detectado, contrariamente un pitido grave indica que no lo fue.
Es probable que desee volver a activarlo, así que asegúrese de poner el puente en la posición H.
Alimente el PIR con 5V y conecte tierra a tierra. Luego conecte la salida a un pin digital. En este ejemplo usaremos el pin 2.
Código
El código es muy simple y básicamente mantiene un registro de si la entrada al pin 2 es alta o baja. También realiza un seguimiento del estado del pin, de modo que imprime un mensaje cuando el movimiento se ha iniciado y se ha detenido.
void setup() {
pinMode(2, INPUT); //PIN 2 as INPUT
pinMode(3, OUTPUT); //PIN 3 as OUTPUT
}
void loop() {
if (digitalRead(2) == HIGH){
digitalWrite(3, HIGH); // turn the LED/Buzz ON
delay(100); // wait for 100 msecond
digitalWrite(3, LOW); // turn the LED/Buzz OFF
delay(100); // wait for 100 msecond
}
}
/*
* PIR sensor tester
*/
int ledPin = 13; // choose the pin for the LED
int inputPin = 2; // choose the input pin (for PIR sensor)
int pirState = LOW; // we start, assuming no motion detected
int val = 0; // variable for reading the pin status
void setup() {
pinMode(ledPin, OUTPUT); // declare LED as output
pinMode(inputPin, INPUT); // declare sensor as input
Serial.begin(9600);
}
void loop(){
val = digitalRead(inputPin); // read input value
if (val == HIGH) { // check if the input is HIGH
digitalWrite(ledPin, HIGH); // turn LED ON
if (pirState == LOW) {
// we have just turned on
Serial.println("Motion detected!");
// We only want to print on the output change, not state
pirState = HIGH;
}
} else {
digitalWrite(ledPin, LOW); // turn LED OFF
if (pirState == HIGH){
// we have just turned of
Serial.println("Motion ended!");
// We only want to print on the output change, not state
pirState = LOW;
}
}
}
No olvide que hay ocasiones en que no necesita un microcontrolador. Se puede conectar un sensor PIR a un relay (quizás con un búfer de transistor) sin un micro.