ESP8266IoT Projects

IoT Based Bidirectional Visitor Counter using ESP8266 & Blynk

IoT Based Visitor Counter using NodeMCU & IR Sensor

Overview: IoT based Visitor Counter

Today in this project, will make IoT Based Bidirectional Visitor Counter using NodeMCU ESP8266 & Blynk IoT cloud. This project is useful for monitoring the total number of visitors entering, exiting, and current visitors available from any part of the world using the Blynk IoT cloud platform. Infrared or IR Sensors are used to count the total number of incoming and outcoming visitors. The Visitors’ data is uploaded automatically to Blynk cloud using the NodeMCU ESP8266 Wi-Fi Module.

You can use this ESP8266 NodeMCU based IoT Bidirectional Visitor counter in the hall, shopping mall, office entrance gate to count the total number of visitors. This device counts the total number of visitors entering through the gate & also counts the total number of visitors exiting through the different gates. Basically, it calculates the total number of current visitors by subtracting the outgoing visitor from the incoming visitor. When a single person enters the room, the light turns on automatically. Whenever there are no visitors present in the room, the light turns off automatically.

Previously, we have made the Visitor Counter Project using Arduino & OLED Display. But this time we will send the data to the Blynk cloud instead of simply watching it on OLED Display. 

IoT Based Bidirectional Visitor Counter using ESP8266 Demo

Components Required

We can make this IoT Bidirectional Visitor Counter using ESP8266 Wi-Fi Module, a pair of IR Sensor, SSD1306 OLED Display, and a Relay Module. The list of components that you need for creating an IoT Bidirectional Visitor Counter is as follows. 

S.NComponents NameDescriptionQuantityGet Products from Amazon
1NodeMCUESP8266 12E Board1
2IR SensorIR Infrared Sensor Module2
3OLED Display0.96" I2C OLED Display1
4Relay Module5V 1 Channel Relay Module1
5Jumper WiresJumper Cables breadboard friendly20
6BreadboardMini Breadboard1

Learn more about IR sensors as Visitor Detectors from our previous post.

IoT Bidirectional Visitor Counter Circuit or Schematic

The Circuit Diagram for IoT Bidirectional Visitor Counter using NodeMCU ESP8266 is very simple. I designed the circuit diagram for this project using Fritzing Software.

Circuit Diagram of IoT Based Bidirectional Visitor Counter using ESP8266 & Blynk

Connect the I2C Pins (SDA & SCL) of 0.96″ SSD1306 OLED Display with NodeMCU D2 & D1 Pins. Interface the output pin of the pair of IR Sensors to the D5 & D6 pin of NodeMCU. We will use one of the IR Sensors in the Entrance gate for counting incoming visitors and the other in the exit gate for counting the outgoing visitor. Similarly, connect a 5V Relay Module to the D4 Pin of ESP8266. Both the IR Sensors and Relay Module works at 5V VCC. You can supply a 5V power supply from a NodeMCU Vin pin.

PCB Designing & Ordering

You can simply assemble the circuit on a breadboard. But if you don’t want to assemble the circuit on a breadboard, you can follow this schematic and build your own PCB. You can download the Gerber file of my PCB Design from the link attached below. The PCB looks like the image shown below.

IoT Based Bidirectional Visitor Counter Gerber file

I provided the Gerber File for IoT Based Bidirectional Visitor Counter with Automatic Light Control system PCB below.

You can simply download the Gerber File and order your custom PCB from PCBWay

PCBWay website

Visit the PCBWay official website by clicking here: Simply upload your Gerber File to the Website and place an order. The reason behind most of the people trusting PCBWay for PCB & PCBA Services is because of their quality. The PCB quality is superb and has a very high finish, as expected.

IoT Visitor counter PCB

More Interesting Projects

Setting Up Blynk Application

We need to set up the Blynk App to receive the Visitor Counter data from the ESP8266 NodeMCU board. To set up Blynk Application, Download & Install the Application on your smartphone. Available in both Android PlayStore and IOS AppStore. Open the App & create a New Account using your email address.

  • Click on create a new project
  • Provide the Name of your project as “IoT Visitor Counter
  • Choose NodeMCU Dev Board
  • Select connection type as Wi-Fi, then click on Create Button.
  • They sent the Blynk authentication token to your email address. (We need it later on programming)
IoT Based Bidirectional Visitor Counter
  • Now, click on the (+) icon at the top right corner of the screen.
  • Search for the “Value Display” widget and add 3 of them to your main screen.
  • Also, add Super Chart Widget to the main screen.
  • Click on the First Value Display.
  • Name it as “Visitors Now
  • Set the Input Pin to Virtual Pin V3, Enter input Range & Choose the refresh rate as 1sec.
  • You can set colors and fonts size according to your need.
Visitors In settings

Similarly, do the same for Visitors In, Out with the help of the images below.

  • Visitors In settings
  • Visitors Out settings
  • Visitors Now settings
  • Blinking LED on Blynk app

Now, click on the Super Chart widget and Name it as “Visitors Graphs” Add three datastream as Visitors In, Out, and Now with their respective virtual pins.

Visitors graph superchart

Finally, the Blynk App setup for IoT Bidirectional Visitor Counter using NodeMCU ESP8266 is completed.

IoT Bidirectional Visitor Counter using Blynk App

Also Read:

Home Automation with Arduino IoT Cloud using ESP8266

IoT Based Pulse Oximeter Using ESP8266 & Blynk

Source Code/Program

The Source Code for ESP8266 based  IoT Bidirectional Visitor Counter and Automatic Light Control System is given below. The code requires SSD1306 & Adafruit GFX library & Blynk Library for compilation. First, download the required libraries and add them to the Arduino IDE.

From this code part, change the Wi-Fi SSID, Password & Blynk Authentication Token. Use the same API Token sent to your email address. You can now copy the code and upload it to the NodeMCU ESP8266 Board.

char auth[] = "xxxxx-xxxxx-xxxx";       // You should get Auth Token in the Blynk App.
char ssid[] = "xxxxx-xxxxx-xxxx";                       // Your WiFi credentials.
char pass[] = "xxxxx-xxxxx-xxxx";

Final Program Code for IoT based Bidirectional Visitor Counter & Automatic Light Control using NodeMCU.

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Blynk.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#define SCREEN_WIDTH 128    // OLED display width, in pixels
#define SCREEN_HEIGHT 64    // OLED display height, in pixels
#define OLED_RESET -1       // Reset pin # (or -1 if sharing Arduino reset pin)

char auth[] = "xxxxx-xxxxx-xxxx";       // You should get Auth Token in the Blynk App.
char ssid[] = "xxxxx-xxxxx-xxxx";                       // Your WiFi credentials.
char pass[] = "xxxxx-xxxxx-xxxx";
#define inSensor 14 //D5
#define outSensor 12 //D6
int inStatus;
int outStatus;
int countin = 0;
int countout = 0;
int in;
int out;
int now;
#define relay 0 //D3
WidgetLED light(V0);
void setup()
  Blynk.begin(auth, ssid, pass);
  delay(1000);  // wait a second
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //initialize with the I2C addr 0x3C (128x64)
  pinMode(inSensor, INPUT);
  pinMode(outSensor, INPUT);
  pinMode(relay, OUTPUT);
  digitalWrite(relay, HIGH);

  Serial.println("Visitor Counter Demo");
  display.setCursor(20, 20);
  display.setCursor(20, 40);
void loop()
{; // Initiates Blynk
  inStatus =  digitalRead(inSensor);
  outStatus = digitalRead(outSensor);
  if (inStatus == 0)
    in = countin++;
  if (outStatus == 0)
    out = countout++;
  now = in - out;
  if (now <= 0)
    digitalWrite(relay, HIGH);;
    display.setCursor(0, 15);
    display.print("No Visitor");
    display.setCursor(5, 40);
    display.print("Light Off");
    Serial.println("No Visitors! Light Off");
    digitalWrite(relay, LOW);
    display.setCursor(15, 0);
    display.print("Current Visitor");
    display.setCursor(50, 15);
    display.setCursor(0, 40);
    display.print("IN: ");
    display.setCursor(70, 40);
    display.print("OUT: ");
    Serial.print("Current Visitor: ");
    Serial.print("IN: ");
    Serial.print("OUT: ");
  Blynk.virtualWrite(V1, in); // Visitors In
  Blynk.virtualWrite(V2, out); // Visitors Out
  Blynk.virtualWrite(V3, now); // Current Visitors

Testing IoT ESP8266 Based Visitor Counter Project

The above code for the ESP8266 based IoT visitor counter with Blynk fulfills all the requirements of the project. You can upload the code to the ESP8266 Wi-Fi Module. Once you upload the code, the ESP8266 board will connect to the Blynk Cloud using your Wi-Fi Network. Once it connects to the network, you can open the Serial Monitor. You can simply check all the details on Serial Monitor.

IoT Based Bidirectional Visitor Counter Serial Monitor

The Serial Monitor will display the connection status of the Wi-Fi Network along with the IP Address. If there is a successful Wi-Fi connection and a further connection to Blynk IoT Cloud. It will update automatically the data after every 1-second interval. The Serial Monitor will also display the number of visitors entering, exiting, current visitors & relay Status.

On the Hardware Part, when there are no visitors, the OLED Display will simply show “No Visitors Lights OFF”.

IR Sensor Based Visitor Counter IoT

Similarly, when someone enters the room, the light will turn on automatically and OLED Display shows the number of incoming, outgoing, and current visitors.

Monitoring Visitors Status Online on Blynk App

As soon as we connected the device to the Wi-Fi and Blynk server, you will see the data appearing on the Blynk App. Here you will see the data for visitors. So the data only changes when an event occurs. You will get a beautiful real-time dashboard as shown in the image below.

Home automation with visitor counter

Video Tutorial & Guide


So, that’s pretty much for this tutorial. I hope you enjoyed making your IoT Based Bidirectional Visitor Counter using ESP8266 & Blynk. If you did, don’t forget to share this article with your friends. Want help? let me know in the comment section below.

Related Articles


  1. just wonder how to use it in real world. If I would like to place it in school bus which has two entry door and exit door. Ideally one esp8266 with two IR sensors which the exit checking sensor needs to have long wiring from entry door to exit door( 1-3 metres). Or using two esp8266 communicate together for checking in-out visitor?

  2. can u please share the code for restriction in number of people can enter into the hall and number of seats available

  3. can i get full circuit diagram with relay connection to light and NodeMCU ? cause i cannot see your connection Light (LED) relay with Node MCU.

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button