People or Visitor counters are pretty famous embedded application that was widely used in places like theaters, malls, Transport stations and so. High end counters uses sophisticated hardware to do the process of counting. Today we are about to see building of simple Visitor counter project using Arduino which uses IR as a tool for sensing people. This project can also be used to count objects as well provided that the surface of the object capable of reflecting IR signal.
PARTS REQUIRED:
- Arduino Uno
- IR sensor Module
- LCD display
- Connecting Wires
IR SENSOR MODULE:
IR sensor module uses IR signal to detect the people entering through a pathway or entrance. This was done by sending a Pulse of IR signal from IR LED and detecting the reflected signal by using a photodiode. The IR signal will get only reflected back when there is a people or object going through that path. The module you are seeing above is bought from a local merchant and gives out high logic 1 when reflected signal is detected. You can buy from any online store or make one on your own, this tutorial “Making your own IR sensor” might help you.
DESIGN:
Take a look at the given design of Visitor counter project using Arduino. Here the IR sensor output was connected to the external interrupt pin 2 of the Arduino. So whenever the sensor gives output high Arduino increases the count by 1. A 16×2 LCD was used as a display here for the number of visitor counts. A pull down resistor was used to keep the output low when there is no people encountered by the sensor.
ALGORITHM TO CODE:
- Initialize LCD display to print your data.
- Set up external interrupt on either pin 2 or 3 of the arduino with suited mode for your sensor.
- Write the ISR routine to increase the count by 1 whenever an interrupt is encountered.
- Display the count value in the LCD for the user.
CODE:
#include <LiquidCrystal.h> LiquidCrystal lcd(8, 7, 6, 5, 4, 3); unsigned int count=0; char converted_value[6]; void setup() { lcd.begin(16, 2); lcd.print("Number of People:"); attachInterrupt(digitalPinToInterrupt(2), counter,HIGH); //Initializing external interrupt } void loop() { lcd.setCursor(0,1); lcd.print(converted_value); //Printing count values } void counter() { count++; //Incrementing visitor count sprintf(converted_value,"%d",count); //int to char conversion }
NOTE:
- Make sure to understand all the specs of sensor if you are going to buy, since they might vary in their output ( active low or active high).
- Make sure to allow people or objects to pass through within the range of the sensor.
- Also only certain objects reflect IR signals back, make sure your object does if you are about to use this project to count objects.
there is a big mistake in this project you can not add crcuit diagram
This circuit is tested.
Hello all, I am very new at this and I have started a beer can counter project using this code. Everything is working except that the IR is counting 2 for a motion towards the sensor and 2 for motion away from it which is creating an incorrect total for object counting. Can anyone assist with this?
Thanks
Hi Draydn,
Well there are number of reasons the system could act this way. The system relies on beer can reflecting the IR signal correctly without any interruptions. Black colored bodies won’t do well in reflecting IR signals. By any chance your beer can or any part of beer can is black in color. There are other possibilities as well but at this point I can only speculate about the reasons. By there is a work around you could try. You could add a line
“count=count/2;”
which basically divides the counter by 2 which in your case will give you the correct beer cans passed through the sensor.
Hope it helps
Hello can you send the full code with adding “count=count/2;” because Im bad in progamming and Im not really sure where to place it
digitalPinToInterrupt(2), counter,HIGH …. dosen’t work why???
Can this counter count mutiple people entering at the same time accurately? Because the sensor can detect a group of people as one only…
No this won’t be effective in your scenario.