You are on page 1of 5

Contador de visitantes usando led IR y

fototransistor
El proyecto del post de hoy fue utilizado el año pasado en un TCC, donde el alumno necesitaba crear
un sistema que contara el número de visitantes en una sala, utilizando led infrarrojo y fototransistor.

El sistema debería contar el número de personas que entraron en la sala, cuántas salidas, calcular
el número de personas en la sala y, si no hubiera nadie, apagar la luz.

Esta información debería ser presentada en una pantalla LCD 16x2, y con el uso de Arduino la parte
electrónica se redujo, facilitando la instalación del proyecto en una maqueta.

En el proyecto, mostrado en la foto arriba, se utilizaron los siguientes componentes:

 1 led común (para simular la luz de la habitación)


 2 leds IR 5mm
 2 fototransistores 5mm
 1 resistor de 220R para el led común
 2 resistencias de 220R para los leds IR
 2 resistencias de 220R para el colector del fototransistor
 2 resistencias de 330R para el emisor del fototransistor
 1 Pantalla LCD 16x2 HD44780
 1 pote de 10 K

El diagrama de cableado de visualización es el mismo que solía en la mayoría de los proyectos aquí
en el sitio ( haga clic aquí para ver otros mensajes en la pantalla LCD de aquí en Arduino y Co ). En
la puerta 7 conectamos el fototransistor que será responsable del conteo de entrada de la sala, y en
la puerta 6 el responsable del conteo de salida. El led que simula la luz de la habitación está
conectado al puerto 10:

En el circuito anteriormente, cada fototransistor (en azul) tienen la pierna más corta (el colector )
conectado al positivo junto con un resistor 220R y la pata más larga (el emisor ) conectado a la
puerta Arduino, con una resistencia de 330R decisiones la función de pull-down. El potenciómetro
ajusta el contraste de la pantalla.

El programa comprueba el estado de p Ortas 7 (sensor sala de entrada) y 6 (sensor de salida de


la habitación) que están en un alto nivel durante la recepción de iluminación de IR LED (que siempre
están conectados). Cuando la iluminación IR es interrumpida por algún objeto, el estado de la puerta
va a nivel bajo (0 / LOW), y el contador se actualiza.

En la parte superior del display, mostramos la cantidad de personas en la sala, y el total de


visitantes. En la parte inferior del display, tenemos el contador de entrada y de salida, sólo para
información y acompañamiento.
// Programa: Visitantes de control
// Autor: Arduino y Co

// conector de entrada de clavija de sensor IR


int pinoirent = 7 ;
// clavijas de salida del sensor IR
int pinoirsaida = 6 ;
// variable que registra el estado del sensor de entrada
int valorirent = 0 ;
// variable que registra el estado del sensor de salida
int valorirsai = 0 ;
// variable que registra la cantidad de visitantes que entraron
int content = 0 ;
// variable que registra el número de visitantes que dejaron
int contsai = 0 ;
// variable que registra la cantidad de personas en la habitación
int contsala = 0 ;
// variable que registra la cantidad anterior de la gente en la sala
int contanterior = 0 ;
// llevó el pasador de enlace que representa la luz de la habitación
int pinoledsala = 10 ;

// Configuración del LCD


#include <LiquidCrystal.h>
LiquidCrystal LCD ( 12 , 11 , 5 , 4 , 3 , 2 );

void setup ()
{
Serial.begin ( 9600 );
// Flecha el pasador del sensor de entrada como ENTRADA
pinMode (pinoirent, INPUT);
// Flecha el pasador del sensor de salida como ENTRADA
pinMode (pinoirsaida, INPUT);
// Flecha el pasador del Led indicador de presencia como SAIDA
pinMode (pinoledsala, OUTPUT);
// Información visualización inicial
lcd.begin ( 16 , 2 );
lcd.setCursor ( 0 , 0 );
lcd.print ( "Sala: 0" );
lcd.setCursor ( 9 , 0 );
lcd.print ( "TID: 0" );
lcd.setCursor ( 0 , 1 );
lcd.print ( "Ent: 0" );
lcd.setCursor ( 9 , 1 );
lcd.print ( "Salir: 0" );
}

void loop ()
{
// Flecha a variable valorirent con el estado del sensor de entrada
valorirent = digitalRead (pinoirent);
// Flecha a variable valorirsai con el estado del sensor de salida
valorirsai = digitalRead (pinoirsaida);

// muestra la información de los sensores de serie de monitor


Serial.print ( "entrada" );
Serial.print (valorirent);
Serial.print ( "salida" );
Serial.println (valorirsai);

// Comprobar si el estado del sensor de entrada ha cambiado


si (valorirent! = 1 )
{
// incrementar el valor del contador de entrada por 1 unidad
content = contenido + 1 ;
// Comprobar si la persona / objeto que transmita el sensor
, mientras que (digitalRead (pinoirent)! = 1 )
{
retardo ( 100 );
Serial.println ( "entrada de sensor estacionario" );
}
// Actualización sobre el valor del contador LCD de la entrada
lcd.setCursor ( 5 , 1 );
lcd.print (contenido);
// actualización en la pantalla LCD de la cantidad total de
visitantes
lcd.setCursor ( 14 , 0 );
lcd.print (contenido);
}

// Comprobar si el estado de salida del sensor ha cambiado


si (valorirsai! = 1 )
{
// incrementar el valor de salida del contador por 1 unidad
contsai contsai + = 1 ;
// Comprobar si la persona / objeto que transmita el sensor
, mientras que (digitalRead (pinoirsaida)! = 1 )
{
retardo ( 100 );
Serial.println ( "salida del sensor estacionario" );
}
// Actualizar el valor de salida LCD del contador
lcd.setCursor ( 14 , 1 );
lcd.print (contsai);
}

// Calcula el número de visitantes en la sala


contsala-content = contsai;
// Comprueba si el número actual de visitantes en la sala ha cambiado.
si (contsala! = contanterior)
{
lcd.setCursor ( 5 , 0 );
// Imprime 2 posiciones en blanco para borrar el cursor en
// columna 5, línea 0
lcd.print ( "" );
lcd.setCursor ( 5 , 0 );
// Actualiza en el LCD el número de visitantes en la sala
lcd.print (contsala);
// Después de la actualización de la pantalla LCD pone la variable
CONTANTERIOR
// el valor actual de los visitantes en la habitación (CONTASALA}
contanterior = contsala;

// Comprobar si el valor del contador de personas en la habitación


// y mayor que 0
si (contsala> 0 )
{
// Si es así, iluminar la luz / LED
digitalWrite (pinoledsala, 1 );
}
otro
{
// Si no , se apaga la luz / LED
digitalWrite (pinoledsala, 0 );
}
}
}

también para fines de seguimiento, los valores de los sensores se muestran en el serial monitor. Si
alguna persona u objeto parara frente al sensor, esta información también se muestra:

El funcionamiento de este proyecto usted confiere en el vídeo abajo:

You might also like