Arduino Based Visitor Counter with Automatic Light Control

Often we see visitor counters at stadium, mall, offices, class rooms etc. How they count the people and turn ON or OFF the light when nobody is inside? Today we are here with automatic room light controller project with bidirectional visitor counter by using Arduino Uno. It is very interesting project for hobbyists and students for fun as well as learning.

 

Components

  • Arduino UNO
  • Relay (5v)
  • Resisters
  • IR Sensor module
  • 16x2 LCD display
  • Bread Board
  • Connecting Wires
  • Led
  • BC547 Transistor

 

The project of “Digital visitor counter” is based on the interfacing of some components such as sensors, motors etc. with arduino microcontroller. This counter can count people in both directions. This circuit can be used to count the number of persons entering a hall/mall/home/office in the entrance gate and it can count the number of persons leaving the hall by decrementing the count at same gate or exit gate and it depends upon sensor placement in mall/hall. It can also be used at gates of parking areas and other public places.

 

This project is divided in four parts: sensors, controller, counter display and gate. The sensor would observe an interruption and provide an input to the controller which would run the counter increment or decrement depending on entering or exiting of the person. And counting is displayed on a 16x2 LCD through the controller.

When any one enters in the room, IR sensor will get interrupted by the object then other sensor will not work because we have added a delay for a while.

IR Transmitter Working

Circuit Explanation

There are some sections of whole visitor counter circuit that are sensor section, control section, display section and driver section.

 

Sensor section: In this section we have used two IR sensor modules which contain IR diodes, potentiometer, Comparator (Op-Amp) and LED’s. Potentiometer is used for setting reference voltage at comparator’s one terminal and IR sensors sense the object or person and provide a change in voltage at comparator’s second terminal. Then comparator compares both voltages and generates a digital signal at output. Here in this circuit we have used two comparators for two sensors. LM358 is used as comparator. LM358 has inbuilt two low noise Op-amp.

IR Sensor Circuit

Control Section: Arduino UNO is used for controlling whole the process of this visitor counter project. The outputs of comparators are connected to digital pin number 14 and 19 of arduino. Arduino read these signals and send commands to relay driver circuit to drive the relay for  light bulb controlling.

 

Display section:  Display section contains a 16x2 LCD. This section will display the counted number of people and light status when no one will in the room.

 

Relay Driver section: Relay driver section consist a BC547 transistor and a 5 volt relay for controlling the light bulb. Transistor is used to drive the relay because arduino does not supply enough voltage and current to drive relay. So we added a relay driver circuit to get enough voltage and current for relay. Arduino sends commands to this relay driver transistor and then light bulb will turn on/off accordingly.

 

Visitor Counter Circuit Diagram

The outputs of IR Sensor Modules are directly connected to arduino digital pin number 14(A0) and 19(A5). And Relay driver transistor at digital pin 2. LCD is connected in 4 bit mode. RS and EN pin of LCD is directly connected at 13 and 12. Data pin of LCD D4-D7 is also directly connected to arduino at D11-D8 respectively. Rest of connections are shown in the below circuit diagram.

Visitor Counter Circuit Diagram using Arduino

 

Code Explanation

First we have included library for LCD and defined pin for the same. And also defined input output pin for sensors and ralay.

define

Then given direction to input output pin and initialized LCD in setup loop.

void setup

In loop function we read sensors input and increment or decrement the counting depending upon enter or exit operation. And also check for zero condition. Zero condition means no one in the room. If zero condition is true then arduino turn off the bulb by deactivating the relay through transistor.

loop

And if zero condition is false then arduino turns on the light. Here is two functions for enter and exit.

enter and exit function

 

Code: 

#include<LiquidCrystal.h>
LiquidCrystal lcd(13,12,11,10,9,8);

#define in 14
#define out 19
#define relay 2

int count=0;

void IN()
{
    count++;
    lcd.clear();
    lcd.print("Person In Room:");
    lcd.setCursor(0,1);
    lcd.print(count);
    delay(1000);
}

void OUT()
{
  count--;
    lcd.clear();
    lcd.print("Person In Room:");
    lcd.setCursor(0,1);
    lcd.print(count);
    delay(1000);
}

void setup()
{
  lcd.begin(16,2);
  lcd.print("Visitor Counter");
  delay(2000);
  pinMode(in, INPUT);
  pinMode(out, INPUT);
  pinMode(relay, OUTPUT);
  lcd.clear();
  lcd.print("Person In Room:");
  lcd.setCursor(0,1);
  lcd.print(count);
}

void loop()
{  
  
  if(digitalRead(in))
  IN();
  if(digitalRead(out))
  OUT();
  
  if(count<=0)
  {
    lcd.clear();
    digitalWrite(relay, LOW);
    lcd.clear();
    lcd.print("Nobody In Room");
    lcd.setCursor(0,1);
    lcd.print("Light Is Off");
    delay(200);
  }
  
  else
    digitalWrite(relay, HIGH);
  
}

Video: 

Comments (123)

  • juani's picture
    juani

    Hi Saddam, could you please tell me where you got those 2 IR Sensor Modules from ?
    Thank you in advance and best regards.
    juani

    Oct 20, 2015
  • Abhishek's picture
    Abhishek

    These IR sensor Modules are easily available online (ebay/amazon) or offline at local electronics components shop.

    Oct 22, 2015
  • talash ganvir's picture
    talash ganvir

    what can i do when the sensor is active low

    Jan 08, 2017
  • Bhanu Shukla's picture
    Bhanu Shukla

    The IR SEnsor modules I have are not giving any output, i think it's not compatible with arduino.
    Please specify proper model number for IR Sensor Module so that I can buy specific one

    Nov 05, 2015
  • Maddy's picture
    Maddy

    Any IR sensor module should work here, please set the proper sensitivity of sensor by rotating the potentiometer on it. Learn the working of IR sensor module here. Otherwise check the circuit and code once again.

    Nov 14, 2015
  • mahendar13yadav@gmail.com's picture
    mahendar13yadav...

    cant we count persons more than one if we can how can we do it

    Nov 06, 2015
  • Amit's picture
    Amit

    This project is already counting multiple persons, please check the Video.

    Nov 14, 2015
  • ibrahim bashir's picture
    ibrahim bashir

    liked very much

    Nov 18, 2015
  • umar's picture
    umar

    yar this programming is not working right because it does not count correctly .
    when you keep your hand in front of IR module so it will continuous the counting .
    But instead of count one it count continuous i think so their is problem in programm plz someone upload correct programm other than it it has no problem reply must

    Dec 03, 2015
  • daniella's picture
    daniella

    did you already have a corrected programming?

    May 20, 2016
  • nirmal's picture
    nirmal

    How can I use the counted value to be sent to the serial out pin that to be used by a computer?

    Dec 07, 2015
  • Abhishek's picture
    Abhishek

    You can easily send this data to Computer, by using some code (Serial.begin(9600); Serial.println("Hello"); ) and Arduino IDE. There are numerous tutorial on the web.

    Dec 17, 2015
  • raj's picture
    raj

    How can i connect 220 Volt AC bulb to it. Please help immediately.

    Jan 02, 2016
  • Jayant's picture
    Jayant

    If you look at the circuit diagram, it already has 220v AC bulb connected through the Relay.

    Jan 14, 2016
  • abhinav's picture
    abhinav

    on relay wire is connected on which two terminal
    C and NC
    OR C and NO

    Jan 09, 2016
  • abhinav's picture
    abhinav

    can i use pir sensor insted of ir sensor

    Jan 10, 2016
  • Abhishek's picture
    Abhishek

    Yes PIR may be used, but it should be OFF within a second, after somebody passes it. Learn the working of PIR here: PIR Sensor

    Jan 14, 2016
  • akash m kashyap's picture
    akash m kashyap

    i used this code iny project but the range of the ir sesnor is only of 1-2cm soo i have to increase the distance so pls give me the code to increase the rangee..

    Jan 21, 2016
  • saddam khan's picture
    saddam khan

    use variable resistor placed at IR sensor module for increase sensing distance.

    Jan 27, 2016
  • Deenkhar Beejadarsing's picture
    Deenkhar Beejad...

    Hello Sir,

    Great project. I am current doing my final year project in BEng Electronic Engineering. I am doing a solar automatic lighting control system for a house. i found your project interesting so i tried add it to my house. BUT, when i finished mounting the circuit, the lcd count goes on constantly 0, -1,0,-1,0,-1...

    now when i put my hand one of the sensor either the count keeps going from 0 to 1,2,3, etc... or it decrements to -1,-2,-3, etc...

    can you advice?? i tried adjust the sensitivities but in vain.

    thnx in advance.

    Feb 04, 2016
  • Jayant's picture
    Jayant

    Please check your circuit connections and code twice. Do not keep any unnecessary moving things in front of IR sensors. Try understanding the code, and change it accordingly. There is one IR pair for Entry detection and another for Exit detection, if you keep your hand in front of both the IR pair, then the number will continuously goes up and down. And the value shouldn't go negative as there is condition for that in the code, please check.

    Feb 06, 2016
  • Deenkhar Beejadarsing's picture
    Deenkhar Beejad...

    Thanks for replying... I altered the code only but left the circuitry the same... It works now. Now will try optimize and add further components.

    Feb 08, 2016
  • Naveen's picture
    Naveen

    good morning deenkhar beejad ji,
    in the above mentioned circuit i got the same problem as you,please send me the alterd code

    Mar 29, 2016
  • daniella's picture
    daniella

    hello deenkhar beejad ji,
    in the above mentioned circuit i got the same problem as you,please send me the corrected code

    May 20, 2016
  • Jimmy's picture
    Jimmy

    Hi! I have faced the same problem with you. I had tried to modify the code and still cannot get it correctly. Would you share your altered code with me? I really need your help to complete my final year project.

    Sep 06, 2016
  • Azwan Syazwan Bin Sepuan Salleh's picture
    Azwan Syazwan B...

    i also have the same problem.. can u email me the correct code.. i tried to play with the delay...but it still not stable

    Nov 15, 2016
  • nita's picture
    nita

    Hi Deenkhar Beejad...

    I don't have a lot of programming experience, and I am struggling with fixing the code. Would you please be able to send your altered code?

    Thanks,
    N

    Dec 16, 2016
  • Xeshas's picture
    Xeshas

    I am facing the same problem on my project. Can you please send me the altered program which worked for you

    May 26, 2017
  • saba's picture
    saba

    i am facing same issue please upload your modified code

    Apr 15, 2016
  • Sushmitha's picture
    Sushmitha

    Hi
    Its a nice simple yet effective project
    I face troubles in relay connections
    i used a 5-pin,5v relay
    It would be of great help if you could mail me relay connections with the pin specs and reqd. voltages at each pin
    thank you

    Feb 19, 2016
  • Abhishek's picture
    Abhishek

    Check some Home automation projects on this site from where you can get the idea of connecting relay: Home Automation Projects

    Feb 24, 2016
  • Deenkhar Beejadarsing's picture
    Deenkhar Beejad...

    Hello Sir,

    Is there anyway to prevent the counter from moving up or down when i place my hand infront of 1 of the sensors constantly? If ever i leave my hand infront of 1 of my sensors, the count eitheir goes up or down. So in a real case scenario, if someone stays infront of the door for sometime, either the count will go continuously up or down. and it will affect when the lights should go off.

    Thanks.

    Feb 21, 2016
  • Abhishek's picture
    Abhishek

    Good thought, for this you can either increase the Delay in code or add some condition to avoid this, like only increase the count if IR sensor is switched from Off to ON state, and dont increases count if IR sensor is previously ON or continuously getting digitalRead(in). Try around some codes and share with us.

    Feb 24, 2016
  • saddam khan's picture
    saddam khan

    you may add a deboucing condition in both if case condition. like:

    while(digitalRead(pin_number)==0);

    Feb 25, 2016
  • Rohit's picture
    Rohit

    Please tell me how to burn display

    Feb 29, 2016
  • Mark's picture
    Mark

    Can we use proximity sensor module on this? Can we have a circut diagram using this type of module?

    Mar 01, 2016
  • Maddy's picture
    Maddy

    yes, basically IR sensor belongs to Proximity sensor.

    Mar 11, 2016
  • qasim saleem's picture
    qasim saleem

    i need proteus file.....

    Mar 02, 2016
  • bhimrao bhalerao's picture
    bhimrao bhalerao

    which resister(value) are use in this ckt pls tell me

    Mar 03, 2016
  • Tarun kunula's picture
    Tarun kunula

    Can you pls send a circuit diagram?What are the values of the resistances and the pins they need to be connected?

    Mar 09, 2016
  • Maddy's picture
    Maddy

    Resistor values are clearly mentioned in the Circuit Diagram.

    Mar 11, 2016
  • mansi shukla's picture
    mansi shukla

    sir, i m not able to get exact circuit diagram of automatic door opener using visitor counter....so, kindly cn u suggest some help all i get is room light controller every time.....cn i get circuit diagram of defined subject

    Mar 11, 2016
  • PURVI's picture
    PURVI

    fine

    Mar 14, 2016
  • victor's picture
    victor

    my backlight isn't coming on. please help

    Mar 17, 2016
  • akash m kashyap's picture
    akash m kashyap

    i think there is some problem in the code because if the first senses then the count value got incremented and if second sensor is sensed n it wil get decremented. i mean to say if first sensor goes high the display will be one if the second sensor goes high n then value wil be 0 n lights wil be off wat shl i do to get rid of it

    Mar 17, 2016
  • Abhishek's picture
    Abhishek

    That's how it is supposed to work. You can increase the delay to 2000 in 'IN' and 'OUT' functions. Also read all the above comments, solution has already been suggested.

    Mar 28, 2016
  • naveen's picture
    naveen

    what type of sensor modules used in the circuit,tell me the ic number in the module.....?

    Mar 21, 2016
  • naveen's picture
    naveen

    i have some more doughts please help me
    after burning the code which lights in arduino board will glow or blink...?
    after bulilding above circuit display is showing 1 and 0 continuously help me to solve this.....?

    Mar 21, 2016
  • Jayant's picture
    Jayant

    @Naveen: Please read all the above Comments before asking any question, your questions are already answered.

    Mar 28, 2016
  • akash m kashyap's picture
    akash m kashyap

    they have given ic 358 in tht module

    Mar 21, 2016
  • Nekuie's picture
    Nekuie

    i have a question!
    by using this circuit how we can have an accurate result? i mean repetitive visits can't be counted

    Apr 13, 2016
  • Laura's picture
    Laura

    i didnt not use the IR modules you have, i built my from scratch using IR LEDs, resisters, and 741 op-amp. when i plug my circuit into the arduino it counts on its own without the IR beam being broke. what kind of output signal is the arduino looking for? it also will count negative, what can i add to the code to prevent that?

    Apr 14, 2016
  • Maddy's picture
    Maddy

    Check the IR module you have built, and adjust the sensitivity of circuit. Check this for IR sensor building : IR Sensor Module Circuit

    Apr 18, 2016
  • Faisal's picture
    Faisal

    sir I am doing a mini project on your idea. but I am facing some problems that my LCD is not showing any single alphabet. I have checked all the circuitry, its fine. is there any change should made in code for this. actually sir I am from mechanical dept that's why I don't know much programming. can you please help me in this?

    Apr 18, 2016
  • prabhakaran's picture
    prabhakaran

    if there any IR module available for proteus ....if available where can i download it..??
    pls help me bro....

    Apr 19, 2016
  • saddam khan's picture
    saddam khan

    you may use torch ldr in proteus in place of ir sensor module.

    Apr 21, 2016
  • antex's picture
    antex

    could you able to program LDR in your circuit?

    May 03, 2016
  • Ashis kundu's picture
    Ashis kundu

    Sir my project name is automatic room light control using ir sensor I using ardiuno uno r3 circuit board then I don't know this programming please help me and give the programming

    May 04, 2016
  • kshitij's picture
    kshitij

    i compiled the code ....but when i uploaded it the light is continuously glowing !!!!!
    will it work without the lcd ..???

    May 10, 2016
  • shiva kumar 's picture
    shiva kumar

    i went through the program and what I didn't understand is how you you are determining if the person is leaving or entering the room. and also you seem to have connected the IR sensors to analog pins, so shouldnt it say " analogRead()" instead of "digitalRead()" ?
    Thank You.

    May 15, 2016
  • Ateeq Anjum's picture
    Ateeq Anjum

    Hello everyone, i selected this project as final year project. but i also try to add more things... and i try to make it for a class room where the student and teacher separately count and total persons too. and for teachers count use a keypad. and also give me some idea which is possible to add in mine project..

    Jun 02, 2016
  • shiva's picture
    shiva

    hey, i made this project and i saw that the led that is operating through the relay glows when the relay goes LOW and vice versa. I checked my hardware and the wiring. Why is that?

    Jun 17, 2016
  • Abhishek's picture
    Abhishek

    You must have interchanged the NC and NO, please check.

    Jul 09, 2016
  • charlei's picture
    charlei

    please send me the program you used while codding coz am having troubles with ir sensors ,they are counting the no of people in the room continously
    thnks

    Jul 12, 2016
  • naibin paul's picture
    naibin paul

    Sir pls send code

    Jul 19, 2016
  • hareesh tm's picture
    hareesh tm

    Can you please get me the modified code for counting the total number of persons entered in the room for a particular period.?

    Jul 20, 2016
  • Maddy's picture
    Maddy

    @charlei @naibin and @hareesh: The code given is full and complete, please go through the above comments, some people modified the code accordingly and you can also modify the code according to your need.

    Aug 20, 2016
  • Sk.Kamrul Hassan's picture
    Sk.Kamrul Hassan

    Sir,
    I am from Bangladesh, we have a problem with electricity in our country.
    Can u help me to save last status in epprom at ATMEGA328 ? If you pls send me..

    Aug 10, 2016
  • Ej's picture
    Ej

    Sir, Can I use IR collision sensor in this project?

    Aug 24, 2016
  • Abhishek's picture
    Abhishek

    Yes

    Sep 17, 2016
  • syket's picture
    syket

    i can not find ir module in proteus please help me

    Sep 25, 2016
  • Riku's picture
    Riku

    Sir can you send me all detail about this project like source code, component and etc because i want make this project for project last year for my college

    Sep 28, 2016
  • Abhishek's picture
    Abhishek

    All the components, circuit, code are already given in the project, please check.

    Oct 06, 2016
  • komal patole's picture
    komal patole

    what is the use of relay in bidirectional visiter counter and do you have any new programming for the same circuit .and what is the meaning of in and out in the program

    Sep 28, 2016
  • Abhishek's picture
    Abhishek

    Relay is to operate any AC appliances instead of LED, while some one is passing through.

    Oct 06, 2016
  • lewis's picture
    lewis

    what if two people enters the door at time?

    Sep 29, 2016
  • Riku's picture
    Riku

    Sir plz send me correct code ,no ic arduino uno

    Sep 30, 2016
  • AMANJEET's picture
    AMANJEET

    Sir, how will the code change accordingly if I use microcontroller 8051 in place of aurdino board.please suggest me if there is modification needed on this program.

    Oct 22, 2016
  • sonu's picture
    sonu

    did this project work i want the complete data of this project

    Nov 03, 2016
  • Jonas Dautel's picture
    Jonas Dautel

    hey i created a ne verison ofyour code just place it into your exciting code ..it will count the people WARNING the pins i used for the sensors ar 3 and 4 . 3 is the one you pass first wen you go in :
    boolean sensor1 = false ;
    boolean sensor2 = false ;
    int count = 0 ;

    void setup() {
    // put your setup code here, to run once:
    pinMode(3, INPUT);
    pinMode(4, INPUT);
    pinMode(2, OUTPUT);
    }

    void loop() {
    // put your main code here, to run repeatedly:
    delay (200);
    sensor();
    if (sensor1 == true) {
    S1();
    }
    //if (sensor2 == true){
    // S2();
    //}
    }
    void sensor() {
    if (digitalRead(3) == HIGH) {
    sensor1 = true;
    }
    else if (digitalRead(3) == LOW) {
    sensor1 = false;
    }
    if (digitalRead(4) == HIGH) {
    sensor2 = true;
    }
    else if (digitalRead(4) == LOW) {
    sensor2 = false;
    }
    else {
    loop();}
    }
    void S1() {
    while (sensor1 == true && sensor2 == false) {
    sensor();
    }
    if (sensor1 == false && sensor2 == false) {

    }
    else if (sensor1 == true && sensor2 == true) {
    S1S2();
    }
    else {
    loop();
    }
    }
    void S1S2() {
    while (sensor1 == true && sensor2 == true) {
    sensor();
    }
    if (sensor1 == false && sensor2 == true){
    S2F();
    }
    else if (sensor1 == true && sensor2 == false){
    S1();
    }
    else {
    loop();
    }
    }

    void S2F() {
    while (sensor2 == true && sensor1 == false){
    sensor();
    }
    if (sensor2 == false && sensor1 == false){
    count = count + 1;
    loop();
    }
    else if (sensor1 == true && sensor2 == true){
    S1S2();
    }
    else {
    loop();
    }

    }
    void S2() {
    while (sensor2 == true && sensor1 == false) {
    sensor();
    }
    if (sensor1 == false && sensor2 == false) {

    }
    else if (sensor1 == true && sensor2 == true) {
    S2S1();
    }
    else {
    loop();
    }
    }
    void S2S1() {
    while (sensor2 == true && sensor1 == true) {
    sensor();
    }
    if (sensor2 == false && sensor1 == true){
    S1F();
    }
    else if (sensor2 == true && sensor1 == false){
    S2();
    }
    else {
    loop();
    }
    }

    void S1F() {
    while (sensor1 == true && sensor2 == false){
    sensor();
    }
    if (sensor1 == false && sensor2 == false){
    count = count - 1;
    loop();
    }
    else if (sensor2 == true && sensor1 == true){
    S1S2();
    }
    else {
    loop();
    }

    }

    Nov 08, 2016
  • hema's picture
    hema

    do the same circuit sufficient for your new program???

    Jan 21, 2017
  • Sananda's picture
    Sananda

    Sir what exactly does your modified code do? And how did you implement it physically like did you place two sensors at the same door at some distance to track the count? Also, can the sensors be deployed vertically on the ceiling instead of horizontally?

    Feb 03, 2017
  • SAMI ULLAH's picture
    SAMI ULLAH

    i am aren't able to understand your code . please can you add the fuctionality of lcd so that the counted person can be displayed on lcd . please i neeed it as early as possible because i am giong to sumbit my project within this week at uni

    Feb 23, 2017
  • Ei Htwe's picture
    Ei Htwe

    if two persons enter at the time, can this circuit count the correct number.

    Nov 09, 2016
  • ebenezer's picture
    ebenezer

    pls check and send the full program and step by step process in cricuit diagram how to fix in everything

    Nov 09, 2016
  • Andrews's picture
    Andrews

    Sir relay connections probs but i have given the conection for relay as u did but the lcd shows values correctly but led is not turning on and telay not working

    Nov 11, 2016
  • BRAHMAREDDY's picture
    BRAHMAREDDY

    IN RELAY NO OR NC WHICH IS GIVEN TO GROUND PLEASE GIVE ME REPLY URGENTLY

    Nov 14, 2016

Pages

Leave a comment