Icono del sitio AranaCorp

Usando un sensor PIR con Arduino

Es posible activar un sistema, como una alarma, detectando la presencia de una persona mediante un sensor de movimiento PIR. En la automatización del hogar, es una práctica común activar los dispositivos cuando una persona entra en una habitación. Esto es posible gracias a los sensores de movimiento como el sensor infrarrojo pasivo (PIR). Veremos en este tutorial cómo manejar el sensor PIR usando un microcontrolador Arduino.

Hardware

Principio de funcionamiento

Cualquier objeto con una temperatura superior al cero absoluto emite radiación infrarroja. Esto es lo que podemos ver en las imágenes de la cámara térmica. El sensor PIR está equipado con dos células sensibles a los infrarrojos que detectarán los rayos infrarrojos reflejados o emitidos por un objeto.
Cuando no hay movimiento, el nivel de infrarrojos recibido es el mismo para ambas células. Durante el paso de un objeto, la emisión de estos rayos se modificará en una célula y luego en la otra, lo que permitirá detectar el movimiento.
La cubierta blanca, que suele cubrir y proteger el sensor, es una lente multifacética de Fresnel que enfoca y a veces filtra la radiación infrarroja en las células.

Esquema

El módulo PIR puede ser alimentado directamente por el microcontrolador y, al devolver un estado, la salida del sensor se conecta a una entrada digital.

Código

El sensor PIR devuelve un estado alto (HIGH) cuando detecta movimiento y un estado bajo (LOW) si no hay nada. Por lo tanto, se gestionará como una entrada digital utilizando la función digitalRead() de Arduino.

//Parameters
const int pirPin  = 2;

//Variables
bool pirStatus  = false;

void setup() {
  //Init Serial USB
  Serial.begin(9600);
  Serial.println(F("Initialize System"));
  //Init digital input
  pinMode(pirPin, INPUT);
}

void loop() {
  readPIR();
}

void readPIR( ) { /* function readPIR */
  ////Test routine for PIR
  pirStatus = digitalRead(pirPin);
  Serial.print(F("Sensor status")); Serial.println(pirStatus);
  if (pirStatus) {
    Serial.print(F("----> Detection"));
    delay(500);
  }
  delay(100);
}

Aplicaciones

Fuentes

Encuentre otros tutoriales y ejemplos en el generador de código automático
Arquitecto de Código

Salir de la versión móvil