jueves, 11 de febrero de 2016

Arduino Tutorial 21: Entrada edificio con sensores infrarrojos

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);
   } 
  
}