En la serie de Arduino estamos viendo como implementar los dispositivos y sensores más comunes, hoy le toca al Sensor de Infrarojos Pasivo, más conocido por sus siglas en inglés PIR.

Todos los objetos con temperatura por encima de 0 emiten calor, este se puede medir por la longitud de onda infraroja. Un sensor PIR está preparado para detectar dichas ondas y ante cualquier variación, se activa.

Los sensores de infrarojos son dispositivos electrónicos comunes, baratos (por debajo de 1€) y fáciles de utilizar. Quizás los más extendidos sean el HC-SR501 y HC-SR505.

Esquema de conexión con Arduino

El PIR tiene tres pines:

  • GRN – tierra, cable negro
  • 5V- cable rojo
  • Señal – cable amarillo

Conectamos tierra y 5V a sus respectivos pines en Arduino y la señal por ejemplo al pin 2.

Esas son todas las conexiones, ahora vamos al código.

const int pinPIR = 2;         // pin de entrada del PIR
const int pinLED = 13;        // pin del LED que indica estado del sensor

int estadoPIR = 0;            // estado del pin, inicia a 0
int estadoLED = LOW;          // estado del LED

void setup() {
  // SENSOR PIR
  pinMode(pinLED, OUTPUT); // selecciona pin de salida, en este caso el pin 13 activa led integrado en placa
  pinMode(pinPIR, INPUT);
  Serial.begin(9600);
}

void loop() {
   estadoPIR = digitalRead(pinPIR);
   if (estadoPIR == HIGH) {  // si detecta movimiento enciende el led      
      if (estadoLED == LOW) { // si previamente estaba apagado lo enciende
        estadoLED=HIGH;
        digitalWrite(pinLED, HIGH);  // enciende el led
        Serial.println("Alerta! detectado movimiento");
      }
   } else { // si no se detecta movimiento
      if (estadoLED == HIGH) { // si previamente estaba encendido lo apaga
        estadoLED=LOW;
        digitalWrite(pinLED, LOW); // apaga el led
        Serial.println("Todo tranquilo...");
      }
   }
}

Declaramos pines de señal, 2, y el led de aviso, en este caso el 13 integrado en la propia placa.

Activamos el puerto serie para debuguear con el monitor serie y ver los mensajes println.

El código está comentado y hay poco que añadir, ante cualquier duda como siempre encantado de responder.

Un saludo!

Deja tu comentario