Arduino tutorial parte 19: Entrada edificio con sensores infrarrojos

Publicado el 11 febrero 2016 por Guille
En esta entrada os vamos a enseñar como podemos contar las personas que entran en un edificio poniendo dos barreras infrarrojas a la entrada.
Para este proyecto vamos a necesitar:
  • Dos pares de diodos infrarrojos (dos emisores y dos receptores).
  • 2 leds (rojo y verde).
  • 4 resistencias de 10K.
  • Una lcd.
  • Un potenciómetro.
  • Una protoboard.
  • Arduino.
Antes de empezar vamos a explicar un poco estos sensores. La barrera infrarroja se compone por un diodo infrarrojo (emisor) y un fototransistor (receptor). Son muy parecidos a un led común, algunos emisores los encontramos transparentes o con un ligero color en púrpura y los receptores en trasparentes o negros, estos últimos por un filtro UV que les permite trabajar mejor incluso expuesto a la luz solar.
El fototransistor (aunque parezca un led corriente) debe conectarse con la patilla larga a masa y la corta a voltaje.
 
Para esta práctica nosotros hemos usado como emisor el led infrarrojo tranparente y como receptor el fototransistor de color negro.

Una vez distinguidos los diodos vamos a explicar el planteamiento: lo primero de todo es que hemos distinguido entre las personas que entran y las que salen. Las personas que entran, primero pasan la primera barrera y después la segunda. Por el contrario, las personas que salen, primero pasan la segunda barrera y después la primera. Para este caso, solo vamos a contar las personas que entran al edificio.
Además, hemos introducido dos leds (uno verde y otro rojo) para detectar por que barrera se está pasando. Si pasamos por la primera barrera, se encenderá el led verde, y si pasamos por la segunda se encenderá el rojo.
Dicho esto, ya solo nos queda realizar el montaje, copiar el código y a disfrutar!.

Código arduino:

#include <LiquidCrystal.h>
LiquidCrystal lcd(10, 9, 8, 7, 6, 5);
int luces_1=13;   //verde
int luces_2=12;   //rojo
//barreras infrarrojas
const int barrera_infrarroja_1 = A4;      // lectura del Fototransistor de la primera barrera
const int barrera_infrarroja_2 = A5;      // lectura del Fototransistor de la segunda barrera
int Medida_infrarrojo_1 = 0;            // Inicializamos el valor del sensor de la primera barrera
int Medida_infrarrojo_2 = 0;   // Inicializamos el valor del sensor de la segunda barrera
boolean barrera_1=false;
boolean barrera_2=false;
int contador=0;
void setup(){
  Serial.begin(9600);   // Inicializa el puerto serie
  pinMode(luces_1, OUTPUT);
  pinMode(luces_2, OUTPUT);
}
void loop(){
  
  lcd.setCursor(0,0);
  lcd.print("PERSONAS: ");
  lcd.print(contador);  
  
  Medida_infrarrojo_1 =analogRead(barrera_infrarroja_1);
  Medida_infrarrojo_2 =analogRead(barrera_infrarroja_2);
 
  if(Medida_infrarrojo_1<400){
   digitalWrite(luces_1,HIGH);
   if(barrera_2==true){
   barrera_2=false;
   }
   else{
   barrera_1=true;
   }
  }
  else{
   digitalWrite(luces_1,LOW);
  }
   
   if(Medida_infrarrojo_2<400){
   digitalWrite(luces_2,HIGH);
   if(barrera_1==true){
   contador=contador+1;
   barrera_1=false;
   }
   else{
   barrera_2=true;
   }
   }
  
   else{
   digitalWrite(luces_2,LOW);
   } 
  
}

Para terminar, os dejo un vídeo del funcionamiento: