Finger Print Based Electronic Voting Machine
Finger Print Based Electronic Voting Machine
Finger Print Based Electronic Voting Machine
CHAPTER 1
OVERVIEW OF THE EMBEDDED SYSTEMS
4. The program instructions for embedded systems run with limited computer hardware
resources, little memory and small or even non-existent keyboard or screen.
There are many definitions of embedded system but all of these can be combined into a
single concept. An embedded system is a special purpose computer system that is used for
particular task.
The versatility of the embedded computer system lends itself to utility in all kinds of
enterprises, from the simplification of deliverable products to a reduction in costs in their
development and manufacture. Complex systems with rich functionality employ special
operating systems that take into account major characteristics of embedded systems. Embedded
operating systems have minimized footprint and may follow real-time operating system
specifics.
The special computers system is usually less powerful than general-purpose systems, although
some expectations do exist where embedded systems are very powerful and complicated.
Usually a low power consumption CPU with a limited amount of memory is used in embedded
systems. Many embedded systems use very small operating systems; most of these provide very
limited operating system capabilities.
Since the embedded system is dedicated to specific tasks, design engineers can
optimize it, reducing the size and cost of the product, or increasing the reliability and
performance. Some embedded systems are mass-produced, benefiting from economies of scale.
Some embedded systems have to operate in extreme environment conditions such as very high
temperature & humidity.
For high volume systems such as portable music players or mobile phones, minimizing cost is
usually the primary design consideration. Engineers typically select hardware that is just ―good
enough‖ to implement the necessary functions.
For low volume or prototype embedded systems, general purpose computers may be adapted by
limiting the programs or by replacing the operating system with a real-time operating system.
• Multi-rate operation;
Application Software
Operating System
H/W
The operating system runs above the hardware and the application software runs above the
operating system. The same architecture is applicable to any computer including desktop
computer. However these are significant differences. It is not compulsory to have an operating
system in every embedded system. For small applications such as remote control units, air
conditioners, toys etc.
Some of the most common embedded systems used in everyday life are
(e.g., thermostats)
Embedded networks
Signal processing: Often use DSP chips for vision, audio, or other signal
Embedded PCs: Palmtop and small form factor PCs embedded into
Equipment
Command and control: Often huge military systems and ―systems of systems‖
Computers)
Home Appliances, intercom, telephones, security systems, garage door openers, answering
machines, fax machines, home computers, TVs, cable TV tuner, VCR, camcorder, remote
controls, video games, cellular phones, musical instruments, sewing machines, lighting control,
paging, camera, pinball machines, toys, exercise equipment
Office Telephones, computers, security systems, fax machines, microwave, copier, laser printer,
color printer, paging
Auto Trip computer, engine control, air bag, ABS, instrumentation, security system,
transmission control, entertainment, climate control, cellular phone, keyless entry
Ex A web camera is connected to the internet. Camera can send pictures in real time to any
computers connected to the internet
4. Mobile devices:-
Actually it is a combination of both VLSI and Embedded System
Mobile devices such as Mobile phone, Personal digital assistants, smart phones etc are
special category of embedded systems
CHAPTER 2
ARM LPC214x
2.1. LPC214x
General description:
requirement, such as access control and point-of-sale. Serial communications interfaces ranging
from a USB 2.0 Full-speed device, multiple UARTs, SPI, SSP to I2C-bus and on-chip SRAM of
8 kB up to 40 kB, make these devices very well suited for communication gateways and protocol
converters, soft modems, voice recognition and low end imaging, providing both large buffer
size and high processing power. Various 32-bit timers, single or dual 10-bit ADC(s), 10-bit
DAC, PWM channels and 45 fast GPIO lines with up to nine edge or level sensitive external
interrupt pins make these microcontrollers suitable for industrial control and medical systems.
Processor: LPC2148
Dual Power supply (either through USB or using external power adapter).
Three on-board voltage regulators 1.8V, 3.3V and 5V with up to 800mA current
USB Ports.
EEPROM Interfacing.
On board UART.
Embedded ICE RT and Embedded Trace interfaces offer real-time debugging with the
on-chip Real Monitor software and high-speed tracing of instruction execution.
Two 32-bit timers/external event counters (with four capture and four compare channels
each), PWM unit (six outputs) and watchdog.
Low power Real-Time Clock (RTC) with independent power and 32 kHz clock input.
Multiple serial interfaces including two UARTs (16C550), two Fast I2C-bus (400 kbit/s),
SPI and SSP with buffering and variable data length capabilities.
• Known before becoming ARM as computer manufacture Acorn which developed a 32-bit
RISC processor for it‘s own use (used in Acorn Archimedes)
• ARM is one of the most licensed and thus widespread processor cores in the world
• Used especially in portable devices due to low power consumption and reasonable
performance (MIPS / watt)
• Several interesting extensions available or in development like Thumb instruction set and
Jazelle Java machine
ARM:
• consumption ratio
• Even tough ARM is mostly used as a processor core in SoC and other ASICs have some
manufacturers brought ARM based standard products to market
• Examples of manufacturers: Atmel, Cirrus Logic, Hyundai, Intel, Oki, Samsung, Sharp •
Most of the products are based on 7TDMI-core, some to 720Tand 920T-cores
• In addition, there are a number of ASSP (Application Specific Standard Product) -chips
available for example to communication applications (Philips VWS22100 = ARM7 based
GSM baseband chip).
time interrupt response from a small and cost-effective processor core. Pipeline techniques are
employed so that all parts of the processing and memory systems can operate continuously.
Typically, while one instruction is being executed, its successor is being decoded, and a third
instruction is being fetched from memory. The ARM7TDMI-S processor also employs a unique
architectural strategy known as Thumb, which makes it ideally suited to high-volume
applications with memory restrictions, or applications where code density is an issue.The key
idea behind Thumb is that of a super-reduced instruction set. Essentially, the ARM7TDMI-S
processor has two instruction sets:
• The standard 32-bit ARM set.
• A 16-bit Thumb set.
The Thumb set‘s 16-bit instruction length allows it to approach twice the density of
standard ARM code while retaining most of the ARM‘s performance advantage over a
traditional 16-bit processor using 16-bit registers. This is possible because Thumb code operates
on the same 32-bit register set as ARM code. Thumb code is able to provide up to 65 % of the
code size of ARM, and 160 % of the performance of an equivalent ARM processor connected to
a 16-bit memory system.The particular flash implementation in the LPC2141/42/44/46/48 allows
for full speed execution also in ARM mode. It is recommended to program performance critical
and short code sections (such as interrupt service routines and DSP algorithms) in ARM mode.
The impact on the overall code size will be minimal but the speed can be increased by 30% over
Thumb mode.
2.3.6. On-chip flash program memory
The LPC2148 incorporate a 512 KB flash memory system respectively. This memory
may be used for both code and data storage. Programming of the flash memory may be
accomplished in several ways. It may be programmed In System via the serial port. The
application program may also erase and/or program the flash while the application is running,
allowing a great degree of flexibility for data storage field firmware upgrades, etc. Due to the
architectural solution chosen for an on-chip boot loader, flash memory available for user‘s code
on LPC2141/42/44/46/48 is 32 kB, 64 KB, 128 KB, 256 KB and 500 KB respectively. The
LPC2141/42/44/46/48 flash memory provides a minimum of 100,000 erase/write cycles and 20
years of data-retention.
Features
• Measurement range of 0 V to VREF (2.0 V ≤ VREF ≤ VDDA).
• Each converter capable of performing more than 400,000 10-bit samples per second.
• Every analog input has a dedicated result register to reduce interrupt overhead.
• Burst conversion mode for single or multiple inputs.
Features
• 10-bit DAC.
• Buffered output.
• Power-down mode available.
• Selectable speed versus power.
stream and writes data to the appropriate end point buffer memory. The status of a completed
USB transfer or error condition is indicated via status registers. An interrupt is also generated if
enabled. A DMA controller (available in LPC2146/48 only) can transfer data between an
endpoint buffer and the USB RAM.
Features
• Fully compliant with USB 2.0 Full-speed specification.
• Supports 32 physical (16 logical) endpoints.
• Supports control, bulk, interrupt and isochronous endpoints.
• Scalable realization of endpoints at run time.
• Endpoint maximum packet size selection (up to USB maximum specification) by software at
run time.
• RAM message buffer size based on endpoint realization and maximum packet size.
• Supports SoftConnect and GoodLink LED indicator. These two functions are sharing one pin.
• Supports bus-powered capability with low suspend current.
• Supports DMA transfer on all non-control endpoints (LPC2146/48 only).
• One duplex DMA channel serves all endpoints (LPC2146/48 only).
• Allows dynamic switching between CPU controlled and DMA modes (only in LPC2146/48).
• Double buffer implementation for bulk and isochronous endpoints.
2.7. UARTs
The LPC2141/42/44/46/48 each contain two UARTs. In addition to standard transmit and
receive data lines, the LPC2144/46/48 UART1 also provide a full modem control handshake
interface. Compared to previous LPC2000 microcontrollers, UARTs in LPC2141/42/44/46/48
introduce a fractional baud rate generator for both UARTs, enabling these microcontrollers to
achieve standard baud rates such as 115200 with any crystal frequency above 2 MHz In addition,
auto-CTS/RTS flow-control functions are fully implemented in hardware (UART1 in
LPC2144/46/48 only).
Features
• 16 byte Receive and Transmit FIFOs.
• Register locations conform to ‗550 industry standard.
• Receiver FIFO trigger points at 1, 4, 8, and 14 bytes
• Built-in fractional baud rate generator covering wide range of baud rates without a need for
external crystals of particular values.
• Transmission FIFO control enables implementation of software (XON/XOFF) flow control on
both UARTs.
• LPC2144/46/48 UART1 equipped with standard modem interface signals. This module also
provides full support for hardware flow control (auto-CTS/RTS).
Register description
UART0 contains registers organized as shown in Table 4.4. The Divisor Latch Access
Bit (DLAB) is contained in U0LCR[7] and enables access to the Divisor Latches.
2.7.2. UART0 Receiver Buffer Register (U0RBR - 0xE000 C000, when DLAB = 0, Read
Only)
The U0RBR is the top byte of the UART0 Rx FIFO. The top byte of the Rx FIFO
contains the oldest character received and can be read via the bus interface. The LSB (bit 0)
represents the ―oldest‖ received data bit. If the character received is less than 8 bits, the unused
MSBs are padded with zeroes. The Divisor Latch Access Bit (DLAB) in U0LCR must be zero in
order to access the U0RBR. The U0RBR is always Read Only. Since PE, FE and BI bits
correspond to the byte sitting on the top of the RBR FIFO (i.e. the one that will be read in the
next read from the RBR), the right approach for fetching the valid pair of received byte and its
status bits is first to read the content of the U0LSR register, and then to read a byte from the
U0RBR.
UART0 Receiver Buffer Register (U0RBR - address 0xE000 C000, when DLAB = 0,
Read Only) bit description
UART0 Transmit Holding Register (U0THR - 0xE000 C000, when DLAB = 0, Write
Only) The U0THR is the top byte of the UART0 TX FIFO. The top byte is the newest character
in the TX FIFO and can be written via the bus interface. The LSB represents the first bit to
transmit.
The Divisor Latch Access Bit (DLAB) in U0LCR must be zero in order to access the U0THR.
The U0THR is always Write Only.
UART0 Transmit Holding Register (U0THR - address 0xE000 C000, when
DLAB = 0, Write Only) bit description
UART0 Divisor Latch Registers (U0DLL - 0xE000 C000 and U0DLM -C004, when
DLAB = 1)
The UART0 Divisor Latch is part of the UART0 Fractional Baud Rate Generator and
holds the value used to divide the clock supplied by the fractional prescaler in order to produce
the baud rate clock, which must be 16x the desired baud rate (Equation 1). The U0DLL and
U0DLM registers together form a 16 bit divisor where U0DLL contains the lower 8 bits of the
divisor and U0DLM contains the higher 8 bits of the divisor. A 0x0000 value is treated like a
0x0001 value as division by zero is not allowed.The Divisor Latch Access Bit (DLAB) in
U0LCR must be one in order to access the UART0 Divisor Latches.
2.8. Architecture
The architecture of the UART0 is shown below in the block diagram 4.3. The VPB
interface provides a communications link between the CPU or host and the UART0. The UART0
receiver block, U0RX, monitors the serial input line, RXD0, for valid input. The UART0 RX
Shift Register (U0RSR) accepts valid characters via RXD0. After a valid character is assembled
in the U0RSR, it is passed to the UART0 RX Buffer Register FIFO to await access by the CPU
or host via the generic host interface. The UART0 transmitter block, U0TX, accepts data written
by the CPU or host and buffers the data in the UART0 TX Holding Register FIFO (U0THR).
The UART0 TX Shift Register (U0TSR) reads the data stored in the U0THR and assembles the
data to transmit via the serial output pin, TXD0. The UART0 Baud Rate Generator block,
U0BRG, generates the timing enables used by the UART0 TX block. The U0BRG clock input
source is the VPB clock (PCLK). The main clock is divided down per the divisor specified in the
U0DLL and U0DLM registers. This divided down clock is a 16x oversample clock,
NBAUDOUT. The interrupt interface contains registers U0IER and U0IIR. The interrupt
interface receives several one clock wide enables from the U0TX and U0RX blocks. Status
information from the U0TX and U0RX is stored in the U0LSR. Control information for the
U0TX and U0RX is stored in the U0LCR.
CHAPTER 3
Hardware Implementation of the Project
This chapter briefly explains about the Hardware Implementation of the project. It
discusses the design and working of the design with the help of block diagram and circuit
diagram and explanation of circuit diagram in detail. It explains the features, timer programming,
serial communication, interrupts of Lpc 2148 microcontroller. It also explains the various
modules used in this project.
Power
Supply
Finger
Print
Module
16 X 2 LCD
Crystal
Oscillator Switches
3.3.3 Filter:
Capacitive filter is used in this project. It removes the ripples from the output of rectifier
and smoothens the D.C. Output received from this filter is constant until the mains voltage and
load is maintained constant. However, if either of the two is varied, D.C. voltage received at this
point changes. Therefore a regulator is applied at the output stage.
3.4 LPC2148:
LPC2148 arm processor is used for controlling. ARM processor is used because of its
extra features when compared to microcontroller. It controls LCD and finger print module. It
receives input commands from switches and control finger print module when to receive the
data, performs comparison , gives command to LCD to display messages to direct the users to
use it properly and also displays the results.
The switches are used to activate the controller for registration during enrollment, for
comparisons to the database while identifying the user, for selecting the party while casting the
vote, finally for display of results.
LCD screen functions as interface between the user and microcontroller, which displays
messages that facilitates the user to know when to register and when to vote, and also whether
their vote is valid are not.
It displays ―welcome‖ messages initially and ―enrolling‖ message during enrollment,
―identifying‖ message when controller is comparing the data base whether the user is valid are
not, if valid displays ―please vote‖ message, if not displays ―no access‖ message, and finally
displays the result with party name with their respective number of votes.
3.7. LIQUID CRYSTAL DISPLAY (LCD):
LCD stands for Liquid Crystal Display. LCD is finding wide spread use replacing LEDs
(seven segment LEDs or other multi segment LEDs) because of the following reasons:
1. The declining prices of LCDs.
2. The ability to display numbers, characters and graphics. This is in contrast to LEDs,
which are limited to numbers and a few characters.
3. Incorporation of a refreshing controller into the LCD, thereby relieving the CPU of the
task of refreshing the LCD. In contrast, the LED must be refreshed by the CPU to keep
displaying the data.
4. Ease of programming for characters and graphics.
These components are ―specialized‖ for being used with the microcontrollers, which means
that they cannot be activated by standard IC circuits. They are used for writing different
messages on a miniature LCD.
Pin Logic
Function Name Description
Number State
Ground 1 Vss - 0V
D0 – D7 are interpreted as
0
Control of 4 RS commands
1
operating D0 – D7 are interpreted as data
1 LCD)
Read data (from LCD to
controller)
8 D1 0/1 Bit 1
9 D2 0/1 Bit 2
10 D3 0/1 Bit 3
Data / commands
11 D4 0/1 Bit 4
12 D5 0/1 Bit 5
13 D6 0/1 Bit 6
it has been already explained. In case of 4-bit LED mode, for the sake of saving valuable I/O
pins of the microcontroller, there are only 4 higher bits (D4-D7) used for communication, while
other may be left unconnected.
Consequently, each data is sent to LCD in two steps: four higher bits are sent first (that
normally would be sent through lines D4-D7), four lower bits are sent afterwards. With the help
of initialization, LCD will correctly connect and interpret each data received. Besides, with
regards to the fact that data are rarely read from LCD (data mainly are transferred from
microcontroller to LCD) one more I/O pin may be saved by simple connecting R/W pin to the
Ground. Even though message displaying will be normally performed, it will not be possible to
read from busy flag since it is not possible to read from display.
3.10. Switches and Pushbuttons
enough to be registered by the microcontroller. Concerning the pulse counter, error occurs in
almost 100% of cases.
The simplest solution is to connect simple RC circuit as shown in figure 6.2 which will
suppress each quick voltage change. Since the bouncing time is not defined, the values of
elements are not strictly determined. In the most cases, the values shown on figure are sufficient.
If complete safety is needed, radical measures should be taken. The circuit (RS flip-flop)
changes logic state on its output with the first pulse triggered by contact bounce. Even though
this is more expensive solution (SPDT switch), the problem is definitely resolved. Besides, since
the condensator is not used, very short pulses can be also registered in this way. In addition to
these hardware solutions, a simple software solution is also commonly applied. When a program
tests the state of some input pin and finds changes, the check should be done one more time after
certain time delay. If the change is confirmed, it means that switch (or pushbutton) has changed
its position. The advantages of such solution are: it is free of charge, effects of disturbances are
eliminated and it can be adjusted to the worst-quality contacts.
3.11. Buzzer
Piezo Electric buzzers are Solid state devices that produce an Audible signal when
powered.
_ The fundamental property of Piezo crystal states that when a voltage is applied to the
Piezo electric buzzers operate right from 3V up to 24V DC. Similar to the LED drive, a transistor
driver is used for driving the load. The other advantage with this scheme is that the drive voltage
can be much higher than the operating voltage of the microcontroller.
A protection diode is included in all inductive load circuits to prevent the back emf from
damaging the driving transistor & subsequently the microcontroller.
Working procedure:
Voting machine using Finger print is basically an embedded system that makes the things
easy in the polling booths during the time of elections. The project Finger print technology and
Embedded systems to implement the application.
The user, who wants to poll his vote, has to submit the identity proof at the counter at the
polling booth. In this project, the necessary and, upto an extent, the sufficient material, the user
no need to carry with him is the Voter card.
Voter card is nothing but an Finger Print which stores the details of the person like the
name of the user, location of place, mobile number for contact etc. When the user is asked to
show his Finger print. The Finger print module reads the data present.
Before casting the vote the candidate has to check for validity .so after user pressing the
identify button the controller displays ―identifying ..― message. During this mode the fingerprint
of the candidate casting the vote is compared with the finger prints already enrolled in the
memory. If it is matched a message ―PLEASE VOTE……‖ will be displayed on LCD. Once the
voter presses the button corresponding to the candidate of her/his choice, a four-bit code is
generated and sent to the control unit. Once the casting is over message is displayed to whom
they voted for.‖No ACCESS..‖ message will be displayed if the same user tries to cast again.
The machine returns to the identifying mode and starts all over again for next voting.
CHAPTER-4
R303A Series Fingerprint Identification Module
Fingerprint module‘s processing , shown in figure 5.1 includes two parts: fingerprint
enrollment and fingerprint matching (the matching can be 1:1 or 1:N). When enrolling, user
needs to enter the finger two times. The system will process the two time finger images, generate
a template of the finger based on processing results and store the template. When matching, user
enters the finger through optical sensor and system will generate a template of the finger and
compare it with templates of the finger library. For 1:1 matching, system will compare the live
finger with specific template designated in the Module; for 1:N matching, or searching, system
will search the whole finger library for the matching finger. In both circumstances, system will
return the matching result, success or failure.
The following table 5.1 gives the specifications of finger print module R303a
Power supply
The logic levels and their corresponding voltage levels are given in the table 5.3 below
IV System Resources
To address demands of different customer, Module system provides abundant resources
at user‘s use.
Notepad
The system sets aside a 512-bytes memory (16 pages* 32 bytes) for user‘s notepad,
where data requiring power-off protection can be stored. The host can access the page by
instructions of PS_WriteNotepad and PS_Read Notepad.
Note: when write on one page of the pad, the entire 32 bytes will be written in wholly
covering the original contents.
Buffer
There are an image buffer and two 512-byte-character-file buffer within the RAM space
of the module. Users can read & write any of the buffers by instructions.
Note: Contents of the above buffers will be lost at power-off.
Image buffer
Image Buffer serves for image storage and the image format is 256*288 pixels. When
transferring through UART, to quicken speed, only the upper 4 bits of the pixel is transferred
(that is 16 grey degrees). And two adjacent pixels of the same row will form a byte before the
transferring. When uploaded to PC, the 16-grey-degree image will be extended to 256-grey-
degree format. That‘s 8-bit BMP format. When transferring through USB, the image is 8-bit
pixel, that‘s 256 grey degrees.
Character file buffer
Character file buffer, CharBuffer1, CharBuffer2, can be used to store both character file
and template file.
level 1, FAR is the highest and FRR is the lowest; however at level 5, FAR is the lowest and
FRR is the highest.
4.3.3 Data package length (Parameter Number: 6)
The parameter decides the max length of the transferring data package when
communicating with upper computer. Its value is 0, 1, 2, 3, corresponding to 32 bytes, 64 bytes,
128 bytes, 256 bytes respectively.
Note:
Busy:1 bit. 1: system is executing commands; 0: system is free;
Pass:1 bit. 1: find the matching finger; 0: wrong finger;
PWD:1 bit. 1: Verified device‘s handshaking password.
ImgBufStat:1 bit. 1: image buffer contains valid image.
4.4.1 Module password
At power-on reset, system first checks whether the handshaking password has been
modified. If not, system deems upper computer has no requirement of verifying password and
will enter into normal operation mode. That‘s, when Module password remains the default,
verifying process can be jumped. The password length is 4 bytes, and its default factory value is
0FFH, 0FFH, 0FFH, 0FFH. Should the password have be modified, refer to instruction SetPwd,
then Module (or device) handshaking password must be verified before the system enter into
normal operation mode. Or else, system will refuse to execute and command. The new modified
password is stored in Flash and remains at power off.
4.4.2 Module address:
Each module has an identifying address. When communicating with upper computer,
each instruction/data is transferred in data package form, which contains the address item.
Module system only responds to data package whose address item value is the same with its
identifying address. The address length is 4 bytes, and its default factory value is 0xFFFFFFFF.
User may modify the address via instruction SetAdder. The new modified address remains at
power off.
Random number generator Module integrates a hardware 32-bit random number
generator (RNG) (without seed). Via instruction GetRandomCode, system will generate a
random number and upload it.
The new modified password is stored in Flash and remains at power off.
Computerized fingerprint scanners have been a mainstay of spy thrillers for decades, but up
until recently, they were pretty exotic technology in the real world. In the past few years,
however, scanners have started popping up all over the place -- in police stations, high-security
buildings and even on PC keyboards. You can pick up a personal USB fingerprint scanner for
less than $100, and just like that, your computer's guarded by high-tech biometrics. Instead of, or
in addition to, a password, you need your distinctive print to gain access.
In this article, we'll examine the secrets behind this exciting development in law
enforcement and identity security. We'll also see how fingerprint scanner security systems stack
up to conventional password and identity card systems, and find out how they can fail.
Fingerprints are one of those bizarre twists of nature. Human beings happen to have built-
in, easily accessible identity cards. You have a unique design, which represents you alone,
literally at your fingertips. How did this happen?
People have tiny ridges of skin on their fingers because this particular adaptation was extremely
advantageous to the ancestors of the human species. The pattern of ridges and "valleys" on
fingers make it easier for the hands to grip things, in the same way a rubber tread pattern helps a
tire grip the road.
The other function of fingerprints is a total coincidence. Like everything in the human body,
these ridges form through a combination of genetic and environmental factors. The genetic code
in DNA gives general orders on the way skin should form in a developing fetus, but the specific
way it forms is a result of random events. The exact position of the fetus in the womb at a
particular moment and the exact composition and density of surrounding amniotic fluid decides
how every individual ridge will form.
So, in addition to the countless things that go into deciding your genetic make-up in the first
place, there are innumerable environmental factors influencing the formation of the fingers. Just
like the weather conditions that form clouds or the coastline of a beach, the entire development
process is so chaotic that, in the entire course of human history, there is virtually no chance of
the same exact pattern forming twice.
Consequently, fingerprints are a unique marker for a person, even an identical twin. And while
two prints may look basically the same at a glance, a trained investigator or an advanced piece of
software can pick out clear, defined differences.
This is the basic idea of fingerprint analysis, in both crime investigation and security. A
fingerprint scanner's job is to take the place of a human analyst by collecting a print sample and
comparing it to other samples on record.
A fingerprint scanner system has two basic jobs it needs to get an image of your finger, and it
needs to determine whether the pattern of ridges and valleys in this image matches the pattern of
ridges and valleys in pre-scanned images.
There are a number of different ways to get an image of somebody's finger. The most common
methods today are optical scanning and capacitance scanning. Both types come up with the
same sort of image, but they go about it in completely different ways.
The heart of an optical scanner is a charge coupled device (CCD), the same light sensor system
used in digital cameras and camcorders. A CCD is simply an array of light-sensitive diodes
called photosites, which generate an electrical signal in response to light photons. Each photosite
records a pixel, a tiny dot representing the light that hit that spot. Collectively, the light and dark
pixels form an image of the scanned scene (a finger, for example). Typically, an analog-to-digital
converter in the scanner system processes the analog electrical signal to generate a digital
representation of this image. See How Digital Cameras Work for details on CCDs and digital
conversion.
The scanning process starts when you place your finger on a glass plate, and a CCD camera takes
a picture. The scanner has its own light source, typically an array of light-emitting diodes, to
illuminate the ridges of the finger. The CCD system actually generates an inverted image of the
finger, with darker areas representing more reflected light (the ridges of the finger) and lighter
areas representing less reflected light (the valleys between the ridges).
Fingerprint identification is one of the most important biometric technologies which have
drawn a substantial amount of attention recently. A fingerprint is the pattern of ridges and valleys
(also called furrows in the fingerprint literature) on the surface of a fingertip. Each individual has
unique fingerprints. The uniqueness of a fingerprint is exclusively determined by the local ridge
characteristics and their relationships. A total of 150 different local ridge characteristics (islands,
short ridges, enclosure, etc.) have been identified. These local ridge characteristics are not evenly
distributed. Most of them depend heavily on the impression conditions and quality of fingerprints
and are rarely observed in fingerprints. The two most prominent local ridge characteristics,
called minutiae, are
1. Ridge ending.
2. Ridge bifurcation.
A ridge ending is defined as the point where a ridge ends abruptly. A ridge bifurcation is
defined as the point where a ridge forks or diverges into branch ridges. A good quality
fingerprint typically contains about 40 to 100 minutiae. Examples of minutiae are shown in the
following Figure.
In an ideal fingerprint image, ridges and valleys alternate and flow in a locally constant
direction and minutiae are anomalies of ridges, i.e., ridge endings and ridge bifurcations. In such
situations, the ridges can be easily detected and minutiae can be precisely located from the
thinned ridges. Fig. 1 shows an example of good quality live scan fingerprint image. However, in
practice, due to variations in impression conditions, ridge configuration, skin conditions
(aberrant formations of epidermal ridges of fingerprints, postnatal marks, occupational marks),
acquisition devices, and non cooperative attitude of subjects, etc., a significant percentage of
acquired fingerprint images (approximately 10 percent) is of poor quality. The ridge structures in
poor-quality fingerprint images are not always well-defined and, hence, they cannot be correctly
detected. This leads to following problems:
In order to ensure that the performance of the minutiae extraction algorithm will be
robust with respect to the quality of input fingerprint images, an enhancement algorithm which
can improve the clarity of the ridge structures is necessary. A fingerprint expert is often able to
correctly identify the minutiae by using various visual clues such as local ridge orientation, ridge
continuity, ridge tendency, etc., as long as the ridge and valley structures are not corrupted
completely. It is possible to develop an enhancement algorithm that exploits these visual clues to
improve the clarity of ridge structures in corrupted fingerprint images.
Before comparing the print to stored data, the scanner processor makes sure the CCD has
captured a clear image. It checks the average pixel darkness, or the overall values in a small
sample, and rejects the scan if the overall image is too dark or too light. If the image is rejected,
the scanner adjusts the exposure time to let in more or less light, and then tries the scan again.
If the darkness level is adequate, the scanner system goes on to check the image
definition (how sharp the fingerprint scan is). The processor looks at several straight lines
moving horizontally and vertically across the image. If the fingerprint image has good definition,
a line running perpendicular to the ridges will be made up of alternating sections of very dark
pixels and very light pixels.
If the processor finds that the image is crisp and properly exposed, it proceeds to
comparing the captured fingerprint with fingerprints on file. We'll look at this process in a
minute, but first we'll examine the other major scanning technology, the capacitive scanner.
Polling unit improves the voting process for both electors and administrative authorities at all
levels by providing an innovative infrastructure for supporting remote voting based on leading-
edge technology.
Using E-Poll, constituents can vote wherever they may be on Election Day. With the new model,
the concept of a district associated with an electoral register is replaced by a network allowing
delocalization of the booths. E-Poll aims to bridge the gap between the availability of leading-
edge technology and the practical possibility of exploiting it, by dealing with the following
issues:
* Need for full confidence in the voting process on the part of voters and the administrative
authorities
CHAPTER 5
SOFTWARE Implementation of the project design
Step1: Click for KEIL μVISION4 Icon. Which appearing after Installing Keil KEIL
μVISION4.
Step 8: Now you see Startup.s is already added which is necessary for running code for
Keil.
Note: Code wills Not Run without Startup.s
Startup.s is available in C:\Keil\ARM\Startup\Philips.
The startup-code executes immediately upon reset of the target system and performs the
following operations:
1. Defines interrupt and exception vectors.
2. Configures the CPU clock source (on some devices).
3. Initializes the external bus controller.
4. Copies the exception vectors from ROM to RAM for systems with memory
remapping.
5. Initializes other low level peripherals, if necessary.
6. Reserves and initializes the stack for all modes.
Step 10: Write Code for Blink LED in C and FileName.c Save.
Note: Don‘t forget to save .c Extension.
Step 12: Now you add LED.c file by adding Sourse Group 1 Add files to Group ‗Source Group
1‘.
Step 15: Go to Options for Target ‗Target 1‘. Click on Check Box Create HEX File.
Step 16: Then go to Linker. Click on Use Memory Layout for Target Dialog.
Step 17: Now you see 0 Error(s), 0 Warning (s). Then Hex File will create in Specific Folder.
Now to download it for you target hardware.
5.2. CODE:
#include <lpc214x.h>
#include "serial.h"
#include"lcd.h"
unsignedchar
enroll[12]={0xEF,0X01,0XFF,0XFF,0XFF,0XFF,0X01,0X00,0X03,0X01,0X00,0X05};
unsignedchar
generate_ch[13]={0xEF,0X01,0XFF,0XFF,0XFF,0XFF,0X01,0X00,0X04,0x02,0X01,0X00,0X
08};
unsignedchar store[11]={0xEF,0X01,0XFF,0XFF,0XFF,0XFF,0X01,0X00,0X06,0X06,0X01};
unsignedchar
identify[12]={0xEF,0X01,0XFF,0XFF,0XFF,0XFF,0X01,0X00,0X03,0X11,0X00,0X15};
void clearfp(void);
unsignedchar part_A=0,part_B=0,part_C=0,part_D=0,check=0,count=0,enroll_check=0,en_byte;
/*-------------------------------------------------------------------------
main program
--------------------------------------------------------------------------*/
int main (void )
{
lcd_init();
again:
lcd_cmd(0x01,0);
delay(1000);
message(0," welcome ");
//lcd_cmd(0x01,0);
lcd_cmd(0xc0,0);
message(0,"EVM with FP");
delay(1000);
i=0;
while(1)
{
/******* Enrolling your ID *********************/
rec=UART1_getch();
dummy=UART1_getch();
dummy=UART1_getch();
if(!rec)
{
lcd_cmd(0x01,0);
message(0,"Enrolling ok");
}
else
{
lcd_cmd(0x01,0);
message(0,"Enrolling not ok");
goto again;
}
i=0;
while(i<13)
{
send_ch_UART0(generate_ch[i]);
i++;
}
rec=UART1_getch();
rec=UART1_getch();
rec=UART1_getch();
rec=UART1_getch();
rec=UART1_getch();
rec=UART1_getch();
rec=UART1_getch();
rec=UART1_getch();
rec=UART1_getch();
rec=UART1_getch();
dummy=UART1_getch();
dummy=UART1_getch();
if(!rec)
{
lcd_cmd(0x01,0);
message(0,"gen char ok");
}
else
{
lcd_cmd(0x01,0);
message(0,"genchar not ok");
goto again;
}
i=0;
while(i<11)
{
send_ch_UART0(store[i]);
i++;
}
rec=UART1_getch();
rec=UART1_getch();
rec=UART1_getch();
rec=UART1_getch();
rec=UART1_getch();
rec=UART1_getch();
rec=UART1_getch();
rec=UART1_getch();
rec=UART1_getch();
rec=UART1_getch();
dummy=UART1_getch();
dummy=UART1_getch();
if(!rec)
{
lcd_cmd(0x01,0);
message(0,"store ok");
}
else
{
lcd_cmd(0x01,0);
message(0,"store not ok");
goto again;
}
//check=1;
//enroll_check =0;
//en_byte=12;
}
message(0,"Identfying...");
i=0;
while(i<12)
{
send_ch_UART0(identify[i]);
i++;
}
check=1;
enroll_check =1;
en_byte=16;
}
long_delay();
part_A=part_B=part_C=part_D=0;
goto again;
if(check==1)
{
count=0;
check=0;
while(count<en_byte)
{
fp[count]=UART0_getch();
count++;
}
long_delay();
n=0;
while(n<20)
{
if((fp[n]==0xEF)&&(fp[n+1]==0x01)&&(fp[n+9]==0x00))
{
lcd_cmd(0x01,0);
lcd_cmd(0x80,0);
message(1," Successfully ");
lcd_cmd(0xc0,0);
message(0xc0," completed");
b1=0; b2=0; i1=0; i2=0; id=0;
b1=fp[n+11]/10;
b2=fp[n+11]%10;
long_delay();
long_delay();
long_delay();
// lcd_cmd(0xc0,0);
// message(0xc0,"Id:");
// lcd_cmd(0xC3,0);
// lcd_cmd(b1+0x30,1);
// lcd_cmd(b2+0x30,1);
i1=b1-48;
i1=i1*10;
i2=b2-48;
i2=i2*1;
id=i1+i2;
long_delay();
if(enroll_check ==1)
{
lcd_cmd(0x01,0);
message(1," Plz poll ur vote ");
// clearfp();
enroll_check=0;
goto poll;
}
goto again;
else
{
lcd_cmd(0x01,0);
message(1," Failed");
long_delay();
goto again;
}
}
}
}
/*-----------------------------------------------------
polling your vote
----------------------------------------------------*/
poll:
while(1)
{
if((IOPIN0&sw1)==0) //sw1
{
part_A++;
lcd_cmd(0x01,0);
message(1,"Vote for part A");
long_delay();
goto again;
}
if((IOPIN0&sw2)==0) //sw2
{
part_B++;
lcd_cmd(0x01,0);
message(1,"Vote for part B");
long_delay();
goto again;
// goto again;
}
if((IOPIN0&sw3)==0) //sw3
{
part_C++;
lcd_cmd(0x01,0);
message(1,"Vote for part C");
long_delay();
goto again;
// goto again;
}
if((IOPIN0&sw4)==0) //sw4
{
part_D++;
lcd_cmd(0x01,0);
message(1,"Vote for part D");
long_delay();
goto again;
// goto again;
}
}
}
/*------------------------------------------------
void clearfp(void)
{
unsigned char cl=0;
while(cl<20)
{
fp[cl]=' ';
cl++;
}
j=0;
}
/*---------------------------------------------------------------------------------------
;convertion program Binary to ASCii ;
--------------------------------------------------------------------------------------*/
{
unsigned char value,d1,d2,d3,k=0;
temp_value = temp_value;
value=temp_value/10;
d3=temp_value%10;
d1=value/10;
d2=value%10;
d1=d1+30;
// lcddata(d1);
delay(10);
d2=d2+30;
lcd_cmd(d2,1);
delay(4);
k++;
// msgdisplay(".");
d3=d3+0x30;
lcd_cmd(d3,1);
delay(10);
k=0;
}
/*---------------------------------------------------------------------------------
; long delay ;
----------------------------------------------------------------------------------*/
void long_delay (void )
{
unsigned int g;
for(g=0;g<500;g++)
delay(40000);
}
CHAPTER 6
RESULTS AND CONCLUSION
6.1 Results
Assemble the circuit on the PCB as shown in Fig 5.1. After assembling the circuit on the
PCB, check it for proper connections before switching on the power supply.
The EVM consists of a controller and switching unit , both the units are working
independently and in collaboration with each other as well.
The CU is accepting fingerprints in enrolling mode and is responding accordingly.
In identifying and vote casting mode, the CU checks for finger print detection routine
In identifying and vote casting mode, CU communicates with switching unit in order to
exchange various signals.
CU is counting the votes for individual candidate (20 in number) and total number of votes
cast can be checked at anytime.
In result mode, the CU displays the votes of individual candidate, in consecutive order,
whenever the ―Result Button‖ is pressed.
The total number of votes can be checked in result mode.
In total, the complete system (including all the hardware components and software routines)
is working as per the initial specifications and requirements of our project. Because of the
creative nature of the design, and due to lack of time, some features could not be fine-tuned and
are not working properly. So certain aspects of the system can be modified as operational
experience is gained with it. As the users work with the system, they develop various new ideas
for the development and enhancement of the project
CONCLUSION
The implementation of Finger print based voting machine using microcontroller is done
successfully. The communication is properly done without any interference between different
modules in the design. Design is done to meet all the specifications and requirements. Software
tools like Keil Uvision Simulator, Flash Magic to dump the source code into the microcontroller,
Orcad Lite for the schematic diagram have been used to develop the software code before
realizing the hardware.
The performance of the system is more efficient. Reading the Data and verifying the
information with the already stored data and perform the specified task is the main job of the
microcontroller. The mechanism is controlled by the microcontroller.
Circuit is implemented in Orcad and implemented on the microcontroller board. The
performance has been verified both in software simulator and hardware design. The total circuit
is completely verified functionally and is following the application software. It can be concluded
that the design implemented in the present work provide portability, flexibility and the data
transmission is also done with low power consumption.
CHAPTER 7
ADVANTAGES AND APPLICATION
7.1. Advantages
Cost effective
Low power consumption
It is economical
Less manpower required
Time conscious, as less time required for voting & counting
Avoids invalid voting
Saves transportation cost due to its compact size
Convenient on the part of voter
7.2. Applications
This project can be used as an voting machine that can prevent rigging during the elections in
the polling booths.
Fast track voting which could be used in small scale elections, like resident welfare
association, ―panchayat‖ level election and other society level elections.
It could also be used to conduct opinion polls during annual share holders meeting.
It could also be used to conduct general assembly elections where number of candidates
are less than or equal to eight in the current situation
CHAPTER 8
FUTURE SCOPE
Number of candidates could be increased.
It could be interfaced with printer to get the hard copy of the result almost instantly from the
machine itself.
It could also be interfaced with the personal computer and result could be stored in the
central server and its backup could be taken on the other backend servers.
Again, once the result is on the server it could be relayed on the network to various offices of
the election conducting authority. Thus our project could make the result available any corner
of the world in a matter of seconds
CHAPTER 9
REFERENCES
1. http://www.aimglobal.org/technologies/rfid/what_is_rfid.asp
2. http://www.rfidjournal.com/faq
3. http://www.technovelgy.com/ct/Technology-Article.asp
4. http://www.perada.eu/documents/articles-perspectives/an-introduction-to-rfid-
technology.pdf
5. http://csrc.nist.gov/publications/nistpubs/800-98/SP800-98_RFID-2007.pdf
6. www.ieee.org
7. http://www.zntu.edu.ua/base/lection/rpf/lib/zhzh03/8051_tutorial.pdf
8. http://www.taltech.com/TALtech_web/resources/intro-sc.html
9. http://focus.ti.com/lit/ds/symlink/max232.pdf
10. http://www.kmitl.ac.th/~kswichit/89prog/index.html
11. http://www.microdigitaled.com/8051/Software/keil_tutorial.pdf