Voice Controlled Wheel Chair
Voice Controlled Wheel Chair
INTRODUCTION
The project titled “VOICE CONTROLLED WHEEL CHAIR ” describes the design of a
simple, low-cost microcontroller based robot for helping disabled persons. Robot is an intelligent
agent that can perform tasks automatically or with guidance, typically by remote control. A robot
is usually an electro-mechanical machine that is guided by computer and electronic programming.
A general-purpose definition of embedded systems is that they are devices used to control,
monitor or assist the operation of equipment, machinery or plant. "Embedded" reflects the fact that
they are an integral part of the system. In many cases their embeddedness may be such that their
presence is far from obvious to the casual observer and even the more technically skilled might
need to examine the operation of a piece of equipment for some time before being able to conclude
that an embedded control system was involved in its functioning. At the other extreme a general-
purpose computer may be used to control the operation of a large complex processing plant, and its
presence will be obvious.
The very simplest embedded systems are capable of performing only a single function or set
of functions to meet a single predetermined purpose. In more complex systems an application
program that enables the embedded system to be used for a particular purpose in a specific
application determines the functioning of the embedded system. The ability to have programs
means that the same embedded system can be used for a variety of different purposes. In some
cases a microprocessor may be designed in such a way that application software for a particular
purpose can be added to the basic software in a second process, after which it is not possible to
make further changes. The applications software on such processors is sometimes referred to as
firmware.
The simplest devices consist of a single microprocessor (often called a "chip”), which may
itself be packaged with other chips in a hybrid system or Application Specific Integrated Circuit
(ASIC). Its input comes from a detector or sensor and its output goes to a switch or activator which
(for example) may start or stop the operation of a machine or, by operating a valve, may control
the flow of fuel to an engine.
Software deals with the languages like ALP, C, and VB etc., and Hardware deals with Processors,
Peripherals, and Memory.
It is an electronic chip which performs arithmetic and logical operations with assistance of internal
memory.
ALU
CU
MEM
ORY
It is a highly integrated micro processor designed for specific use in embedded systems.
Embedded controllers may be found in many different kinds of system and are used for
many different applications. The list, which follows, is indicative rather than exhaustive. An item
in the list may be relevant to a particular company because either (a) it is or involves a core process
or product, (b) it is or involves an ancillary function or service performed by the company or (c) it
refers to a product or service provided by a contractor under some form of agreement and the
vulnerability of the supplier may need to be considered.
Construction industry
Transport
Buildings and premises
Domestic service
Communications
Multi-loop control and monitoring - DCS, SCADA, telemetry Panel mounted devices - Control,
display, recording and operations.
Safety and security - Alarm and trip systems, fire and gas systems, buildings and facilities security.
Field devices - measurement, actuation.
Analytical systems - Laboratory systems; on-line/ plant systems.
Electrical supply - supply, measurement, control, protection.
Tools - for design, documentation, testing, maintenance.
The Year 2000 problem in embedded systems differs from the problem in commercial /
database / transaction processing systems (often referred to as IT systems) in a number of ways.
Firstly the user's problem may much lie much deeper than packages or applications software. It
may lie in and be inseparable from systems and operating software and from hardware, i.e. in the
platform on which the application software is based. When users of IT systems have hardware or
operating software problems they can and should be made the concern of the computer supplier:
typically, this is not the case with microprocessors and devices based on them.
Secondly in embedded systems the concern is often with intervals rather than with specific
dates: the need may be for an event to occur at 100-day intervals rather than on the 5th day of each
month. This has the implication that Year 2000 problems may reveal themselves both before and
for some time after 1 January 2000 and not at all on the date itself.
The lifetime of embedded systems tends to be greater than that of commercial data
processing systems: they remain in use for longer without alteration to their software. Because
their software may therefore be older they are rendered more liable to Year 2000 problems.
1.HARDWARE DISCRIPTION
The basic elements used in ‘VOICE CONTROLLED WHEEL CHAIR’ are :
1.1. MICROCONTROLLER:
The microcontroller used is 89C51/52. The features of this µcontroller are as follows:
ISP (In System Programming) using standard VCC power supply.
Boot FLASH contains low level FLASH programming routines and a default serial
loader
Compare / Capture,
Idle Mode.
Power-down mode.
The 8051/52 is the name of a big family of microcontrollers. The device which we are
going to use along this tutorial is the 'AT89C51' which is a typical 8051 microcontroller
manufactured by Atmel™. Note that this part doesn't aim to explain the functioning of the
different components of an 89C51 microcontroller, but rather to give you a general idea of the
organization of the chip and the available features, which shall be explained in detail along this
tutorial.
The block diagram provided by P89V5IRD2 in their datasheet showing the architecture the
89C51/52 device can seem very complicated, and since we are going to use the C high level
language to program it, a simpler architecture can be represented as in the figure
This figure shows the main features and components that the designer can interact with.
You can notice that the 89C51/52 has 4 different ports, each one having 8 Input/output lines
providing a total of 32 I/O lines. Those ports can be used to output DATA and orders do other
devices, or to read the state of a sensor, or a switch. Most of the ports of the 89C51/52 have 'dual
function' meaning that they can be used for two different functions: the first one is to perform
input/output operations and the second one is used to implement special features of the
microcontroller like counting external pulses, interrupting the execution of the program according
to external events, performing serial data transfer or connecting the chip to a computer to update
the software.
Each port has 8 pins, and will be treated from the software point of view as an 8-bit
variable called 'register', each bit being connected to a different Input/output pin. You can also
notice two different memory types: RAM and EEPROM. Shortly, RAM is used to store variable
during program execution, while the EEPROM memory is used to store the program itself, that's
why it is often referred to as the 'program memory'. The memory organization will be discussed in
detail later.
The special features of the 89C51 microcontroller are grouped in the blue box at the bottom
of figure. At this stage of the tutorial, it is just important to note that the 89C51/52 incorporates
hardware circuits that can be used to prevent the processor from executing various repetitive tasks
and save processing power for more complex calculations. Those simple tasks can be counting the
number of external pulses on a pin, or generating precise timing sequences.
It is clear that the CPU (Central Processing Unit) is the heart of the microcontrollers. It is
the CPU that will Read the program from the FLASH memory and execute it by interacting with
the different peripherals discussed above.
The above figure shows the pin configuration of the 89C51/52, where the function of each
pin is written next to it, and, if it exists, the dual function is written between brackets. The pins are
written in the same order as in the block diagram of 89C51/52, except for the VCC and GND pins
which I usually note at the top and the bottom of any device.
Note that the pin that has dual functions can still be used normally as an input/output pin.
Unless you program uses their dual functions. All the 32 I/O pins of the microcontroller are
configured as input/output.
Most of the function of the pins of the 89C51/52 microcontroller will be discussed in detail,
except for the pins required to control an external memory, which are the pins number 29, 30 and
31. Since we are not going to use any external memory, pins 29 and 30 will be ignored through all
the tutorial, and pin 31 (EA) always connected to VCC (5 Volts) to enable the micro-controller to
use the internal on chip memory rather than an external one (connecting the pin 31 to ground
would indicate to the microcontroller that an external memory is to be used instead of the internal
one).
Typical register
D D D D D D D D
7 6 5 4 3 2 1 0
This base architecture is supported with on-chip peripheral functions like I/O ports,
timers/counters, versatile serial communication port. So it is clear that this 8051/52 architecture
was designed to cater many real time embedded needs. The following list gives the features of the
8051/52 architecture:
Code Memory:
Code memory is the memory that holds the actual 8051/52 program that is to be run.
This memory is limited to 64K and comes in many shapes and sizes: Code memory may be found
on-chip, either burned into the microcontroller as ROM or EPROM. Code may also be stored
completely off-chip in an external ROM or, more commonly, an external EPROM. Flash RAM is
also another popular method of storing a program. Various combinations of these memory types
may also be used--that is to say, it is possible to have 4K of code memory on-chip and 64k of code
memory off-chip in an EPROM.
External RAM:
As an obvious opposite of Internal RAM, the 8051/52 also supports what is called
External RAM. As the name suggests, External RAM is any random access memory which is
found off-chip. Since the memory is off-chip it is not as flexible in terms of accessing, and is also
slower. For example, to increment an Internal RAM location by 1 requires only 1 instruction and 1
instruction cycle. To increment a 1-byte value stored in External RAM requires 4 instructions and
7 instruction cycles. In this case, external memory is 7 times slower! What External RAM loses in
speed and flexibility, it gains in quantity. While Internal RAM is limited to 128 bytes (256 bytes
with an 8052), the 8051/52 supports External RAM up to 64K. Programming Tip: The 8051/52
may only address 64k of RAM. To expand RAM beyond this limit requires programming and
hardware tricks. You may have to do this "by hand" since many compilers and assemblers, while
providing support for programs in excess of 64k, do not support more than 64k of RAM. This is
rather strange since it has been my experience that programs can usually fit in 64k but often RAM
is what is lacking. Thus if you need more than 64k of RAM, check to see if your compiler supports
it-- but if it doesn't, be prepared to do it by hand.
On-Chip Memory:
Register Banks:
The 8051/52 uses 8 "R" registers which are used in many of its instructions. These "R"
registers are numbered from 0 through 7 (R0, R1, R2, R3, R4, R5, R6, and R7). These registers are
generally used to assist in manipulating values and moving data from one memory location to
another. For example, to add the value of R4 to the Accumulator, we would execute the following
instruction:
ADD A, R4
Thus if the Accumulator (A) contained the value 6 and R4 contained the value 3, the Accumulator
would contain the value 9 after this instruction was executed.
Internal RAM:
Programming Tip: If you only use the first register bank (i.e. bank 0), you may use
Internal RAM locations 08h through 1Fh for your own use. But if you plan to use register banks 1,
2, or 3, be very careful about using addresses below 20h as you may end up overwriting the value
of your "R" registers!
Bit Memory :
The 8051/52, being a communications-oriented microcontroller, gives the user the ability
to access a number of bit variables. These variables may be either 1 or 0. There are 128 bit
variables available to the user, numbered 00h through 7Fh. The user may make use of these
variables with commands such as SETB and CLR. For example, to set bit number 24 (hex) to 1
you would execute the instruction:
Special Function Registers (SFRs) are areas of memory that control specific
functionality of the 8051/52 processor. For example, four SFRs permit access to the 8051/52’s 32
input/output lines. Another SFR allows a program to read or write to the 8051/52’s serial port.
Other SFRs allow the user to set the serial baud rate, control and access timers, and configure the
8051/52’s interrupt system.
The Accumulator
The Accumulator, as its name suggests, is used as a general register to accumulate the
results of a large number of instructions. It can hold an 8-bit (1-byte) value and is the most
versatile register the 8051/52 has due to the sheer number of instructions that make use of the
accumulator. More than half of the 8051/52’s 255 instructions manipulate or use the accumulator
in some way.
For example, if you want to add the number 10 and 20, the resulting 30 will be stored in
the Accumulator. Once you have a value in the Accumulator you may continue processing the
value or you may store it in another register or in memory.
The "R" registers are a set of eight registers that are named R0, R1, etc. up to and
including R7. These registers are used as auxiliary registers in many operations. To continue with
the above example, perhaps you are adding 10 and 20. The original number 10 may be stored in
the Accumulator whereas the value 20 may be stored in, say, register R4. To process the addition
you would execute the command:
ADD A, R4
After executing this instruction the Accumulator will contain the value 30.You may
think of the "R" registers as very important auxiliary, or "helper", registers. The Accumulator
alone would not be very useful if it were not for these "R" registers. The "R" registers are also used
to temporarily store values. For example, let’s say you want to add the values in R1 and R2
together and then subtract the values of R3 and R4. One way to do this would be: MOV A,R3
;Move the value of R3 into the accumulator ADD A,R4 ;Add the value of R4 MOV R5,A ;Store
the resulting value temporarily in R5 MOV A,R1 ;Move the value of R1 into the accumulator
ADD A,R2 ;Add the value of R2 SUBB A,R5 ;Subtract the value of R5 (which now contains R3 +
R4)
As you can see, we used R5 to temporarily hold the sum of R3 and R4. Of course, this
isn’t the most efficient way to calculate (R1+R2) - (R3 +R4) but it does illustrate the use of the "R"
registers as a way to store values temporarily.
The "B" register is very similar to the Accumulator in the sense that it may hold an 8-bit
(1-byte) value. The "B" register is only used by two 8051 instructions: MUL AB and DIV AB.
Thus, if you want to quickly and easily multiply or divide A by another number, you may store the
other number in "B" and make use of these two instructions. Aside from the MUL and DIV
instructions, the “B” register are often used as yet another temporary storage register much like a
ninth "R" register.
The Data Pointer (DPTR) is the 8051’s only user-accessible 16-bit (2-byte) register. The
Accumulator, "R" registers, and "B" register are all 1-byte values. DPTR, as the name suggests, is
used to point to data. It is used by a number of commands which allow the 8051 to access external
memory. When the 8051 accesses external memory, it will access external memory at the address
indicated by DPTR. While DPTR is most often used to point to data in external memory, many
programmers often take advantage of the fact that it’s the only true 16-bit register available. It is
often used to store 2-byte values which have nothing to do with memory locations.
The Program Counter (PC) is a 2-byte address which tells the 8051 where the next
instruction to execute is found in memory. When the 8051 is initialized PC always starts at 0000h
and is incremented each time an instruction is executed. It is important to note that PC isn’t always
incremented by one. Since some instructions require 2 or 3 bytes the PC will be incremented by 2
or 3 in these cases. The Program Counter is special in that there is no way to directly modify its
value. That is to say, you can’t do something like PC=2430h. On the other hand, if you execute
LJMP 2430h you’ve effectively accomplished the same thing. It is also interesting to note that
while you may change the value of PC (by executing a jump instruction, etc.) there is no way to
read the value of PC. That is to say, there is no way to ask the 8051 "What address are you about to
execute?" As it turns out, this is not completely true: There is one trick that may be used to
determine the current value of PC. This trick will be covered in a later chapter.
The Stack Pointer, like all registers except DPTR and PC, may hold an 8-bit (1-byte)
value. The Stack Pointer is used to indicate where the next value to be removed from the stack
should be taken from. When you push a value onto the stack, the 8051 first increments the value of
SP and then stores the value at the resulting memory location. When you pop a value off the stack,
the 8051 returns the value from the memory location indicated by SP and then decrements the
value of SP. This order of operation is important. When the 8051 is initialized SP will be
initialized to 07h. If you immediately push a value onto the stack, the value will be stored in
Internal RAM address 08h. This makes sense taking into account what was mentioned two
paragraphs above: First the 8051 will increment the value of SP (from 07h to 08h) and then will
store the pushed value at that memory address (08h). SP is modified directly by the 8051 by six
instructions: PUSH, POP, ACALL, LCALL, RET, and RETI. It is also used intrinsically whenever
an interrupt is triggered (more on interrupts later. Don’t worry about them for now!).
The 8051 is a flexible microcontroller with a relatively large number of modes of operations. Your
program may inspect and/or change the operating mode of the 8051 by manipulating the values of
the 8051's Special Function Registers (SFRs).
SFRs are accessed as if they were normal Internal RAM. The only difference is that
Internal RAM is from address 00h through 7Fh whereas SFR registers exist in the address range of
80h through FFh.
Each SFR has an address (80h through FFh) and a name. As you can see, although the address
range of 80h through FFh offers 128 possible addresses, there are only 21 SFRs in a standard 8051.
All other addresses in the SFR range (80h through FFh) are considered invalid. Writing to or
reading from these registers may produce undefined values or behavior.
SFR Types
As mentioned in the chart itself, the SFRs that have a blue background are SFRs related
to the I/O ports. The 8051 has four I/O ports of 8 bits, for a total of 32 I/O lines. Whether a given
I/O line is high or low and the value read from the line are controlled by the SFRs in green. The
SFRs with yellow backgrounds are SFRs which in some way control the operation or the
configuration of some aspect of the 8051. For example, TCON controls the timers, SCON controls
the serial port. The remaining SFRs, with green backgrounds, are "other SFRs." These SFRs can
be thought of as auxiliary SFRs in the sense that they don't directly configure the 8051 but
obviously the 8051 cannot operate without them. For example, once the serial port has been
configured using SCON, the program may read or write to the serial port using the SBUF register.
The Timer Control SFR is used to configure and modify the way in which the 8051's
two timers operate. This SFR controls whether each of the two timers is running or stopped and
contains a flag to indicate that each timer has overflowed. Additionally, some non-timer related
bits are located in the TCON SFR. These bits are used to configure the way in which the external
interrupts are activated and also contain the external interrupt flags which are set when an external
interrupt has occurred.
TMOD (Timer Mode, Addresses 89h):
The Timer Mode SFR is used to configure the mode of operation of each of the two
timers. Using this SFR your program may configure each timer to be a 16-bit timer, an 8-bit auto-
reload timer, a 13-bit timer, or two separate timers. Additionally, you may configure the timers to
only count when an external pin is activated or to count "events" that are indicated on an external
pin.
These two SFRs, taken together, represent timer 0. Their exact behavior depends on
how the timer is configured in the TMOD SFR; however, these timers always count up. What is
configurable is how and when they increment in value.
These two SFRs, taken together, represent timer 1. Their exact behavior depends on
how the timer is configured in the TMOD SFR; however, these timers always count up. What is
configurable is how and when they increment in value.
The Serial Control SFR is used to configure the behavior of the 8051's on-board serial
port. This SFR controls the baud rate of the serial port, whether the serial port is activated to
receive data, and also contains flags that are set when a byte is successfully sent or received.
The Serial Buffer SFR is used to send and receive data via the on-board serial port. Any
value written to SBUF will be sent out the serial port's TXD pin. Likewise, any value which the
8051 receives via the serial port's RXD pin will be delivered to the user program via SBUF. In
other words, SBUF serves as the output port when written to and as an input port when read from.
Port 0:
It occupies a total of 8 pins (pins 32-39) .It can be used for input or output. To use the
pins of port 0 as both input and output ports, each pin must be connected externally to a 10K ohm
pull-up resistor. This is due to the fact that P0 is an open drain, unlike P1, P2, and P3.Open drain is
a term used for MOS chips in the same way that open collector is used for TTL chips. With
external pull-up resistors connected upon reset, port 0 is configured as an output port. Another
characteristic is expressed when it is configured as output. Namely, unlike other ports consisting of
pins with embedded pull-up resistor (connected by its end to 5 V power supply), this resistor is left
out here. This, apparently little change has its consequences: If any pin on this port is configured as
input then it performs as if it “floats”. Such input has unlimited input resistance and has no voltage
coming from “inside”.
Port 1:
Port 1 occupies a total of 8 pins (pins 1 through 8). It can be used as input or output. In
contrast to port 0, this port does not need any pull-up resistors since it already has pull-up resistors
internally. Upon reset, Port 1 is configured as an output port. This is a true I/O port, because there
are no role assigning as it is the case with P0. Since it has embedded pull-up resistors it is
completely compatible with TTL circuits.
Port 2:
Similar to P0, when using external memory, lines on this port occupy addresses
intended for external memory chip. This time it is the higher address byte with addresses A8-A15.
When there is no additional memory, this port can be used as universal input-output port similar by
its features to the port 1. Port 2 occupies a total of 8 pins (pins 21- 28). It can be used as input or
output. Just like P1, P2 does not need any pull-up resistors since it already has pull-up resistors
internally. Upon reset, Port 2 is configured as an output port.
Port 3:
Even though all pins on this port can be used as universal I/O port, they also have an
alternative function. Since each of these functions use inputs, then the appropriate pins have to be
configured like that. In other words, prior to using some of reserve port functions, a logical one (1)
must be written to the appropriate bit in the P3 register. From hardware’s perspective, this port is
also similar to P0, with the difference that its outputs have a pull-up resistor embedded. It occupies
a total of 8 pins, pins 10 through 17. It can be used as input or output. P3 does not need any pull-up
resistors, the same as P1 and P2 did not. Although port 3 is configured as an output port upon
reset, port 3 has the additional function of providing some extremely important signals such as
interrupts. This information applies both 8051 and 8031 chips system.
2.1.5 .AT 89S51 Timers:
The 8051 comes equipped with two timers, both of which may be controlled, set, read,
and configured individually. The 8051 timers have three general functions: 1) Keeping time and/or
calculating the amount of time between events, 2) Counting the events themselves, or 3)
Generating baud rates for the serial port.
The three timer uses are distinct so we will talk about each of them separately. The
first two uses will be discussed in this chapter while the use of timers for baud rate generation will
be discussed in the chapter relating to serial ports.
Timer SFRs
As mentioned before, the 8051 has two timers which each function essentially the
same way. One timer is TIMER0 and the other is TIMER1. The two timers share two SFRs
(TMOD and TCON) which control the timers, and each timer also has two SFRs dedicated solely
to itself (TH0/TL0 and TH1/TL1).We’ve given SFRs names to make it easier to refer to them, but
in reality an SFR has a numeric
The SFRs relating to timers are:
Obviously, one of the primary uses of timers is to measure time. We will discuss
this use of timers first and will subsequently discuss the use of timers to count events. When a
timer is used to measure time it is also called an "interval timer" since it is measuring the time of
the interval between two events.
Timer mode "0" is a 13-bit timer. This is a relic that was kept around in the 8051 to
maintain compatibility with its predecessor, the 8048. Generally the 13-bit timer mode is not used
in new development. When the timer is in 13-bit mode, TLx will count from 0 to 31. When TLx is
incremented from 31, it will "reset" to 0 and increment THx. Thus, effectively, only 13 bits of the
two timer bytes are being used: bits 0-4 of TLx and bits 0-7 of THx. This also means, in essence,
the timer can only contain 8192 values. If you set a 13-bit timer to 0, it will overflow back to zero
8192 machine cycles later.
Timer mode "1" is a 16-bit timer. This is a very commonly used mode. It functions
just like 13-bit mode except that all 16 bits are used. TLx is incremented from 0 to 255. When TLx
is incremented from 255, it resets to 0 and causes THx to be incremented by 1. Since this is a full
16-bit timer, the timer may contain up to 65536 distinct values. If you set a 16-bit timer to 0, it will
overflow back to 0 after 65,536 machine cycles.
Timer mode "2" is an 8-bit auto-reload mode. When a timer is in mode 2, THx
holds the "reload value" and TLx is the timer itself. Thus, TLx starts counting up. When TLx
reaches 255 and is subsequently incremented, instead of resetting to 0 (as in the case of modes 0
and 1), it will be reset to the value stored in THx.
All inputs are TTL compatible. Each output is a complete totem-pole drive circuit, with a
Darlington transistor sink and a pseudo-Darlington source. Drivers are enabled in pairs, with
drivers 1 and 2 enabled by 1,2EN and drivers 3 and 4 enabled by 3,4EN. When an enable input is
high, the associated drivers are enabled and their outputs are active and in phase with their inputs.
When the enable input is low, those drivers are disabled and their outputs are off and in the high-
impedance state. With the proper data inputs, each pair of drivers forms a full-H (or bridge)
reversible drive suitable for solenoid or motor applications.
On the L293, external high-speed output clamp diodes should be used for inductive
transient suppression. A VCC1 terminal, separate from VCC2, is provided for the logic inputs to
minimize device power dissipation. The L293and L293D are characterized for operation from 0°C
to 70°C.
Features:
Thermal Shutdown
High-Noise-Immunity Inputs
VOICE MODULE
EasyVR is the second generation version of the successful VRbot Module. It is a multi-purpose
speech recognition module designed to easily add versatile, robust and cost effective speech
recognition capabilities to virtually any application.
The EasyVR module can be used with any host with an UART interface powered at 3.3V – 5V,
such as PIC and Arduino boards. Some application examples include home automation, such as
voice controlled light switches, locks or beds, or adding “hearing” to the most popular robots on
the market.
features
A host of built-in Speaker Independent (SI) commands for ready to run basic controls,
in the followings languages:
o English (US)
o Italian
o German
o French
o Spanish
o Japanese
Supports up to 32 user-defined Speaker Dependent (SD) triggers or commands as well
as Voice Passwords. SD custom commands can be spoken in ANY language.
Easy-to-use and simple Graphical User Interface to program Voice Commands and
audio.
Module can be used with any host with an UART interface (powered at 3.3V - 5V)
Simple and robust documented serial protocol to access and program through the host
board
3 GPIO lines (IO1, IO2, IO3) that can be controlled by new protocol commands.
PWM audio output that supports 8 ohm speakers.
Sound playback feature.
Physical dimensions and pin assignment
COMMAND DETAILS
Format of command strings accepted by the module. Please note that numeric arguments of
command requests are mapped to upper-case letters (see above section).
CMD_BREAK
CMD_SLEEP
CMD_KNOB
CMD_LEVEL
1 = easy
2 = default
Expected replies: STS_SUCCESS
CMD_LANGUAGE
0 = English
1 = Italian
2 = Japanese
Expected replies: STS_SUCCESS
CMD_TIMEOUT
CMD_RECOG_SI
CMD_TRAIN_SD
CMD_GROUP_SD
CMD_UNGROUP_SD
CMD_RECOG_SD
CMD_ERASE_SD
CMD_COUNT_SD
CMD_DUMP_SD
CMD_MASK_SD
CMD_RESETALL
CMD_ID
'x' (78h) Request firmware identification
CMD_DELAY
1 = 115200
2 = 57600
CMD_QUERY_IO
CMD_PLAY_SX
CMD_DUMP_SX
Extensively used as a positioning device because its speed as well as torque can be
controlled precisely over a wide range
12v, 35rpm
3. BLOCK DIAGRAM
fig.3 block diagram of voice controlled wheel chair
An additional joystick is also used to control the rotation of motor, this is connected to
the micro controller and the micro controller is also programmed to respond the input
from the joystick.
4. CIRCUIT DIAGRAM
5.1. PCB
DESIGN
5.1.1. Printed
Circuit Board
Now a days
the printed circuit
board here after
mention as PBC’s
makes the electronic
circuit manufacturing as easy one. In olden days vast area was required to implement a small
circuit to connect the leads of the components and separate connectors were needed. But PCBs
connects the two by copper coated lines on the PCB boards. In the single sided PCBs the copper
layer is on both sides. Some cases, middle layer is also possible than the two sides.
The most popular board types are
SINGLE-SIDED BOARDS: They are mainly used in entertainment electronics where
manufacturing costs have to be kept at the minimum.
DOUBLE-SIDED BOARDS: Double sided PCBs can be made with or without plated through
holes. The production of boards with plated through holes is fairly expensive.
First, the wanted circuit is drawn on paper and it is modified or designed PCB layout
is to be drawn on the plain copper coated board. These boards are available in two types:
Phenolic, Glass eproxy
Most computers PCBs are glass eproxy. To draw circuit diagram we can use
the black colour paints. Before that the required size of the plane PCB board is
determined from the roughly drawn PCB layout. Using black paint the desired circuit is
drawn on the board.
The first rule is to prepare each and every PCB layout as viewed from the component
side. Another important rule is not to start the designing of a layout unless an absolutely clear
circuit diagram is available, if necessary, with a component lists. Among the components the
larger ones are placed first and the space between is filled with smaller ones. Components
requiring input / output connections come near the connectors. All components are placed in
such a manner that disordering of the components is not necessary if they have to be replaced.
In the designing of a PCB layout it is very important to divide the circuit into
functional subunits. Each of these subunits should be realized on a defined portion of the board.
In the designing the inter connections which are usually done by pencil lines, actual space
requirements in the artwork must be considered. In addition the layout can be rather roughly
sketched and will still be clear enough for artwork designer.
This process is particularly suitable for large production schemes. However the
preparation of a screen can also be economically attractive for series of 1000 PCBs
.Below, while photo printing is basically the non-accurate method to transfer a pattern
on to a board surface. With the screen-printing process one can produce PCBs with a
conduction of as low as 0.5 + or – and a registration error of 0.1mm on an industrial
scale with a high reliability. In its basic form, a screen fabric with uniform meshes and
opening is stretched and fixed on a solid frame of metal or wood. The circuit pattern is
photographically transferred onto the screen, leaving the meshes in the pattern open,
while the meshes in the rest of the area are closed. In the actual printing step, ink forced
by the moving squeegee through the open meshes onto the surface of the material to be
printed.
5.1.6. Plating
From a practical stand port, printed circuit boards may have to be stocked
before being taken for assembly of components. It is expected that the circuit board
retain its solder ability for long periods of several months so that reliable solder joints
can be produced during assembly. Plating of a metal can be accomplished on a copper
pattern by three methods. They are:
Immersion plating
Electro less plating
Electroplating
5.1.7. Etching
This can be done both by manual and mechanical ways by immersing the board onto a
solution of formic chloride and hydrochloric acid and finally cleaning the board by soap. In all
subtractive PCB processes, etching is one of the most important steps. The copper pattern is
formed by selective removal of all unwanted copper, which is not protected by an etch resist.
This looks very simple at first glance but in practice there are factors like under etching and
overhang which complicate the matter especially in the production of fine and highly precise
PCBs. Etching of PCBs as required in modern electronic equipment production, is usually
done in spray type etching machines.
The actual location of components in the layout is responsible for the problems
to be placed during routing of the interconnections. In a highly sensitive circuit the
critical components are placed first and in such a manner as to require minimum length
for the critical conductors. In less critical circuit the components are arranged exactly in
the order of signal flow. This will result in a minimum overall conductor length. In a
circuit where a few components have considerably more connecting points than the
others. These key components are placed first and the remaining ones are grouped
around them.
Drilling of component mounting holes into PCBs is by far the most important
mechanical machining operation in PCB production processes. Holes are made by drilling
wherever a superior hole finish for plated-through hole processes is required and where
the tooling costs for a punching tool cannot be justified. Therefore drilling is applied for all
the professional grade PCB manufacturers and generally in smaller PCB production
laboratories. The importance of hole drilling into PCB has further gone up with electronic
component miniaturization and it needs smaller hole diameters and higher package density
where hole punching is practically ruled out.
5.1.10. Soldering
Soldering is a process for the joining of metal parts with the aid of a molten metal
(solder), where the melting temperature is suited below that of the material joined, and whereby
the surface of the parts are wetted, without then becoming molten. Soldering generally
implied that the joining process occurs at temperatures below 450-degree centigrade. Solder
wets and alloys with the base metals and gets drawn, by capillary action, into the gap between
them. This process forms a metallurgical bond between the parts of the joint. Therefore soldier
acts by Wetting of base metal surfaces forming joint flowing between these surfaces, which
result in a completely filled space between them. Metallurgical bonding to these surfaces when
soldered. Soldering consists of the relative positioning of the surfaces to be joined, wetting
these surfaces with molten solder and allowing the solder to cool down until it has
solidified. During these soldering operation, an auxiliary medium is mostly used to increase
the flow properties of molten solder or to improve the degree of wetting . Such a medium
is called flux.
Flowing characteristics are required in a flux:
It should provide a liquid cover over the materials and exclusive air up
It should dissolve any oxide on the metal surface or on the solder and carry such unwanted
elements away.
It should be readily displaced from the metal by the molten soldering Operation.
Residues should be removable after completion of the solder. To achieve a soldered joint the
solder and the base metal must be heated above the melting point of the solder used. The
method by which the necessary heat is applied, among other things depends on:
5.1.11. Flux
Generally applied soldering methods are iron soldering, torch soldering, mass soldering,
electrical soldering furnace soldering and other methods. Components are basically mounted
only one side of the board. In double-sided PCBs, the component side is usually opposite to the
major conductor pattern side, unless otherwise dictated by special design requirements. The
performance and reliability of solder joints give best result covered with solder and herewith
contributing to the actual solder connections. However, lead cutting after soldering is still
common in particular in smaller industries where hand soldering is used. With the soldered PCB
many contaminants can be found which may produce. Difficulties with the functioning of the
circuit. The problems usually arise at a much later than during the final functioning testing of
the board in the factory. Among the contaminants, we can typically find flux, chips of
plastics, metals and other constructional materials, plating sails, oils greases environmental
soil and other processing materials.
Displacing of particulate and other insoluble matters, e.g., chips, dust, and lint.
First the PCB layout is designed by ORCAD. The printout is taken from the
computer (of large size) for out clearance. This layer is given to the photography section
to get the layout. This photographic image is exposed in the following three methods:
Polybluem
Chromium
Five star
The exposed mesh is placed on plain copper coated board in correct alignment by
using wooden clamps paint flow through the board and the layout lines are made on the boards.
6. SOFTWARE DISCRIPTION
6.1. KIEL C :
keil compiler is a software used where the machine language code is written
andcompiled. After compilation, the machine source code is converted into
hex code whichi s t o b e d u m p e d i n t o t h e m i c r o c o n t r o l l e r f o r f u r t h e r
p r o c e s s i n g . K e i l c o m p i l e r a l s o supports C language code.
COMPILE IT:
6.A small window opens showing the options like new project, import
project, open project etc. Click on “New project”.
7.A small window with the title bar “Create new project” opens. The
window askst h e u s e r t o g i v e t h e p r o j e c t
n a m e w i t h w h i c h i t s h o u l d b e c r e a t e d a n d t h e destination location.
The project can be created in any of the drives available. Youcan create a new folder
and then a new file or can create directly a new file.
11.A small window opens asking whether to copy the startup code into the
file youhave created just now. Just click on “No” to proceed further.
14.After the program is completed, save it with any name
b u t w i t h t h e . a s m extension. Save the program in the file you have created
earlier.
15.You can notice that after you save the program, the predefined keywords
will behighlighted in bold letters.
16.Now add this file to the target by giving a right click on the source group. A list
of options open and in that select “Add files to the source group”. Check for this
filewhere you have saved and add it.
17.Right click on the target and select the first option “Options for target”. A
windowopens with different options like device, target, output etc. First click on
“target”.
19.Now click the option “Output” and give any name to the hex file to be
created inthe “Name of executable” text area and put a tick to the “Create HEX file”
option present in the same window. The hex file can be created in any of the drives.
Youcan change the folder by clicking on “Select folder for Objects”.
Speech recognition
The recognition function of the EasyVR works on a single group at a time, so that users
need to group together all the commands that they want to be able to use at the same time.
When EasyVR Commander connects to the module, it reads back all the user-defined
commands and groups, which are stored into the EasyVR module non-volatile memory.
The user can add a new command by first selecting the group in which the command needs
to be created and then using the toolbar icons or the “Edit” menu.
A command should be given a label and then it should be trained twice with the user's voice:
the user will be guided throughout this process (see Figure 2) when the "Train Command"
action is invoked.
If any error happens, command training will be cancelled. Errors may happen when the user’s
voice is not heard correctly, there is too much background noise or when the second word
heard is too different from the first one.
The software will also alert if a command is too similar to another one by specifying the index
of the conflicting command in the "Conflict" column. For example, in the following Figure 3 the
command "TEST_CMD_ONE" sounds too similar to "TEST_CMD_ZERO" (i.e. they have
been trained with a similar pronunciation).
Figure 3 – Conflicting commands
The current status is displayed in the EasyVR Commander list view where groups that
already contain commands are highlighted in bold.
The selected group of commands can also be tested, by using the icon on the toolbar or the
“Tools” menu, to make sure the trained commands can be recognized successfully.
Download a new Sound Table
The EasyVR can also play one of the sounds or sentences saved on the internal flash memory. A
predefined
“beep” sound is also always available, even when no sounds have been downloaded to the module.
The custom sounds are organized in a so-called “sound table”, that users can prepare and build with the
TM
special QuickSynthesis tool. Please refer to this application’s own manual for details about creation of
a sound table.
Once the sound table has been created, it can be processed by the EasyVR Commander and
downloaded to the module. The user must first disconnect from the module and do the steps required to
start it in “boot- mode” (see the section FLASH UPDATE).
Now the command “Update Sound Table” is enabled, either on the toolbar or the “Tools” menu, and it can
be used to start the update process.
Figure 4
First the user will be prompted to open the QuickSynthesis project file just created and a new sound table
will be generated.
The project must have been built already with the QuickSynthesis tool, before the sound table
generation can be completed successfully. If a recent build is not available the user will receive a warning
message, the project can be opened in QuickSynthesis again and a fresh build started (make sure the
project file has been saved before the build).
Once back in the EasyVR Commander the project can be reloaded by pressing the “Refesh” button. If
the
Project Report 2012 Voice controlled wheel chair
process completes successfully, the “Download” button will be enabled and the flash update
process can start.
The download process will connect at a higher speed to the EasyVR module, so the “bridge”
program running on your host device might not work (in particular Robonova and Basic Stamp
cannot be used for this purpose) and you might need a true “serial adapter”.
The full speed used is 230400 bit/s, but the option “Slow transfer” can be used to reduce it to
115200. One adapter that can go to full speed is the VoiceGP DevBoard. Otherwise any
USB/Serial adapter with TTL/CMOS interface can be used for updating the flash.
After the download completes, a new connection can be established with the EasyVR module (in
“normal- mode”) and the new sounds will be displayed by the EasyVR Commander, in the
special group “SoundTable” (the last one in the list with a yellow icon).
They can be played back and tested using the “Play Sound” command on the toolbar or in the
“Tools” menu. See also how to do that in your application in the code example USE CUSTOM SOUND
PLAYBACK.
7. ADVANTAGES
It reduces the amount of user effort required to pull and push the wheels
Safe and secure
Users who cannot use their arms can use the voice to control the wheel chair
8. DISADVANTAGES
Limitation in Languages
Speech problems
9. FUTURE ASPECTS
GPS Navigation can be embedded into this for using this outdoor.
10. CONCLUSION
The voice controlled wheel chair is implemented, this gives a new life to the disabled
persons.
11. BIBLIOGRAPHY
WEB SITES:-
1. www.atmel.com
2. www.datasheetcatalog.com
3. www.KeilC51vision3.com
4. www.electronicsforyou.com
5. www.datasheetarchive.com
TEXT REFERED:-