Overview
The project aims to design an “Exam Room Guide” by which students can be guided for exams based on the confusion system. Radio Frequency Identification (RFID) card readers provide a low-cost solution for reading passive RFID transponder tags up to 2 inches away. RFID card readers can be used in a wide variety of hobby and commercial applications, including access control, automatic identification, robotic navigation, inventory tracking, payment systems, and car immobilization.
The RFID card reader reads the RFID tag in the range and generates the unique identification code of the tag at a rate of 9600 baud. The data from the RFID reader can be interconnected to be read by a microcontroller or PC. The project is designed in such a way that the RFID reader will interface with the controller through serial communication techniques.
Here we consider 4 RFID cards to be assigned to 4 students, so each and every student will have a separate card. Whenever the reader reads a card, the controller will receive the card information and compare it to the preset values and then the corresponding assigned seat for the student will be displayed on the LCD screen that will interface with the controller. Here in this project, we will develop the frontend application on PC using VB .net to mix the student seating arrangements. The PC will also interface with the controller through serial communication.
This project uses a regulated 5V 500mA power supply. Unregulated 12 V DC is used for the relay. The 7805 three-terminal voltage regulator is used to regulate voltage. The full-wave bridge rectifier is used to rectify the secondary AC output of the 230 / 12V step-down transformer.
BLOCK DIAGRAM
TECHNICAL SPECIFICATIONS
HARDWARE
- Arduino (ATMEGA328)
- LCD
- RFID
POWER SUPPLY
- Transformer : 12V step down
- Filter : 1000uf/25V
- Voltage Regulator : 7805 / 7812
SOFTWARE
- ARDUINO IDE
- PROTEUS
Bill of Materials
Arduino UNO
This is the new Arduino Uno R3. In addition to all the features of the previous board, the Uno now uses an ATmega16U2 instead of the 8U2 found in the Uno (or the FTDI found in previous generations). This allows for faster transfer speeds and more memory. No drivers are needed for Linux or Mac (the inf file is needed for Windows and is included in the Arduino IDE), and the ability to make the Uno display as a keyboard, mouse, joystick, etc. As the Uno R3 also includes a plastic base plate to protect it!
The Uno R3 also adds SDA and SCL pins alongside the AREF. Also, there are two new pins placed near the RESET pin. One is the IOREF which allows the screens to adapt to the voltage supplied from the board. The other is not connected and is reserved for future purposes. The Uno R3 works with all existing shields but can be retrofitted to new shields that use these additional pins.
Arduino is an open-source physical computing platform based on a simple I / O board and development environment that implements the processing/wiring language. Arduino can be used to develop independent interactive objects or it can be connected to your computer software (eg Flash, Processing, MaxMSP). The open-source IDE is free to download (currently for Mac OS X, Windows, and Linux).
16 × 2 standard LCD screen
Do you want to add an interface to your project? Use the standard 16 × 2 alphanumeric LCD display, they are extremely common and a quick way for your project to display status messages.
An LCD (liquid crystal display) screen is an electronic display module and has a wide range of applications. A 16 × 2 LCD screen is a very basic module and is very commonly used in various devices and circuits.
A 16 × 2 LCD screen means that it can display 16 characters per line and there are 2 of those lines. On this LCD screen, each character is displayed in a 5 × 7 pixel matrix. The intelligent 16 x 2 alphanumeric dot matrix display is capable of displaying 224 different characters and symbols. This LCD display has two registers, namely Command and Data. The command register stores various commands given to the screen.
The data log stores the data to be displayed. The process of controlling the display involves placing the data that makes up the image of what you want to display in the data registers and then placing the instructions in the instruction register. In your Arduino project, the Liquid Crystal Library simplifies this so you don’t need to know the low-level instructions. The display contrast can be adjusted by adjusting the potentiometer that will be connected through the VEE pin.
General specifications
Minimum logic voltage: | 4.5 V |
Maximum logic voltage: | 5.5 V |
Typical LED backlight voltage drop: | 4.2 V |
Typical LED backlight current: | 120 mA |
Supply current: | 2 mA |
Pinout
Pin | Symbol | Function |
1 | Vss | ground (0 V) |
2 | Vdd | 5 V logic supply voltage |
3 | Vo | contrast adjustment |
4 | RS | H/L register select signal |
5 | R/W | H/L read/write signal |
6 | E | H/L enable signal |
7-14. | DB0 – DB7 | H/L data bus for 4- or 8-bit mode |
15 | A (LED+) | backlight anode |
16 | K (LED-) | backlight cathode |
Introduction about RFID
Radio Frequency Identification (RFID) is a wireless identification technology that uses radio waves to determine the presence of RFID tags. Like a barcode reader, RFID technology is used to identify the presence of people, things, etc.
In barcode technology, we need to optically scan the barcode by placing it in front of the reader, while in RFID technology we only need to make the RFID tags accessible to the readers. In addition, barcodes can be damaged or cannot be read, which is not the case with most RFID devices.
RFID is used in many applications, such as an attendance system, where each person will have their own separate RFID tag that will help identify the person and their attendance.
RFID is used in many companies to provide access to their authorized employees.
It is also useful to track goods and in the automatic toll collection system on the highway by including a label (which has a unique identification) on it.
RFID based system has two basic elements
- RFID Tag:
The RFID tag includes a microchip with a radio antenna mounted on a substrate that carries a 12 Byte unique Identification number.
- RFID Reader:
It is used to read the unique identification of RFID tags. Whenever RFID tags are within range, the RFID reader reads their unique identification and transmits it serially to the microcontroller or PC. The RFID reader has a transceiver and antenna mounted on it. It is mainly fixed in a stationary position.
Basically, RFID systems are classified as active and passive based on how they are powered and their scope.
Active RFID system
Active RFID tags have their own transmitter and power supply (most are battery powered). They operate at 455 MHz, 2.45 GHz, or 5.8 GHz, and typically have a reading range of 60 feet to 300 feet (20 meters to 100 meters).
Passive RFID system
Passive RFID tags do not have a transmitter, they simply reflect the energy (radio waves) that comes from the antenna of the RFID reader. They operate in the low-frequency band (~ 125 KHz) and in the high-frequency band (~ 13 MHz) and have a limited read range of up to ~ 1 m.
There are two coupling modes for communication used in RFID such as,
Inductive coupling, in which the RFID reader emits a magnetic field and each time the RFID tags enter the magnetic field, it creates an energy response from the RFID tags and is detected by the RFID reader. Since the magnetic field drops sharply with distance, it is used for short-distance applications.
Capacitive coupling, where the reader emits electromagnetic waves and whenever those waves encounter RFID tags, the RFID tag reflects the signal that contains identifying information.
How does the RFID system work?
The RFID reader has a transceiver that generates a radio signal and transmits it through an antenna. This signal itself is in the form of energy that is used to activate and power the tag.
When the RFID tag enters the range of the signal transmitted by the reader, the tag’s transponder receives this signal. A tag draws energy from the electromagnetic field created by the reader. The transponder then converts that radio signal into usable energy. After receiving power, the transponder sends all the information it has stored in it, such as unique identification, to the RFID reader in the form of an RF signal. The RFID reader then places this unique identification data in byte form on the serial Tx (transmit) pin. This data can be used or accessed by a PC or serial microcontroller using UART communication.
There are various RFID readers available based on their frequency shown below,
EM18 RFID Reader
EM18 is an RFID reader that is used to read 125 kHz frequency RFID tags.
After reading the tags, it transmits a unique identification serially to the PC or microcontroller by UART communication or Wiegand format on the respective pins.
The RFID reader EM18 reads the data from the RFID tags that contain the stored identification which is 12 bytes.
The EM18 RFID reader does not require a line of sight. In addition, it has an identification range that is short, that is, in a few centimetres.
Features of the EM-18 RFID reader:
- RS232 / TTL serial output
- The operating frequency is 125KHz.
- The range is 5-8 cm.
Final code
//////////// Exam Room Guide Using RFID ////////////////////
#include <SoftwareSerial.h>
#include <LiquidCrystal.h>
#include <string.h>
#define rxPin 8
#define txPin 9
SoftwareSerial RFID( rxPin, txPin );
// Set up outputs
#define ledPin 13
char s1[12] = "$0004453220";
char s2[12] = "$0004480555";
char s3[12] = "$0256481519";
String buf1;//stringTwo;
int i,j=0,k=0,l=0,total=0;
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
void setup() {
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
Serial.begin(9600); // Serial port for connection to host
RFID.begin(9600); // Serial port for connection to RFID module
Serial.println("RFID Reader Initialized");
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print(" EXAMINATION");
lcd.setCursor(0, 1);
lcd.print("ROOM INFORMATION");
delay(2000);
lcd.clear();
lcd.print("ROLL NO. ");
lcd.setCursor(0, 1);
lcd.print("");
}
void loop() {
if(RFID.available())
{
delay(100);
buf1 = String(RFID.readString());
Serial.println(buf1);
for(i=0;i<12;i++)
{
if(buf1[i]==s1[i])j++;if(buf1[i]==s2[i])k++;if(buf1[i]==s3[i])l++;
delay(5);
}
if((j>0)&&(j<9))j=0;if((k>0)&&(k<9))k=0;if((l>0)&&(l<9))l=0;
if(j>=11)
{
lcd.setCursor(10, 0);
lcd.print("1");
lcd.setCursor(0, 1);
lcd.print("RM NO.2, 1st ROW");
j=0;
}
if(k>=11)
{
lcd.setCursor(10, 0);
lcd.print("2");
lcd.setCursor(0, 1);
lcd.print("RM NO.5, 4th ROW");
k=0;
}
if(l>=11)
{
lcd.setCursor(10, 0);
lcd.print("3");
lcd.setCursor(0, 1);
lcd.print("RM NO.3, 6th ROW");
l=0;
}
}
}