Vous êtes sur la page 1sur 63

Fingerprint and password based door lock system using

Raspberry pi
1. INTRODUCTION TO EMBEDDED SYSTEMS

1.1 Embedded System

An embedded system is a special-purpose computer system designed to perform one


or a few dedicated functions, sometimes with real-time computing constraints. It is usually
embedded as part of a complete device including hardware and mechanical parts. In contrast,
a general-purpose computer, such as a personal computer, can do many different tasks
depending on programming. Embedded systems have become very important today as they
control many of the common devices we use.

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.

Physically, embedded systems range from portable devices such as digital watches
and MP3 players, to large stationary installations like traffic lights, factory controllers, or the
systems controlling nuclear power plants. Complexity varies from low, with a single
microcontroller chip, to very high with multiple units, peripherals and networks mounted
inside a large chassis or enclosure.

In general, "embedded system" is not an exactly defined term, as many systems have
some element of programmability. For example, Handheld computers share some elements
with embedded systems — such as the operating systems and microprocessors which power
them — but are not truly embedded systems, because they allow different applications to be
loaded and peripherals to be connected.

An embedded system is some combination of computer hardware and software, either


fixed in capability or programmable, that is specifically designed for a particular kind of
application device. Industrial machines, automobiles, medical equipment, cameras, household
appliances, airplanes, vending machines, and toys (as well as the more obvious cellular phone
and PDA) are among the myriad possible hosts of an embedded system. Embedded systems
that are programmable are provided with a programming interface, and embedded systems
programming is a specialized occupation.

Certain operating systems or language platforms are tailored for the embedded
market, such as Embedded Java and Windows XP Embedded. However, some low-end
consumer products use very inexpensive microprocessors and limited storage, with the
application and operating system both part of a single program. The program is written
permanently into the system's memory in this case, rather than being loaded into RAM
(random access memory), as programs on a personal computer are.

An embedded system is a computer system designed to perform one or a few


dedicated functions often with real-time computing constraints. It is embedded as part
of a complete device often including hardware and mechanical parts. By contrast, a
general-purpose computer, such as a personal computer (PC), is designed to be flexible
and to meet a wide range of end-user needs. Embedded systems control many devices in
common use today.
Embedded systems are controlled by one or more main processing cores
that are typically either microcontrollers or digital signal processors (DSP). The key
characteristic, however, is being dedicated to handle a particular task, which may
require very powerful processors. For example, air traffic control systems may usefully
be viewed as embedded, even though they involve mainframe computers and dedicated
regional and national networks between airports and radar sites. (Each radar probably
includes one or more embedded systems of its own.)
Since the embedded system is dedicated to specific tasks, design engineers
can optimize it to reduce the size and cost of the product and increase the reliability and
performance. Some embedded systems are mass-produced, benefiting from economies
of scale.
Physically embedded systems range from portable devices such as digital
watches and MP3 players, to large stationary installations like traffic lights, factory
controllers, or the systems controlling nuclear power plants. Complexity varies from
low, with a single microcontroller chip, to very high with multiple units, peripherals and
networks mounted inside a large chassis or enclosure.
In general, "embedded system" is not a strictly definable term, as most systems
have some element of extensibility or programmability. For example, handheld
computers share some elements with embedded systems such as the operating systems
and microprocessors which power them, but they allow different applications to be
loaded and peripherals to be connected. Moreover, even systems which don't expose
programmability as a primary feature generally need to support software updates. On a
continuum from "general purpose" to "embedded", large application systems will have
subcomponents at most points even if the system as a whole is "designed to perform one
or a few dedicated functions", and is thus appropriate to call "embedded". A modern
example of embedded system is shown in fig: 2.1.

Fig 2.1:A modern example of embedded system


Labeled parts include microprocessor (4), RAM (6), flash memory
(7).Embedded systems programming is not like normal PC programming. In many
ways, programming for an embedded system is like programming PC 15 years ago. The
hardware for the system is usually chosen to make the device as cheap as possible.
Spending an extra dollar a unit in order to make things easier to program can cost
millions. Hiring a programmer for an extra month is cheap in comparison. This means
the programmer must make do with slow processors and low memory, while at the same
time battling a need for efficiency not seen in most PC applications. Below is a list of
issues specific to the embedded field.
2.1.1 History:
In the earliest years of computers in the 1930–40s, computers were sometimes
dedicated to a single task, but were far too large and expensive for most kinds of tasks
performed by embedded computers of today. Over time however, the concept
of programmable controllers evolved from traditional electromechanical sequencers, via solid
state devices, to the use of computer technology.
One of the first recognizably modern embedded systems was the Apollo Guidance
Computer, developed by Charles Stark Draper at the MIT Instrumentation Laboratory. At the
project's inception, the Apollo guidance computer was considered the riskiest item in the
Apollo project as it employed the then newly developed monolithic integrated circuits to
reduce the size and weight. An early mass-produced embedded system was the Autonetics D-
17 guidance computer for the Minuteman missile, released in 1961. It was built
from transistor logic and had a hard disk for main memory. When the Minuteman II went into
production in 1966, the D-17 was replaced with a new computer that was the first high-
volume use of integrated circuits.
2.1.2 Tools:
Embedded development makes up a small fraction of total programming.
There's also a large number of embedded architectures, unlike the PC world where 1
instruction set rules, and the UNIX world where there's only 3 or 4 major ones. This
means that the tools are more expensive. It also means that they're lowering featured,
and less developed. On a major embedded project, at some point you will almost always
find a compiler bug of some sort.

Debugging tools are another issue. Since you can't always run general
programs on your embedded processor, you can't always run a debugger on it. This
makes fixing your program difficult. Special hardware such as JTAG ports can
overcome this issue in part. However, if you stop on a breakpoint when your system is
controlling real world hardware (such as a motor), permanent equipment damage can
occur. As a result, people doing embedded programming quickly become masters at
using serial IO channels and error message style debugging.

2.1.3 Resources:
To save costs, embedded systems frequently have the cheapest processors
that can do the job. This means your programs need to be written as efficiently as
possible. When dealing with large data sets, issues like memory cache misses that never
matter in PC programming can hurt you. Luckily, this won't happen too often- use
reasonably efficient algorithms to start, and optimize only when necessary. Of course,
normal profilers won't work well, due to the same reason debuggers don't work well.
Memory is also an issue. For the same cost savings reasons, embedded
systems usually have the least memory they can get away with. That means their
algorithms must be memory efficient (unlike in PC programs, you will frequently
sacrifice processor time for memory, rather than the reverse). It also means you can't
afford to leak memory. Embedded applications generally use deterministic memory
techniques and avoid the default "new" and "malloc" functions, so that leaks can be
found and eliminated more easily. Other resources programmers expect may not even
exist. For example, most embedded processors do not have hardware FPUs (Floating-
Point Processing Unit). These resources either need to be emulated in software, or
avoided altogether.

2.1.4 Real Time Issues:


Embedded systems frequently control hardware, and must be able to
respond to them in real time. Failure to do so could cause inaccuracy in measurements,
or even damage hardware such as motors. This is made even more difficult by the lack
of resources available. Almost all embedded systems need to be able to prioritize some
tasks over others, and to be able to put off/skip low priority tasks such as UI in favor of
high priority tasks like hardware control.

2.2 Need For Embedded Systems:


The uses of embedded systems are virtually limitless, because every day
new products are introduced to the market that utilizes embedded computers in novel
ways. In recent years, hardware such as microprocessors, microcontrollers, and FPGA
chips have become much cheaper. So when implementing a new form of control, it's
wiser to just buy the generic chip and write your own custom software for it. Producing
a custom-made chip to handle a particular task or set of tasks costs far more time and
money. Many embedded computers even come with extensive libraries, so that "writing
your own software" becomes a very trivial task indeed. From an implementation
viewpoint, there is a major difference between a computer and an embedded system.
Embedded systems are often required to provide Real-Time response. The main
elements that make embedded systems unique are its reliability and ease in debugging.

2.2.1 Debugging:
Embedded debugging may be performed at different levels, depending on
the facilities available. From simplest to most sophisticate they can be roughly grouped
into the following areas:
 Interactive resident debugging, using the simple shell provided by the embedded
operating system (e.g. Forth and Basic)
 External debugging using logging or serial port output to trace operation using either
a monitor in flash or using a debug server like the Remedy Debugger which even works for
heterogeneous multi core systems.
 An in-circuit debugger (ICD), a hardware device that connects to the microprocessor
via a JTAG or Nexus interface. This allows the operation of the microprocessor to be
controlled externally, but is typically restricted to specific debugging capabilities in the
processor.
 An in-circuit emulator replaces the microprocessor with a simulated equivalent,
providing full control over all aspects of the microprocessor.
 A complete emulator provides a simulation of all aspects of the hardware, allowing all
of it to be controlled and modified and allowing debugging on a normal PC.
 Unless restricted to external debugging, the programmer can typically load and run
software through the tools, view the code running in the processor, and start or stop its
operation. The view of the code may be as assembly code or source-code.

Because an embedded system is often composed of a wide variety of


elements, the debugging strategy may vary. For instance, debugging a software(and
microprocessor) centric embedded system is different from debugging an embedded
system where most of the processing is performed by peripherals (DSP, FPGA, co-
processor). An increasing number of embedded systems today use more than one single
processor core. A common problem with multi-core development is the proper
synchronization of software execution. In such a case, the embedded system design may
wish to check the data traffic on the busses between the processor cores, which requires
very low-level debugging, at signal/bus level, with a logic analyzer, for instance.

2.2.2 Reliability:
Embedded systems often reside in machines that are expected to run
continuously for years without errors and in some cases recover by them if an error
occurs. Therefore the software is usually developed and tested more carefully than that
for personal computers, and unreliable mechanical moving parts such as disk drives,
switches or buttons are avoided.
Specific reliability issues may include:
 The system cannot safely be shut down for repair, or it is too inaccessible to
repair. Examples include space systems, undersea cables, navigational beacons, bore-
hole systems, and automobiles.
 The system must be kept running for safety reasons. "Limp modes" are less
tolerable. Often backup s are selected by an operator. Examples include aircraft
navigation, reactor control systems, safety-critical chemical factory controls, train
signals, engines on single-engine aircraft.
 The system will lose large amounts of money when shut down: Telephone
switches, factory controls, bridge and elevator controls, funds transfer and market
making, automated sales and service.

A variety of techniques are used, sometimes in combination, to recover from


errors—both software bugs such as memory leaks, and also soft errors in the hardware:
 Watchdog timer that resets the computer unless the software periodically notifies
the watchdog
 Subsystems with redundant spares that can be switched over to
 software "limp modes" that provide partial function
 Designing with a Trusted Computing Base (TCB) architecture[6] ensures a highly
secure & reliable system environment
 An Embedded Hypervisor is able to provide secure encapsulation for any subsystem
component, so that a compromised software component cannot interfere with other
subsystems, or privileged-level system software. This encapsulation keeps faults from
propagating from one subsystem to another, improving reliability. This may also allow a
subsystem to be automatically shut down and restarted on fault detection.
 Immunity Aware Programming

2.3 Explanation of Embedded Systems:


2.3.1 Software Architecture:
There are several different types of software architecture in common use.
 Simple Control Loop:
In this design, the software simply has a loop. The loop calls subroutines, each of which
manages a part of the hardware or software.
 Interrupt Controlled System:
Some embedded systems are predominantly interrupt controlled. This
means that tasks performed by the system are triggered by different kinds of events. An
interrupt could be generated for example by a timer in a predefined frequency, or by a
serial port controller receiving a byte. These kinds of systems are used if event handlers
need low latency and the event handlers are short and simple.
Usually these kinds of systems run a simple task in a main loop also, but
this task is not very sensitive to unexpected delays. Sometimes the interrupt handler will
add longer tasks to a queue structure. Later, after the interrupt handler has finished,
these tasks are executed by the main loop. This method brings the system close to a
multitasking kernel with discrete processes.
 Cooperative Multitasking:
A non-preemptive multitasking system is very similar to the simple
control loop scheme, except that the loop is hidden in an API. The programmer defines
a series of tasks, and each task gets its own environment to “run” in. When a task is idle,
it calls an idle routine, usually called “pause”, “wait”, “yield”, “nop” (stands for no
operation), etc.The advantages and disadvantages are very similar to the control loop,
except that adding new software is easier, by simply writing a new task, or adding to the
queue-interpreter.
 Primitive Multitasking:
In this type of system, a low-level piece of code switches between tasks or
threads based on a timer (connected to an interrupt). This is the level at which the
system is generally considered to have an "operating system" kernel. Depending on how
much functionality is required, it introduces more or less of the complexities of
managing multiple tasks running conceptually in parallel.
As any code can potentially damage the data of another task (except in
larger systems using an MMU) programs must be carefully designed and tested, and
access to shared data must be controlled by some synchronization strategy, such as
message queues, semaphores or a non-blocking synchronization scheme.
Because of these complexities, it is common for organizations to buy a
real-time operating system, allowing the application programmers to concentrate on
device functionality rather than operating system services, at least for large systems;
smaller systems often cannot afford the overhead associated with a generic real time
system, due to limitations regarding memory size, performance, and/or battery life.
 Microkernel’s And Exokernels:
A microkernel is a logical step up from a real-time OS. The usual
arrangement is that the operating system kernel allocates memory and switches the
CPU to different threads of execution. User mode processes implement major functions
such as file systems, network interfaces, etc.
In general, micro kernels succeed when the task switching and inter task
communication is fast, and fail when they are slow. Exo kernels communicate efficiently
by normal subroutine calls. The hardware and all the software in the system are
available to, and extensible by application programmers. Based on performance,
functionality, requirement the embedded systems are divided into three categories:
2.3.2 Stand Alone Embedded System:
These systems takes the input in the form of electrical signals from
transducers or commands from human beings such as pressing of a button etc.., process
them and produces desired output. This entire process of taking input, processing it and
giving output is done in standalone mode. Such embedded systems comes under stand
alone embedded systems
Eg: microwave oven, air conditioner etc..
2.3.3 Real-time embedded systems:
Embedded systems which are used to perform a specific task or operation
in a specific time period those systems are called as real-time embedded systems. There
are two types of real-time embedded systems.
 Hard Real-time embedded systems:
These embedded systems follow an absolute dead line time period i.e.., if
the tasking is not done in a particular time period then there is a cause of damage to the
entire equipment.
Eg: consider a system in which we have to open a valve within 30 milliseconds. If
this valve is not opened in 30 ms this may cause damage to the entire equipment. So in
such cases we use embedded systems for doing automatic operations.
 Soft Real Time embedded systems:
Eg: Consider a TV remote control system, if the remote control takes a few milliseconds
delay it will not cause damage either to the TV or to the remote control. These systems
which will not cause damage when they are not operated at considerable time period
those systems comes under soft real-time embedded systems.
2.3.4 Network communication embedded systems:
A wide range network interfacing communication is provided by using
embedded systems.
Eg:
 Consider a web camera that is connected to the computer with internet can be
used to spread communication like sending pictures, images, videos etc.., to another
computer with internet connection throughout anywhere in the world.
 Consider a web camera that is connected at the door lock.
Whenever a person comes near the door, it captures the image of a person
and sends to the desktop of your computer which is connected to internet. This gives an
alerting message with image on to the desktop of your computer, and then you can open
the door lock just by clicking the mouse. Fig: 2.2 show the network communications in
embedded systems.

Fig 2.2: Network communication embedded systems

2.3.5 Different types of processing units:


The central processing unit (c.p.u) can be any one of the following
microprocessor, microcontroller, digital signal processing.
 Among these Microcontroller is of low cost processor and one of the main
advantage of microcontrollers is, the components such as memory, serial
communication interfaces, analog to digital converters etc.., all these are built on a
single chip. The numbers of external components that are connected to it are very less
according to the application.
 Microprocessors are more powerful than microcontrollers. They are used in
major applications with a number of tasking requirements. But the microprocessor
requires many external components like memory, serial communication, hard disk,
input output ports etc.., so the power consumption is also very high when compared to
microcontrollers.
 Digital signal processing is used mainly for the applications that particularly
involved with processing of signals

2.4 APPLICATIONS OF EMBEDDED SYSTEMS:


2.4.1 Consumer applications:
At home we use a number of embedded systems which include microwave
oven, remote control, vcd players, dvd players, camera etc….

Fig2.3: Automatic coffee makes equipment

2.4.2 Office automation:


We use systems like fax machine, modem, printer etc…
Fig2.4: Fax machine Fig2.5: Printing machine

2.4.3. Industrial automation:


Today a lot of industries are using embedded systems for process control.
In industries we design the embedded systems to perform a specific operation like
monitoring temperature, pressure, humidity ,voltage, current etc.., and basing on these
monitored levels we do control other devices, we can send information to a centralized
monitoring station.

Fig2.6: Robot
In critical industries where human presence is avoided there we can use
robots which are programmed to do a specific operation.

2.4.5 Computer networking:


Embedded systems are used as bridges routers etc..
Fig2.7: Computer networking
2.4.6 Tele communications:
Cell phones, web cameras etc.

Fig2.8: Cell Phone Fig2.9: Web camera


1.2 Applications of Embedded System

We are living in the Embedded World. You are surrounded with many embedded
products and your daily life largely depends on the proper functioning of these gadgets.
Television, Radio, CD player of your living room, Washing Machine or Microwave Oven in
your kitchen, Card readers, Access Controllers, Palm devices of your work space enable you
to do many of your tasks very effectively. Apart from all these, many controllers embedded in
your car take care of car operations between the bumpers and most of the times you tend to
ignore all these controllers.

In recent days, you are showered with variety of information about these embedded
controllers in many places. All kinds of magazines and journals regularly dish out details
about latest technologies, new devices; fast applications which make you believe that your
basic survival is controlled by these embedded products. Now you can agree to the fact that
these embedded products have successfully invaded into our world. You must be wondering
about these embedded controllers or systems. What is this Embedded System?

The computer you use to compose your mails, or create a document or analyze the
database is known as the standard desktop computer. These desktop computers are
manufactured to serve many purposes and applications.

You need to install the relevant software to get the required processing facility. So,
these desktop computers can do many things. In contrast, embedded controllers carryout a
specific work for which they are designed. Most of the time, engineers design these
embedded controllers with a specific goal in mind. So these controllers cannot be used in any
other place.

Theoretically, an embedded controller is a combination of a piece of microprocessor


based hardware and the suitable software to undertake a specific task.

These days designers have many choices in microprocessors/microcontrollers.


Especially, in 8 bit and 32 bit, the available variety really may overwhelm even an
experienced designer. Selecting a right microprocessor may turn out as a most difficult first
step and it is getting complicated as new devices continue to pop-up very often.
In the 8 bit segment, the most popular and used architecture is Intel's 8031. Market
acceptance of this particular family has driven many semiconductor manufacturers to develop
something new based on this particular architecture. Even after 25 years of existence,
semiconductor manufacturers still come out with some kind of device using this 8031 core.

[1] Military and aerospace software applications

From in-orbit embedded systems to jumbo jets to vital battlefield networks, designers of
mission-critical aerospace and defense systems requiring real-time performance, scalability,
and high-availability facilities consistently turn to the LynxOS® RTOS and the LynxOS-178
RTOS for software certification to DO-178B.

Rich in system resources and networking services, LynxOS provides an off-the-shelf


software platform with hard real-time response backed by powerful distributed computing
(CORBA), high reliability, software certification, and long-term support options.

The LynxOS-178 RTOS for software certification, based on the RTCA DO-178B
standard, assists developers in gaining certification for their mission- and safety-critical
systems. Real-time systems programmers get a boost with LynuxWorks' DO-178B RTOS
training courses.

LynxOS-178 is the first DO-178B and EUROCAE/ED-12B certifiable, POSIX®-


compatible RTOS solution.

[2] Communications applications

"Five-nines" availability, CompactPCI hot swap support, and hard real-time response—
LynxOS delivers on these key requirements and more for today's carrier-class systems.
Scalable kernel configurations, distributed computing capabilities, integrated
communications stacks, and fault-management facilities make LynxOS the ideal choice for
companies looking for a single operating system for all embedded telecommunications
applications—from complex central controllers to simple line/trunk cards.

LynuxWorks Jumpstart for Communications package enables OEMs to rapidly develop


mission-critical communications equipment, with pre-integrated, state-of-the-art, data
networking and porting software components—including source code for easy customization.
The Lynx Certifiable Stack (LCS) is a secure TCP/IP protocol stack designed especially
for applications where standards certification is required.

[3] Electronics applications and consumer devices

As the number of powerful embedded processors in consumer devices continues to rise,


the BlueCat® Linux® operating system provides a highly reliable and royalty-free option for
systems designers.

And as the wireless appliance revolution rolls on, web-enabled navigation systems,
radios, personal communication devices, phones and PDAs all benefit from the cost-effective
dependability, proven stability and full product life-cycle support opportunities associated
with BlueCat embedded Linux. BlueCat has teamed up with industry leaders to make it easier
to build Linux mobile phones with Java integration.

For makers of low-cost consumer electronic devices who wish to integrate the LynxOS
real-time operating system into their products, we offer special MSRP-based pricing to
reduce royalty fees to a negligible portion of the device's MSRP.

[4] Industrial automation and process control software

Designers of industrial and process control systems know from experience that
LynuxWorks operating systems provide the security and reliability that their industrial
applications require.

From ISO 9001 certification to fault-tolerance, POSIX conformance, secure partitioning


and high availability, we've got it all. Take advantage of our 20 years of experience.

1.3 Microcontroller Versus Microprocessor

What is the difference between a Microprocessor and Microcontroller? By


microprocessor is meant the general purpose Microprocessors such as Intel's X86 family
(8086, 80286, 80386, 80486, and the Pentium) or Motorola's 680X0 family (68000, 68010,
68020, 68030, 68040, etc). These microprocessors contain no RAM, no ROM, and no I/O
ports on the chip itself. For this reason, they are commonly referred to as general-purpose
Microprocessors.

A system designer using a general-purpose microprocessor such as the Pentium or the


68040 must add RAM, ROM, I/O ports, and timers externally to make them functional.
Although the addition of external RAM, ROM, and I/O ports makes these systems bulkier
and much more expensive, they have the advantage of versatility such that the designer can
decide on the amount of RAM, ROM and I/O ports needed to fit the task at hand. This is not
the case with Microcontrollers.

A Microcontroller has a CPU (a microprocessor) in addition to a fixed amount of


RAM, ROM, I/O ports, and a timer all on a single chip. In other words, the processor, the
RAM, ROM, I/O ports and the timer are all embedded together on one chip; therefore, the
designer cannot add any external memory, I/O ports, or timer to it. The fixed amount of on-
chip ROM, RAM, and number of I/O ports in Microcontrollers makes them ideal for many
applications in which cost and space are critical.

In many applications, for example a TV remote control, there is no need for the
computing power of a 486 or even an 8086 microprocessor. These applications most often
require some I/O operations to read signals and turn on and off certain bits.

1.4 Microcontrollers For Embedded Systems

In the Literature discussing microprocessors, we often see the term Embedded


System. Microprocessors and Microcontrollers are widely used in embedded system
products. An embedded system product uses a microprocessor (or Microcontroller) to do one
task only. A printer is an example of embedded system since the processor inside it performs
one task only; namely getting the data and printing it. Contrast this with a Pentium based PC.
A PC can be used for any number of applications such as word processor, print-server, bank
teller terminal, Video game, network server, or Internet terminal. Software for a variety of
applications can be loaded and run. Of course the reason a pc can perform myriad tasks is that
it has RAM memory and an operating system that loads the application software into RAM
memory and lets the CPU run it.

In an Embedded system, there is only one application software that is typically burned
into ROM. An x86 PC contains or is connected to various embedded products such as
keyboard, printer, modem, disk controller, sound card, CD-ROM drives, mouse, and so on.
Each one of these peripherals has a Microcontroller inside it that performs only one task. For
example, inside every mouse there is a Microcontroller to perform the task of finding the
mouse position and sending it to the PC. Table 1-1 lists some embedded products.

ARM ARCHITECTURE: AN OVERVIEW

Introduction
ARM is a 32-bit RISC processor architecture developed by the ARM
Corporation. ARM processors possess a unique combination of features that makes
ARM the most popular embedded architecture today. First, ARM cores are very simple
compared to most other general-purpose processors, which means that they can be
manufactured using a comparatively small number of transistors, leaving plenty of
space on the chip for application specific macro cells. A typical ARM chip can contain
several peripheral controllers, a digital signal processor, and some amount of on-chip
memory, along with an ARM core. Second, both ARM ISA and pipeline design are
aimed at minimizing energy consumption — a critical requirement in mobile embedded
systems. Third, the ARM architecture is highly modular: the only mandatory
component of an ARM processor is the integer pipeline; all other components, including
caches, MMU, floating point and other co-processors are optional, which gives a lot of
flexibility in building application-specific ARM-based processors. Finally, while being
small and low-power, ARM processors provide high performance for embedded
applications.
For example, the PXA255 XScale processor running at 400MHz provides
performance comparable to Pentium 2 at 300MHz, while using fifty times less energy.

ARM vs. RISC


In most respects, ARM is RISC architecture. Like all RISC architectures, the
ARM ISA is a load-store one, that is, instructions that process data operate only on
registers and are separate from instructions that access memory. All ARM instructions
are 32-bit long and most of them have a regular three-operand encoding. Finally, the
ARM architecture features a large register file with 16 general-purpose registers. All of
the above features facilitate pipelining of the ARM architecture. However, the ARM
architecture deviated from the RISC architecture in some respects to improve its
performance. The ARM did not include register windows that were used by original
RISC architectures to reduce complexity.
The ARM architecture introduced an auto-indexing addressing mode, where the
value of an index register is incremented or decremented while a load or store is in
progress. ARM supports multiple register- transfer instructions that allow loading or
storing up to 16 registers at once.

Thumb instruction set extension


The Thumb instruction set was introduced in the fourth version of the ARM
architecture in order to achieve higher code density for embedded applications. Thumb
provides a subset of the most commonly used 32-bit ARM instructions which have been
compressed into 16-bit wide opcodes. On execution, these 16-bit instructions can be
either decompressed to full 32- bit ARM instructions or executed directly using a
dedicated Thumb decoding unit. Although Thumb code uses 40% more instructions
than equivalent 32-bit ARM code, it typically requires 30% less space. Thumb code is
40% slower than ARM code; therefore Thumb is usually used only in non-performance-
critical routines in order to reduce memory and power consumption of the system.

Pipeline Design in ARM

The 3-stage pipeline


It is a classical fetch-decode-execute pipeline, which, in the absence of pipeline
hazards and memory accesses, completes one instruction per cycle. The first pipeline
stage reads an instruction from memory and increments the value of the instruction
address register, which stores the value of the next instruction to be fetched. This value
is also stored in the PC register. The next stage decodes the instruction and prepares
control signals required to execute it on. The third stage does all the actual work: it
reads operands from the register file, performs ALU operations, reads or writes
memory, if necessary, and finally writes back modified register values. In case the
instruction being executed is a data processing instruction, the result generated by the
ALU is written directly to the register file and the execution stage completes in one
cycle.
If it is a load or store instruction, the memory address computed by the ALU is
placed on the address bus and the actual memory access is performed during the second
cycle of the execute stage. This pipeline remained unchanged from the first ARM
processor to the ARM7TDMI core.
Fig. Pipeline architecture in ARM7 and ARM9 cores

The 5 stage pipeline


The 3-stage pipeline has the problem of pipeline stall when a memory read or
writes operation is going on, and the next instruction is to be fetched. The solution to
this problem was to use a separate instruction and data cache. First, to make the
pipeline more balanced, ARM9TDMI moved the register read step to the decode stage,
since instruction decode stage was much shorter than the execute stage. Second, the
execute stage was split into 3 stages. The first stage performs arithmetic computations,
the second stage performs memory accesses (this stage remains idle when executing data
processing instructions) and the third stage writes the results back to the register file.
This results in a much better balanced pipeline, which can run at faster clock rate, but
there is one new complication — the need to forward data among pipeline stages to
resolve data dependencies between stages without stalling the pipeline. The ARM10 and
ARM11 came up with the 6-stage and the 8-stage pipeline.

HARDWARE IMPLEMENTATION
Raspberry Pi Board:
Fig. Raspberry Pi 3 Board

BOARD FEATURES
BCM2837 features

A Raspberry Pi 3 board contains BCM2837 controller which supports ARM11


processing unit. This is the Broadcom chip used in the Raspberry Pi 3, and in later
models of the Raspberry Pi 2. The underlying architecture of the BCM2837 is identical
to the BCM2836. The only significant difference is the replacement of the ARMv7 quad
core cluster with a quad-core ARM Cortex A53 (ARMv8) cluster.

The ARM cores run at 1.2GHz, making the device about 50% faster than the Raspberry
Pi 2. The VideocoreIV runs at 400Mhz.

The Raspberry Pi 3 Model B builds upon the features of its predecessors with a new,
faster processor on board to increase its speed. It also features WiFi and Bluetooth Low
Energy capabilities to enhance the functionality and the ability to power more powerful
devices over the USB ports.
 Quad Core 1.2GHz Broadcom BCM2837 64bit CPU
 1GB RAM
 BCM43143 WiFi and Bluetooth Low Energy (BLE) on board
 40-pin Extended GPIO
 4x USB 2 ports
 4 Pole stereo output and composite video port
 Full size HDMI
 CSI camera port for connecting a Raspberry Pi camera
 DSI display port for connecting a Raspberry Pi touchscreen display
 Micro SD port for loading your operating system and storing data
Features:
 Broadcom BCM2837 64bit ARM Cortex-A53 Quad Core Processor SoC running
@ 1.2GHz
 1 GB RAM
 4 x USB2.0 Ports with up to 1.2A output
 Expanded 40-pin GPIO Header
 Video/Audio Out via 4-pole 3.5mm connector, HDMI, CSI camera, or Raw LCD
(DSI)
 Storage: microSD
 10/100 Ethernet (RJ45)
 BCM43143 WiFi on board 802.11n wireless LAN
 Bluetooth Low Energy (BLE) on board (Bluetooth 4.1)
 27 x GPIO
 UART
 I2C bus
 SPI bus with two chip selects
 +3.3V
 +5V
 Ground
 Power Requirements: 5V @ 2.4 A via microUSB power source
 Supports Raspbian, Windows 10 IoT Core, OpenELEC, OSMC, Pidora, Arch
Linux, RISC OS and More.
 Complete compatibility with Raspberry Pi 1 and 2
Raspberry Pi Basic Hardware Setup
• Extra Hardware You Will Need
• The Raspberry Pi board contains a processor and graphics chip, program
memory (RAM) and various interfaces and connectors for external devices.
Some of these devices are essential, others are optional. It operates in the same
way as a standard PC, requiring a keyboard for command entry, a display unit
and a power supply.

Why Extra Hardware You Will Need:


• Since raspberry Pi board operates like PC it requires ‘mass-storage’, but a hard
disk drive of the type found in a typical PC is not really in keeping with the
miniature size of RPi.
• Instead we will use an SD Flash memory card normally used in digital cameras,
configured in such a way to ‘look like’ a hard drive to RPi’s processor.
• RPi will ‘boot’ (load the Operating System into RAM) from this card in the same
way as a PC ‘boots up’ into Windows from its hard disk.
• The following are essential to get started:
• SD card containing Linux Operating system
• USB keyboard
• TV or monitor (with HDMI, DVI, Composite or SCART input)
• Power supply (see Section 1.6 below)
• Video cable to suit the TV or monitor used

Operating System in SD Card


• As the RPi has no internal mass storage or built-in operating system it requires
an SD card preloaded with a version of the Linux Operating System.
• You can create your own preloaded card using any suitable SD card (4GBytes or
above) you have to hand. We suggest you use a new blank card to avoid
arguments over lost pictures.

Keyboard & Mouse


• Most standard USB keyboards and mice will work with the RPi. Wireless
keyboard/mice should also function, and only require a single USB port for an
RF dongle.
Display
• HD TVs and many LCD monitors can be connected using a full-size 'male'
HDMI cable, and with an inexpensive adaptor if DVI is used. HDMI versions 1.3
and 1.4 are supported and a version 1.4 cable is recommended. The RPi outputs
audio and video via HMDI, but does not support HDMI input.
Power Supply
• A standard modern phone charger with a micro USB connector will do,
providing it can supply at least 700mA at +5Vdc.
Cables
• You will need one or more cables to connect up your RPi system.
• Video cable alternatives:
• HDMI-A cable
• HDMI-A cable + DVI adapter
• Composite video cable
• Composite video cable + SCART adaptor
• Audio cable (not needed if you use the HDMI video connection to a TV)
• Ethernet/LAN cable
Internet Connectivity
• This may be via an Ethernet/LAN cable (standard RJ45 connector) or a USB Wi-
Fi adaptor.
• The Rpi V2 Model B Ethernet port is auto-sensing which means that it may be
connected to a router or directly to another computer (without the need for a
crossover cable).

Devices with known issues

1. Interoperability between the Raspberry Pi and USB3.0 hubs. There is an issue with
USB3.0 hubs in conjunction with the use of Full- or Low-speed devices (most mice, most
keyboards) and the Raspberry Pi. A bug in most USB3.0 hub hardware means that the
Raspberry Pi cannot talk to Full- or Low-speed devices connected to a USB3.0 hub. USB2.0
high-speed devices, including USB2.0 hubs, operate correctly when connected via a USB3.0
hub. Avoid connecting Low- or Full-speed devices into a USB3.0 hub. As a workaround, plug
a USB2.0 hub into the downstream port of the USB3.0 hub and connect the low-speed
device, or use a USB2.0 hub between the Pi and the USB3.0 hub, then plug low-speed
devices into the USB2.0 hub.

2. USB1.1webcams

Old webcams may be Full-speed devices. Because these devices transfer a lot of data and
incur additional software overhead, reliable operation is not guaranteed. As a workaround, try
to use the camera at a lower resolution.

3. Esoteric USB sound cards

Expensive "audiophile" sound cards typically use far more bandwidth than is
necessary to stream audio playback. Reliable operation with 96kHz/192kHz DACs is not
guaranteed.As a workaround, forcing the output stream to be CD quality (44.1kHz/48kHz 16-
bit) will reduce the stream bandwidth to reliable levels.

4. Single-TT USB hubs

USB2.0 and 3.0 hubs have a mechanism for talking to Full- or Low-speed devices
connected to their downstream ports called a Transaction Translator. This device buffers high-
speed requests from the host (i.e. the Pi) and transmits them at Full- or Low-speed to the
downstream device. Two configurations of hub are allowed by the USB specification: Single-
TT (one TT for all ports) and Multi-TT (one TT per port).

Because of the OTG hardware limitations, if too many Full- or Low-speed devices are
plugged into a single-TT hub, unreliable operation of the devices may occur. It is
recommended to use a Multi-TT hub to interface with multiple lower-speed devices. As a
workaround, spread lower-speed devices out between the Pi's own USB port and the single-
TT hub.

High-Definition Multimedia Interface (HDMI):

Short for High-Definition Multimedia Interface, it is the first


industry-supported uncompressed, all-digital audio/video interface. It's a
single cable and user-friendly connector that replaces the maze of cabling
behind the home entertainment center. HDMI provides an interface
between any audio/video source, such as a set-top box, DVD player, or A/V
receiver and an audio and/or video monitor, such as a digital television
(DTV), over a single cable. HDMI supports standard, enhanced, or high-
definition video, plus multi-channel digital audio on a single cable. It
transmits all ATSC HDTV standards and supports 8-channel digital audio
with bandwidth to spare to accommodate future enhancements and
requirements.

HDMI was defined to carry 8 channels, of 192kHz, 24-bit


uncompressed audio, which exceeds all current consumer media formats.
In addition, HDMI can carry any flavor of compressed audio format such
as Dolby or DTS. HDMI has the capacity to support existing high-
definition video formats such as 720p, 1080i, and 1080p, along with
support of enhanced definition formats like 480p, as well as standard
definition formats such as NTSC or PAL.

HDTVs, on the other hand, are digital. They use information in the
form of ones and zeros. This information travels through cables as distinct
electrical pulses. HDTVs have an aspect ratio of 16:9, so the picture is
rectangular. They also have a higher resolution -- current HDTV standards
allow for resolutions of up to 1920 x 1080 pixels. HDTV signals can also
be progressive, meaning that the each frame of the moving image is a whole
picture rather than half of one.
Fig HDMI converter

But there's a catch. In order to take advantage of everything HDMI has to


offer, all of the components of a home theater have to be compatible with
them. Some of the features HDMI touts also don't yet exist in the consumer
marketplace. In addition, there's a limit to how long an HDMI cable can
be, and some users complain that the limit is too short to support
convenient setups.
3. HARDWARE IMPLEMENTATION

Block diagram:

Regulated
power supply

Fingerprint Display
module unit

LED
Keypad
indication
(Password) Raspberry pi 3
board
Buzzer
USB Web
Camera
WiFi

Email/Web
streaming

3.2 Regulated Power Supply:

A variable regulated power supply, also called a variable bench power supply, is
one where you can continuously adjust the output voltage to your requirements.
Varying the output of the power supply is the recommended way to test a project after
having double checked parts placement against circuit drawings and the parts
placement guide.

This type of regulation is ideal for having a simple variable bench power
supply. Actually this is quite important because one of the first projects a hobbyist
should undertake is the construction of a variable regulated power supply. While a
dedicated supply is quite handy ,it's much handier to have a variable supply on hand,
especially for testing.

Mainly the microcontroller needs 5 volt power supply. To use these parts we
need to build a regulated 5 volt source. Usually you start with an unregulated power
To make a 5 volt power supply, we use a 7805 voltage regulator IC (Integrated
Circuit).

Circuit Features:-

Vout range 1.25V - 37V

Vin - Vout difference 3V - 40V

Operation ambient temperature 0 - 125°C

Output Imax <1.5A

Minimum Load Currentmax 10Ma

Block Diagram

Power supply:
Every electrical and electronic device that we use in our day-to-day life will
require a power supply. In general, we use an AC supply of 230V 50Hz, but this power
has to be changed into the required form with required values or voltage range for
providing power supply to different types of devices. There are various types of power
electronic converters such as step-down converter, step-up converter, voltage stabilizer,
AC to DC converter, DC to DC converter, DC to AC converter, and so on. For example,
consider the microcontrollers that are used frequently for developing many embedded
systems’ based projects and kits used in real-time applications. These microcontrollers
require a 5V DC supply, so the AC 230V needs to be converted into 5V DC using the
step-down converter in their power supply circuit.

Power supply circuit, the name itself indicates that this circuit is used to supply
the power to other electrical and electronic circuits or devices. There are different types
of power supply circuits based on the power they are used to provide for devices. For
example, the micro-controller based circuits, usually the 5V DC regulated power supply
circuits, are used, which can be designed using different techniques for converting the
available 230V AC power to 5V DC power. Generally the converters with output voltage
less than the input voltage are called as step-down converters.

Step Down the Voltage Level


The step-down converters are used for converting the high voltage into low
voltage. The converter with output voltage less than the input voltage is called as a step-
down converter, and the converter with output voltage greater than the input voltage is
called as step-up converter. There are step-up and step-down transformers which are
used to step up or step down the voltage levels. 230V AC is converted into 12V AC using
a step-down transformer. 12V output of stepdown transformer is an RMS value and its
peak value is given by the product of square root of two with RMS value, which is
approximately 17V.
Step-down Transformer

Step-down transformer consists of two windings, namely primary and secondary


windings where primary can be designed using a less-gauge wire with more number of
turns as it is used for carrying low-current high-voltage power, and the secondary
winding using a high-gauge wire with less number of turns as it is used for carrying
high-current low-voltage power. Transformers works on the principle of Faraday’s laws
of electromagnetic induction.

Convert AC to DC
230V AC power is converted into 12V AC (12V RMS value wherein the peak
value is around 17V), but the required power is 5V DC; for this purpose, 17V AC power
must be primarily converted into DC power then it can be stepped down to the 5V DC.
But first and foremost, we must know how to convert AC to DC? AC power can be
converted into DC using one of the power electronic converters called as Rectifier. There
are different types of rectifiers, such as half-wave rectifier, full-wave rectifier and bridge
rectifier. Due to the advantages of the bridge rectifier over the half and full wave
rectifier, the bridge rectifier is frequently used for converting AC to DC.
Bridge rectifier consists of four diodes which are connected in the form a bridge.
We know that the diode is an uncontrolled rectifier which will conduct only forward
bias and will not conduct during the reverse bias. If the diode anode voltage is greater
than the cathode voltage then the diode is said to be in forward bias. During positive
half cycle, diodes D2 and D4 will conduct and during negative half cycle diodes D1 and
D3 will conduct. Thus, AC is converted into DC; here the obtained is not a pure DC as it
consists of pulses. Hence, it is called as pulsating DC power. But voltage drop across the
diodes is (2*0.7V) 1.4V; therefore, the peak voltage at the output of this retifier circuit is
15V (17-1.4) approx.

Smoothing the Ripples using Filter


15V DC can be regulated into 5V DC using a step-down converter, but before
this, it is required to obtain pure DC power. The output of the diode bridge is a DC
consisting of ripples also called as pulsating DC. This pulsating DC can be filtered using
an inductor filter or a capacitor filter or a resistor-capacitor-coupled filter for removing
the ripples. Consider a capacitor filter which is frequently used in most cases for
smoothing.

Filter

We know that a capacitor is an energy storing element. In the circuit, capacitor


stores energy while the input increases from zero to a peak value and, while the supply
voltage decreases from peak value to zero, capacitor starts discharging. This charging
and discharging of the capacitor will make the pulsating DC into pure DC, as shown in
figure.
Regulating 12V DC into 5V DC using Voltage Regulator
15V DC voltage can be stepped down to 5V DC voltage using a DC step-down
converter called as voltage regulator IC7805. The first two digits ‘78’ of IC7805 voltage
regulator represent positive series voltage regulators and the last two digits ‘05’ represents the
output voltage of the voltage regulator.

The block diagram of IC7805 voltage regulator is shown in the figure consists of
an operating amplifier acting as error amplifier, zener diode used for providing voltage
reference, as shown in the figure.

Zener Diode as Voltage Reference


Transistor as a series pass element used for dissipating extra energy as heat; SOA
protection (Safe Operating Area) and heat sink are used for thermal protection in case
of excessive supply voltages. In general, an IC7805 regulator can withstand voltage
ranging from 7.2V to 35V and gives maximum efficiency of 7.2V voltage and if the
voltage exceeds 7.2V, then there is loss of energy in the form of heat. To protect the
regulator from over heat, thermal protection is provided using a heat sink. Thus, a 5V
DC is obtained from 230V AC power.

Buzzer:
Buzzer is an electronic device commonly used to produce sound. Light weight, simple
construction and low price make it usable in various applications like car/truck
reversing indicator, computers, call bells etc. Piezo buzzer is based on the inverse
principle of piezo electricity discovered in 1880 by Jacques and Pierre Curie. It is the
phenomena of generating electricity when mechanical pressure is applied to certain
materials and the vice versa is also true. Such materials are called piezo electric
materials. Piezo electric materials are either naturally available or manmade.
Piezoceramic is class of manmade material, which poses piezo electric effect and is
widely used to make disc, the heart of piezo buzzer. When subjected to an alternating
electric field they stretch or compress, in accordance with the frequency of the signal
thereby producing sound.

USB Web Camera:


A webcam is a video camera that feeds or streams its image in real time to or through
a computer to a computer network. When "captured" by the computer, the video stream may
be saved, viewed or sent on to other networks via systems such as the internet, and emailed as
an attachment. When sent to a remote location, the video stream may be saved, viewed or on
sent there. Unlike an IP camera (which connects using Ethernet or Wi-Fi), a webcam is
generally connected by a USB cable, or similar cable, or built into computer hardware, such
as laptops.
The term "webcam" (a clipped compound) may also be used in its original sense of a video
camera connected to the Web continuously for an indefinite time, rather than for a particular
session, generally supplying a view for anyone who visits its web page over the Internet.
Some of them, for example, those used as online traffic cameras, are expensive,
rugged professional video cameras.

Finger Print Module:

This is a finger print sensor module with TTL UART interface. The user can store the
finger print data in the module and can configure it in 1:1 or 1: N mode for identifying
the person. The finger print module can directly interface with 3v3 or 5v
Microcontroller. A level converter (like MAX232) is required for interfacing with PC.

Features:
 Power DC : 3.6V-6.0V
 Interface : UART (TTL logical level)/ USB 1.1
 Working current : 100mA
 Peak Current : 150mA
 Matching Mode: 1:1 and 1:N
 Baud rate (9600*N)bps, N=1-12 (default N=6 57600bps)
 Character file size: 256 bytes
 Image acquiring time : <0.5s
 Template size : 512 bytes
 Storage capacity: 256
 Security level : 5 (1, 2, 3, 4, 5(highest))
 FAR : <0.001%
 FRR: <0.1%
 Average searching time: < 0.8s (1:880)
 Window dimension : 18mm*22mm

Working environment:
 Temp: -10?- +40?
 Storage environment Temp: -40?- +85?
 RH: 40%-85% RH: <85%

Pinout:
Dimensions:

Relay:
A relay is an electrically operated switch. Many relays use an electromagnet to mechanically
operate a switch, but other operating principles are also used, such as solid-state relays.
Relays are used where it is necessary to control a circuit by a separate low-power signal, or
where several circuits must be controlled by one signal. The first relays were used in long
distance telegraph circuits as amplifiers: they repeated the signal coming in from one circuit
and re-transmitted it on another circuit. Relays were used extensively in telephone exchanges
and early computers to perform logical operations.
The heart of a relay is an electromagnet (a coil of wire that becomes a
temporary magnet when electricity flows through it). You can think of a relay as a kind of
electric lever: switch it on with a tiny current and it switches on ("leverages") another
appliance using a much bigger current. Why is that useful? As the name suggests, many
sensors are incredibly sensitive pieces of electronic equipment and produce only small
electric currents. But often we need them to drive bigger pieces of apparatus that use bigger
currents. Relays bridge the gap, making it possible for small currents to activate larger ones.
That means relays can work either as switches (turning things on and off) or as amplifiers
(converting small currents into larger ones).
Here are two simple animations illustrating how relays use one circuit to switch on a
second circuit.
When power flows through the first circuit (1), it activates the electromagnet (brown),
generating a magnetic field (blue) that attracts a contact (red) and activates the second circuit
(2). When the power is switched off, a spring pulls the contact back up to its original position,
switching the second circuit off again.
This is an example of a "normally open" (NO) relay: the contacts in the second circuit
are not connected by default, and switch on only when a current flows through the magnet.
Other relays are "normally closed" (NC; the contacts are connected so a current flows
through them by default) and switch off only when the magnet is activated, pulling or
pushing the contacts apart. Normally open relays are the most common.
Here's another animation showing how a relay links two circuits together. It's
essentially the same thing drawn in a slightly different way. On the left side, there's an input
circuit powered by a switch or a sensor of some kind. When this circuit is activated, it feeds
current to an electromagnet that pulls a metal switch closed and activates the second, output
circuit (on the right side). The relatively small current in the input circuit thus activates the
larger current in the output circuit:
The input circuit (black loop) is switched off and no current flows through it until
something (either a sensor or a switch closing) turns it on. The output circuit (blue loop) is
also switched off.
When a small current flows in the input circuit, it activates the electromagnet (shown
here as a red coil), which produces a magnetic field all around it.
The energized electromagnet pulls the metal bar in the output circuit toward it, closing
the switch and allowing a much bigger current to flow through the output circuit.
The output circuit operates a high-current appliance such as a lamp or an electric
motor.

A type of relay that can handle the high power required to directly control an electric
motor or other loads is called a contactor. Solid-state relays control power circuits with
no moving parts, instead using a semiconductor device to perform switching. Relays with
calibrated operating characteristics and sometimes multiple operating coils are used to protect
electrical circuits from overload or faults; in modern electric power systems these functions
are performed by digital instruments still called "protective relays".
Magnetic latching relays require one pulse of coil power to move their contacts in one
direction, and another, redirected pulse to move them back. Repeated pulses from the same
input have no effect. Magnetic latching relays are useful in applications where interrupted
power should not be able to transition the contacts.
Magnetic latching relays can have either single or dual coils. On a single coil device,
the relay will operate in one direction when power is applied with one polarity, and will reset
when the polarity is reversed. On a dual coil device, when polarized voltage is applied to the
reset coil the contacts will transition. AC controlled magnetic latch relays have single coils
that employ steering diodes to differentiate between operate and reset commands.
OPERATING SYSTEM

LINUX:

Linux or GNU/Linux is a free and open source software operating system for
computers. The operating system is a collection of the basic instructions that tell the
electronic parts of the computer what to do and how to work. Free and open source software
(FOSS) means that everyone has the freedom to use it, see how it works, and changes it.

There is a lot of software for Linux, and since Linux is free software it means that
none of the software will put any license restrictions on users. This is one of the reasons why
many people like to use Linux.

A Linux-based system is a modular Unix-like operating system. It derives much


of its basic design from principles established in Unix during the 1970s and 1980s. Such
a system uses a monolithic kernel, the Linux kernel, which handles process control,
networking, and peripheral and file system access. Device drivers are either integrated
directly with the kernel or added as modules loaded while the system is running.

Separate projects that interface with the kernel provide much of the system's
higher-level functionality. The GNU user land is an important part of most Linux-based
systems, providing the most common implementation of the C library, a popular shell,
and many of the common Unix tools which carry out many basic operating system
tasks. The graphical user interface (or GUI) used by most Linux systems is built on top
of an implementation of the X Window System. Some components of an installed Linux
system are:

A boot loader, for example GNU GRUB or LILO. This is a program which is
executed by the computer when it is first turned on, and loads the Linux kernel into
memory.

 An init program. This is the first process launched by the Linux kernel, and is at
the root of the process tree: in other terms, all processes are launched through
init. It starts processes such as system services and login prompts (whether
graphical or in terminal mode).
 Software libraries which contain code which can be used by running processes.
On Linux systems using ELF-format executable files, the dynamic linker which
manages use of dynamic libraries is "ld-linux.so". The most commonly used
software library on Linux systems is the GNU C Library. If the system is set up
for the user to compile software themselves, header files will also be included to
describe the interface of installed libraries.

 User interface programs such as command shells or windowing environments.

User interface

Main article: Desktop Linux

The user interface, also known as the shell, is either a command-line interface
(CLI), a graphical user interface (GUI), or through controls attached to the associated
hardware, which is common for embedded systems. For desktop systems, the default
mode is usually a graphical user interface, although the CLI is available through
terminal emulator windows or on a separate virtual console. Most low-level Linux
components, including the GNU userland, use the CLI exclusively. The CLI is
particularly suited for automation of repetitive or delayed tasks, and provides very
simple inter-process communication.

On desktop systems, the most popular user interfaces are the extensive desktop
environments KDE Plasma Desktop, GNOME, Cinnamon, Unity, LXDE, Pantheon and
Xfce, though a variety of additional user interfaces exist. Most popular user interfaces
are based on the X Window System, often simply called "X". It provides network
transparency and permits a graphical application running on one system to be
displayed on another where a user may interact with the application.

Raspbian OS

What OS we use in our Raspberry Pi board

• For raspberry pi we have to install raspbian ‘OS’


• What is raspbian??
• Raspbian is a free operating system based on Debian optimized for the
Raspberry Pi hardware. An operating system is the set of basic programs and
utilities that make your Raspberry Pi run. However, Raspbian provides more
than a pure OS: it comes with over 35,000 packages, pre-compiled software
bundled in a nice format for easy installation on your Raspberry Pi.

• The initial build of over 35,000 Raspbian packages, optimized for best
performance on the Raspberry Pi, was completed in June of 2012. However,
Raspbian is still under active development with an emphasis on improving the
stability and performance of as many Debian packages as possible.

SOFTWARE TOOLS

QT EMBEDDED FRAME WORK

Qt is a cross-platform application framework that is widely used for


developing application software with a graphical user interface (GUI) (in which cases
Qt is classified as a widget toolkit), and also used for developing non-GUI programs such
as command-line tools and consoles for servers.
Qt uses standard C++ but makes extensive use of a special code generator (called
the Meta Object Compiler, or moc) together with several macros to enrich the language.
Qt can also be used in several other programming languages via language bindings. It
runs on the major desktop platforms and some of the mobile platforms. It has
extensive internationalization support. Non-GUI features include SQL database
access, XML parsing; thread management, network support, and a unified cross-
platform application programming interface (API) for file handling.

Applications of the Qt framework

Qt is available under 3 different licensing, the GNU LGPL v 2.1, GUN GPL v.3.0, and
the Qt Commercial Developer License. The Qt framework is used by other widely used
softwares, such as VLC media player, Virtualbox, KDE, etc. As users today uses a
variety of different platforms, it is important that developers can have a GUI front that
can be run in most OS environment and it is easy to implement, and it interfaces well
with the existing language they are using to build the back end of the software without
or with little overhead. This is where the Qt framework comes into play.

Because it has a wide range of language bindings, including but not limited to C++, C#
and .NET, Java, Perl, PHP, and Python, you can use the Qt framework with most
common programming and scripting languages. The most noticeable ones are the KDE
desktop environment, and the Nokia N900 interface. Since Nokia purchased the
company that developed Qt, their recent product (came out in Dec 2009) N900's user
interface is built using the Qt Creator, which is the IDE for Qt framework. Though the
sell of N900 is not as high as expected, and the touch screen feature was not as smooth as
Apple products, its multi-tasking feature was more advanced compared to the iOS at
that time and since it is open source, there is no “development fee” which makes it
accessible to every programmer. The KDE desktop environment have been around since
1996, and the founder Matthias Ettrich chose Qt from the start, and still using Qt to this
date.

Technology of Qt framework

As Qt is build on C++, it inherited most of the features of C++, like Objective Oriented
Concepts, Modeling etc, but it also used special code generator, QML which is an easy to
use declarative language. And with integration of the open source WebKit rendering
engine into Qt, it is easier to create web-enabled applications.

Implementation

As Qt is based on C++, it can be easily ported on to different platforms, such as


Embedded Linux, Max OS X, Windows, Linux/X11, Windows CE, Symbian, and
MeeGo. Since it is open source, it is free to use, and with a different user communities,
finding tutorials and the books you need would only take less than a day. The Qt
framework for embedded Linux also comes with its own window system, which writes
directly to the Linux frame buffer, eliminating the need for the X11 windowing system.
The Qt also comes with different IDE other than its own. It has support for Eclipse,
Visual Studio, Netbean. User can choose the IDE or their choice and still use Qt for their
application development.

Design:

Modules

 Modules for general software development

 QtCore – contains core non-GUI classes, including the event loop and Qt's
signal and slot mechanism, platform independent abstractions
for Unicode, threads, mapped files, shared memory, regular expressions,
and user and application settings

 QtGui – contains most GUI classes; including many table, tree and list
classes based on model–view–controller design pattern; also provides
sophisticated 2D canvas widget able to store thousands of items including
ordinary widgets

 QtMultimedia – implements low-level multimedia functionality

 QtNetwork – contains classes for writing UDP and TCP clients and
servers; implementing FTP and HTTP clients, supportingDNS lookups;
network events are integrated with the event loop making it very easy to
develop networked applications
 QtOpenGL – contains classes that enable the use of OpenGL in
rendering 3D graphics

 QtOpenVG – a plugin that provides support for OpenVG painting

 QtScript – an ECMAScript-based scripting engine

 QtScriptTools – provides added components for applications using


QtScript

 QtSql – contains classes that integrate with open-source and proprietary


SQL databases. It includes editable data models for database tables that
can be used with GUI classes. It also includes an implementation
of SQLite

 QtSvg – contains classes for displaying the contents of SVG files. It


supports the static features of SVG 1.2 Tiny

 QtWebKit – provides a WebKit-based layout engine as well as classes to


render and interact with web content

 QtXml – implements SAX and DOM interfaces to Qt's XML parser

 QtXmlPatterns – provides support


for XPath, XQuery, XSLT and XML Schema validation

 Phonon – multimedia API, provides simple multimedia control

 Qt3Support – provides classes that ease porting from Qt 3 to Qt 4

 Qt Declarative module is a declarative framework for building fluid user


interfaces in QML

 Modules for working with Qt's tools

 QtDesigner

 QtUiTools

 QtHelp

 QtTest
 Modules for Unix developers

 QtDBus – a library to perform inter-process communication via D-


Bus protocol

 Modules for Windows developers

 QAxContainer – an extension for accessing ActiveX controls and COM


objects

 QAxServer – a static library to turn a standard Qt binary into a COM


server.

GCC COMPILER

The original GNU C Compiler (GCC) is developed by Richard Stallman, the


founder of the GNU Project. Richard Stallman founded the GNU project in 1984 to
create a complete Unix-like operating system as free software, to promote freedom and
cooperation among computer users and programmers.

GCC, formerly for "GNU C Compiler", has grown over times to support many
languages such as C++, Objective-C, Java, Fortran and Ada. It is now referred to as
"GNU Compiler Collection". The mother site for GCC is http://gcc.gnu.org/.

GCC is a key component of "GNU Toolchain", for developing applications, as


well as operating systems. The GNU Toolchain includes:

GNU Compiler Collection (GCC): a compiler suit that supports many languages,
such as C/C++, Objective-C and Java.

GNU Make: an automation tool for compiling and building applications.

GNU Binutils: a suit of binary utility tools, including linker and assembler.

GNU Debugger (GDB).


GNU Autotools: A build system including Autoconf, Autoheader, Automake and
Libtool.

GNU Bison: a parser generator (similar to lex and yacc).

GCC is portable and run in many operating platforms. GCC (and GNU
Toolchain) is currently available on all Unixes. They are also ported to Windows by
MinGW and Cygwin. GCC is also a cross-compiler, for producing executables on
different platform.

PROTOCOLS

HTTP PROTOCO (HyperText Transfer Protocol)

The WEB Internet (or The Web) is a massive distributed client/server


information system as depicted in the following diagram.

Figure-10.1: HTTP protocol

Many applications are running concurrently over the Web, such as web
browsing/surfing, e-mail, file transfer, audio & video streaming, and so on. In order for
proper communication to take place between the client and the server, these
applications must agree on a specific application-level protocol such as HTTP, FTP,
SMTP, POP, and etc.

HTTP defines methods (sometimes referred to as verbs) to indicate the desired


action to be performed on the identified resource. What this resource represents,
whether pre-existing data or data that is generated dynamically, depends on the
implementation of the server. Often, the resource corresponds to a file or the output of
an executable residing on the server. The HTTP/1.0 specification defined the GET,
POST and HEAD methods and the HTTP/1.1 specification added 5 new methods:
OPTIONS, PUT, DELETE, TRACE and CONNECT. By being specified in these
documents their semantics are well known and can be depended on. Any client can use
any method and the server can be configured to support any combination of methods. If
a method is unknown to an intermediate it will be treated as an unsafe and non-
idempotent method. There is no limit to the number of methods that can be defined and
this allows for future methods to be specified without breaking existing infrastructure.
For example, WebDAV defined 7 new methods and RFC 5789 specified the PATCH
method.

GET

The GET method requests a representation of the specified resource. Requests


using GET should only retrieve data and should have no other effect. (This is also true
of some other HTTP methods.)[1] The W3C has published guidance principles on this
distinction, saying, "Web application design should be informed by the above
principles, but also by the relevant limitations."See safe methods below.

HEAD

The HEAD method asks for a response identical to that of a GET request, but
without the response body. This is useful for retrieving meta-information written in
response headers, without having to transport the entire content.

POST

The POST method requests that the server accept the entity enclosed in the
request as a new subordinate of the web resource identified by the URI. The data
POSTed might be, for example, an annotation for existing resources; a message for a
bulletin board, newsgroup, mailing list, or comment thread; a block of data that is the
result of submitting a web form to a data-handling process; or an item to add to a
database.
PUT

The PUT method requests that the enclosed entity be stored under the supplied
URI. If the URI refers to an already existing resource, it is modified; if the URI does not
point to an existing resource, then the server can create the resource with that URI.[15]

DELETE

The DELETE method deletes the specified resource.

TRACE

The TRACE method echoes the received request so that a client can see what (if
any) changes or additions have been made by intermediate servers.

OPTIONS

The OPTIONS method returns the HTTP methods that the server supports for
the specified URL. This can be used to check the functionality of a web server by
requesting '*' instead of a specific resource.

CONNECT

The CONNECT method converts the request connection to a transparent


TCP/IP tunnel, usually to facilitate SSL-encrypted communication (HTTPS) through an
unencrypted HTTP proxy. See HTTP CONNECT tunneling.

PATCH

The PATCH method applies partial modifications to a resource.

All general-purpose HTTP servers are required to implement at least the GET
and HEAD methods, and, whenever possible, also the OPTIONS method.

Safe methods

Some of the methods (for example, HEAD, GET, OPTIONS and TRACE) are, by
convention, defined as safe, which means they are intended only for information
retrieval and should not change the state of the server. In other words, they should not
have side effects, beyond relatively harmless effects such as logging, caching, the serving
of banner advertisements or incrementing a web counter. Making arbitrary GET
requests without regard to the context of the application's state should therefore be
considered safe. However, this is not mandated by the standard, and it is explicitly
acknowledged that it cannot be guaranteed.

By contrast, methods such as POST, PUT, DELETE and PATCH are intended
for actions that may cause side effects either on the server, or external side effects such
as financial transactions or transmission of email. Such methods are therefore not
usually used by conforming web robots or web crawlers; some that do not conform tend
to make requests without regard to context or consequences.

Despite the prescribed safety of GET requests, in practice their handling by the
server is not technically limited in any way. Therefore, careless or deliberate
programming can cause non-trivial changes on the server. This is discouraged, because
it can cause problems for web caching, search engines and other automated agents,
which can make unintended changes on the server.

Idempotent methods and web applications

Methods PUT and DELETE are defined to be idempotent, meaning that multiple
identical requests should have the same effect as a single request (note that idempotence
refers to the state of the system after the request has completed, so while the action the
server takes (e.g. deleting a record) or the response code it returns may be different on
subsequent requests, the system state will be the same every time). Methods GET,
HEAD, OPTIONS and TRACE, being prescribed as safe, should also be idempotent, as
HTTP is a stateless protocol.[1]

In contrast, the POST method is not necessarily idempotent, and therefore


sending an identical POST request multiple times may further affect state or cause
further side effects (such as financial transactions). In some cases this may be desirable,
but in other cases this could be due to an accident, such as when a user does not realize
that their action will result in sending another request, or they did not receive adequate
feedback that their first request was successful. While web browsers may show alert
dialog boxes to warn users in some cases where reloading a page may re-submit a POST
request, it is generally up to the web application to handle cases where a POST request
should not be submitted more than once.

Note that whether a method is idempotent is not enforced by the protocol or web
server. It is perfectly possible to write a web application in which (for example) a
database insert or other non-idempotent action is triggered by a GET or other request.
Ignoring this recommendation, however, may result in undesirable consequences, if a
user agent assumes that repeating the same request is safe when it isn't.

Security

The TRACE method can be used as part of a class of attacks known as cross-site
tracing; for that reason, common security advice is for it to be disabled in the server
configuration. Microsoft IIS supports a proprietary "TRACK" method, which behaves
similarly, and which is likewise recommended to be disabled.

Figure 10.2HyperText Transfer Protocol


HTTP is a stateless protocol. In other words, the current request does not know
what has been done in the previous requests.

HTTP permits negotiating of data type and representation, so as to allow systems


to be built independently of the data being transferred.

Quoting from the RFC2616: "The Hypertext Transfer Protocol (HTTP) is an


application-level protocol for distributed, collaborative, hypermedia information
systems. It is a generic, stateless, protocol which can be used for many tasks beyond its
use for hypertext, such as name servers and distributed object management systems,
through extension of its request methods, error codes and headers."

Browser :

Whenever you issue a URL from your browser to get a web resource using
HTTP, e.g. http://www.test101.com/index.html, the browser turns the URL into a
request message and sends it to the HTTP server. The HTTP server interprets the
request message, and returns you an appropriate response message, which is either the
resource you requested or an error message. This process is illustrated below:

Figure .10.3 Browser

Uniform Resource Locator (URL)


URL is an acronym for Uniform Resource Locator and is a reference (an
address) to a resource on the Internet. A URL has two main components: Protocol
identifier: For the URL http://example.com , the protocol identifier is http . Resource
name: For the URL http://example.com , the resource name is example.com

A URL is the most common type of Uniform Resource Identifier (URI). URIs are
strings of characters used to identify a resource over a network.

URL protocols include HTTP (Hypertext Transfer Protocol) and HTTPS (HTTP
Secure) for web resources, "mailto" for email addresses, "ftp" for files on a File
Transfer Protocol (FTP)server, and telnet for a session to access remote computers.

 A URL is mainly used to point to a webpage, a component of a webpage or


a program on a website. The resource name consists of:

 A domain name identifying a server or the web service; and

 A program name or a path to the file on the server.

 Optionally, it can also specify:

 A network port to use in making the connection; or

 A specific reference point within a file -- a named anchor in


an HTML (Hypertext Markup Language) file.

For example, http://www.ietf.org/rfc/rfc2396.htm specifies that:

The resource is to be retrieved using the HTTP protocol (which powers the web)
via a web browser;

The resource is reached through the domain name system (DNS) name, which
could be a single server, a load-balanced cluster of servers or a service running on a
system with a different name); and The path to the specific resource is /rfc/rfc2396.htm.
In the following example, the URL would retrieve the file at the point marked
with the named anchor "index": http://www.ietf.org/rfc/rfc2396.htm#index

The following example -- https://delphicoracle.gr:45678/Prohesy?year=2020 --


specifies:

 Use of the encrypted (secure) version of HTTP: HTTPS;

 Use of a nonstandard port (45678) for the communication; and

 Invocation of a program, "Prohesy" with parameter "year" set to value "2020".

Finally, this example -- ftp://www.somecompany.com/whitepapers/widgets.ps --


specifies use of the FTP protocol to download a file

A URL (Uniform Resource Locator) is used to uniquely identify a resource over


the web. URL has the following syntax: protocol://hostname:port/path-and-file-name

There are 4 parts in a URL:

1. Protocol: The application-level protocol used by the client and server, e.g., HTTP,
FTP, and telnet.

2. Hostname: The DNS domain name (e.g., www.test101.com) or IP address (e.g.,


192.128.1.2) of the server.

3. Port: The TCP port number that the server is listening for incoming requests
from the clients.

4. Path-and-file-name: The name and location of the requested resource, under the
server document base directory.

10.1 HTML :

HyperText Markup Language (HTML) is the standard markup language for


creating web pages and web applications. With Cascading Style Sheets (CSS),
and JavaScript, it forms a triad of cornerstone technologies for the World Wide
Web. Web browsers receive HTML documents from a web server or from local storage
and render them into multimedia web pages. HTML describes the structure of a web
page semantically and originally included cues for the appearance of the document.

HTML elements are the building blocks of HTML pages. With HTML
constructs, images and other objects, such as interactive forms may be embedded into
the rendered page. It provides a means to create structured documents by denoting
structural semantics for text such as headings, paragraphs, lists, links, quotes and other
items. HTML elements are delineated by tags, written using angle brackets. Tags such
as <img /> and <input /> introduce content into the page directly. Others such
as <p>...</p> surround and provide information about document text and may include
other tags as sub-elements. Browsers do not display the HTML tags, but use them to
interpret the content of the page.

HTML can embed programs written in a scripting language such


as JavaScript which affect the behavior and content of web pages. Inclusion of CSS
defines the look and layout of content. The World Wide Web Consortium (W3C),
maintainer of both the HTML and the CSS standards, has encouraged the use of CSS
over explicit presentational HTML since 1997.

<!DOCTYPE html>

<html>

<head>

<title>This is a title</title>

</head>

<body>

<p>Hello world!</p>

</body>

</html>

The text between <html> and </html> describes the web page, and the text
between <body> and </body> is the visible page content. The markup text "<title>This
is a title</title>" defines the browser page title.)
The Document Type Declaration <!DOCTYPE html> is for HTML5. If a
declaration is not included, various browsers will revert to "quirks mode" for rendering

The general form of an HTML element is


therefore: <tag attribute1="value1" attribute2="value2">''content''</tag>. Some
HTML elements are defined as empty elements and take the
form <tag attribute1="value1" attribute2="value2">. Empty elements may enclose no
content, for instance, the <br> tag or the inline <img>tag. The name of an HTML
element is the name used in the tags. Note that the end tag's name is preceded by a slash
character, "/", and that in empty elements the end tag is neither required nor allowed. If
attributes are not mentioned, default values are used in each case.

Header of the HTML document:<head>...</head>. The title is included in the


head, for example:

<head>

<title>The Title</title>

</head>

Headings: HTML headings are defined with the <h1> to <h6> tags:

<h1>Heading level 1</h1>

<h2>Heading level 2</h2>

<h3>Heading level 3</h3>

<h4>Heading level 4</h4>

<h5>Heading level 5</h5>

<h6>Heading level 6</h6>

Paragraphs:

<p>Paragraph 1</p> <p>Paragraph 2</p>


Line breaks:<br>. The difference between <br> and <p> is that "br" breaks a
line without altering the semantic structure of the page, whereas "p" sections the page
intoparagraphs. Note also that "br" is an empty element in that, although it may have
attributes, it can take no content and it may not have an end tag.

<p>This <br> is a paragraph <br> with <br> line breaks</p>

This is a link in HTML. To create a link the <a> tag is used. The href= attribute
holds the URL address of the link.

<a href="https://www.wikipedia.org/">A link to Wikipedia!</a>

“OS” INSTALLATION

System Setup and Configurations

In order to use your Raspberry Pi, you will need to install an Operating System (OS)
onto an SD card. An Operating System is the set of basic programs and utilities that
allow your computer to run; Examples include Windows on a PC or OSX on a Mac.
These instructions will guide you through installing a recovery program on your SD
card that will allow you to easily install different OS’s and to recover your card if you
break it.
1. Insert an SD card that is 4GB or greater in size into your computer
2. Format the SD card so that the Pi can read it
a. Windows
i. Download the SD Association's Formatting Tool1 from
https://www.sdcard.org/downloads/formatter_4/eula_windows/
ii. Install and run the Formatting Tool on your machine
iii. Set "FORMAT SIZE ADJUSTMENT" option to "ON" in the "Options" menu
iv. Check that the SD card you inserted matches the one selected by the Tool
v. Click the “Format” button
b. Mac
i. Download the SD Association's Formatting Tool from
https://www.sdcard.org/downloads/formatter_4/eula_mac/
ii. Install and run the Formatting Tool on your machine
iii. Select “Overwrite Format”
iv. Check that the SD card you inserted matches the one selected by the Tool
v. Click the “Format” button
c. Linux
i. We recommend using gparted (or the command line version parted)
ii. Format the entire disk as FAT
3. Download the New out Of Box Software (NOOBS) from:
downloads.raspberrypi.org/noobs
4. Unzip the downloaded file
a. Windows Right clicks on the file and choose “Extract all”
b. Mac Double taps on the file
c. Linux Run unzip [downloaded filename]
5. Copy the extracted files onto the SD card that you just formatted
6. Insert the SD card into your Pi and connect the power supply Your Pi will now boot
into NOOBS and should display a list of operating systems that you can choose to
install. If your display remains blank, you should select the correct output mode for
your display by pressing one of the following number keys on your keyboard;
1. HDMI mode this is the default display mode.
2. HDMI safe mode selects this mode if you are using the HDMI connector and cannot
see anything on screen when the Pi has booted.
3. Composite PAL mode selects either this mode or composite NTSC mode if you are
using the composite RCA video connector
4. Composite NTSC mode
CONCLUSION

The project “FINGERPRINT AND PASSWORD BASED DOOR LOCK


SYSTEM USING RASPBERRY PI” has been successfully designed and tested. It has been
developed by integrating features of all the hardware components used. Presence of every
module has been reasoned out and placed carefully thus contributing to the best working of
the unit.
Secondly, using highly advanced IC’s and with the help of growing technology the
project has been successfully implemented.

Vous aimerez peut-être aussi