In tall plaza the driver has to wait for the payment process either it may be cash or debit/credit card. So it will takes 30 sec to 180 seconds per vehicle for cash payment and it takes 15 seconds to 90 seconds in case of debit / credit card. Now in India there is a new technology for tall payment by using FASTAG. It pays online payment without stopping the vehicle at tall plaza. Lets see about FASTAG and the model of FASTAG using Arduino board.

What is FASTAG?

FASTag is a simple to use, reloadable tag which enables automatic deduction of toll charges and lets you pass through the toll plaza without stopping for the cash transaction. FASTag is linked to a prepaid account from which the applicable toll amount is deducted. The tag employs Radio-frequency Identification (RFID) technology and is affixed on the vehicle’s windscreen after the tag account is active.

 FASTag is a perfect solution for a hassle free trip on national highways.


FASTag is read by the tag reader at the toll plaza. The toll amount is deducted automatically, when the vehicle approaches the toll plaza. The vehicle with FASTag doesn’t need to stop at the toll plaza for the cash transaction

SMS alerts and Online facility

Customer will receive SMS alerts on his registered mobile numbers for all the transactions done in his tag account. Customer may recharge his tag account online through, Credit Card/ Debit Card/ NEFT/ RTGS or Net Banking so Customer doesn’t need to worry about carrying cash for the toll payments. Customers can access their statements by logging on the FASTag customer portal

How this model works?

In this project we have used RF Tag and RF Reader in place of FASTAG and FASTAG Reader. When any vehicle with RF tag comes near the tall plaza, the RF reader will read the rf tag number. If it is an authenticated (tag number should be in the coding), the barrier openes and the vehicle will cross the barrier. When the vehicle crosses the IR TX-RX module completely, the barrier will be closed. In case of standing of vehicle in front of IR sensor the barrier will not closed. It is for safety purpose.

When any vehicle without rf tag or unregistered number (low balance or zero balance), the barrier will not open and the driver has to change the another lane for payment via cash or bank card.

In short, without stopping in front of the tall plaza barrier the bank deducts the toll amount before reaching the barrier and the barrier opens and then vehicle crosses the barrier. So it will save the time and fuel. The red led and green led are the signal leds for indication of barrier position either open or close.

Component used in the project

  1. Arduino uno
  2. USB cable for Arduino board power
  3. servo motor
  4. RF Reader
  5. RF TAG 2 or more
  6. Green LED (5 mm) 1
  7. Red LED (5 mm) 1
  8. Resistor 330 ohm 2
  9. TCRT 5000 IR TX-RX Sensor Modulle
  10. Female to Female Jumpers 10 pc
  11. Straw Pipe for barrier
  12. 4″x4″ PVC electrical case for servo motor fitting or servo motor clamp
  13. Toy cars 2
  14. wonder tape with two side gum

Program :

 * This coding for 0 to 90 degree for servo motor
 * In case of reverse change the degree from 90 to 180 
 * or 180 to 90 as per servo placed in socket 
#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>
Servo myservo;  // create servo object to control a servo
// twelve servo objects can be created on most boards
int pos = 0;    // variable to store the servo position
const int red = A3;   //define red led
const int grn = A2;  //define green led
const int ir = A0; //pir sensor is sonnected at pin A0
#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);   // Create MFRC522 instance.
void setup() 
  Serial.begin(9600);   // Initiate a serial communication
  SPI.begin();      // Initiate  SPI bus
  mfrc522.PCD_Init();   // Initiate MFRC522
  Serial.println("Approximate your card to the reader...");
  pinMode(ir,INPUT); //pir output pin is connected to A0 pin of an Arduino
  pinMode(red, OUTPUT); 
  pinMode(grn, OUTPUT);
  digitalWrite(red, HIGH); // turn the LED on 
  digitalWrite(grn, LOW); // turn the LED off 
  myservo.attach(6);  // attaches the servo on pin 9 to the servo object
void loop() 
  // Look for new cards
  if ( ! mfrc522.PICC_IsNewCardPresent()) 
  // Select one of the cards
  if ( ! mfrc522.PICC_ReadCardSerial()) 
  //Show UID on serial monitor
  Serial.print("UID tag :");
  String content= "";
  byte letter;
  for (byte i = 0; i < mfrc522.uid.size; i++) 
     Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
     Serial.print(mfrc522.uid.uidByte[i], HEX);
     content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
     content.concat(String(mfrc522.uid.uidByte[i], HEX));
  Serial.print("Message : ");
  if (content.substring(1) == "7B 08 EA 1A") //change here the UID of the card/cards that you want to give access
    digitalWrite(red, LOW); // turn the LED on 
    digitalWrite(grn, HIGH); // turn the LED off 
    Serial.println("Authorized access");
    //val = digitalRead(pir);    // read sensor value
    while (digitalRead(ir)==HIGH);
    while (digitalRead(ir)==LOW);
    digitalWrite(red, HIGH); // turn the LED on 
    digitalWrite(grn, LOW); // turn the LED off 
 else   {
    Serial.println(" Access denied");

The author admin

Leave a Response