You are on page 1of 87

WIRELESS SPY ROBOT WITH OBJECT DETECTION

B SACHIN VINAY REDDY CH CHANDRAMOULI VINJAM

Department of Electronics and Communication Engineering

MAHATMA GANDHI INSTITUTE OF TECHNOLOGY


(Affiliated to Jawaharlal Nehru Technological University, Hyderabad, A.P.)

Chaitanya Bharathi P.O., Gandipet, Hyderabad 500 075

2010

WIRELESS SPY ROBOT WITH OBJECT DETECTION


PROJECT REPORT SUBMITTED IN PARTIAL FULFILLMENT OF THE REQUIREMENTS FOR THE DEGREE OF BACHELOR OF TECHNOLOGY IN ELECTRONICS AND COMMUNICATION ENGINEERING BY

B SACHIN (06261A0468) VINAY REDDY CH (06261A04B8) CHANDRAMOULI VINJAM (06N61A0411)

Department of Electronics and Communication Engineering

MAHATMA GANDHI INSTITUTE OF TECHNOLOGY


(Affiliated to Jawaharlal Nehru Technological University, Hyderabad, A.P.)

Chaitanya Bharathi P.O., Gandipet, Hyderabad 500 075

2010

MAHATMA GANDHI INSTITUTE OF TECHNOLOGY


(Affiliated to Jawaharlal Nehru Technological University, Hyderabad, A.P.) Chaitanya Bharathi P.O., Gandipet, Hyderabad-500 075

Department of Electronics and Communication Engineering

CERTIFICATE

Date: 24 April 2007

Date: 7 May 2010 This is to certify that the project work entitled Wireless Spy Robot with Object Detection is a bonafide work carried out by

B SACHIN
VINAY REDDY CH CHANDRAMOULI VINJAM

(06261A0468)
(06261A04B8) (06N61A0411)

in partial fulfillment of the requirements for the degree of BACHELOR OF TECHNOLOGY in ELECTRONICS & COMMUNICATION ENGINEERING by the Jawaharlal Nehru Technological University, Hyderabad during the academic year 2009-10. The results embodied in this report have not been submitted to any other University or Institution for the award of any degree or diploma.

---------------------------------------------------

Mrs. P Nalini E Nagbhooshanam Assistant Professor Professor & Head

Dr.

ACKNOWLEDGEMENTS
The satisfaction that accompanies the successful completion of task would be but incomplete without mention of the people, who made it possible, whose constant guidance and encouragement crown all efforts with success.

We are highly indebted to our Faculty Liaison Mrs.P Nalini, Assistant Professor, Electronics and Communication Engineering Department, who has given us all the necessary technical guidance in carrying out this Project.

We wish to express our sincere thanks to Dr.E.Nagabhooshanam, Head of the Department of Electronics and Communication Engineering, M.G.I.T., for permitting us to pursue our Project in college and encouraging us throughout the Project.

Finally, we thank all the people who have directly or indirectly help us through the course of our Project.

B SACHIN

VINAY REDDY CH

CHANDRAMOULI VINJAM

Abstract
The main aim of the project is to detect an object with the help of an IR camera even in the night Now-a-days spying the enemies is very difficult for the soldiers because it is life risky process. So for that we have to use the present technology in spying enemies without loss of soldiers lives. The project is basically used to detect an object by using a wireless robot with a night vision camera. This project uses a RF AV camera as a image sensing device. The video from camera is taken by the pc via TV tuner card. The AV camera can be converted which is converted into an IR camera by removing the IR filter, which has a wide range of applications such as detecting the object in darkness with the help of IR illumination. The AV camera is mounted on the wireless robot. The robot is controlled through PC. The video sent by the AV camera is can be viewed on the monitor. The video sent by the AV camera is sampled and the sampled image is processed through a MATLAB program to detect a object with gray levels in a certain range. If an Object with the gray levels in the range will be detected. The entire robot is constructed using the P89V51RD2BN Microcontroller, RF transmitter and receiver, wireless AV camera, four DC gear motors, HT640 and HT648L encoder decoder pair. Software programming for object detection is done in Matlab, while microcontroller programming and dumping is done in Keil, Flash Magic software respectively.

Table of Contents
Page No CERTIFICATE FROM ECE DEPARTMENT ACKNOWLEDGEMENTS ABSTRACT LIST OF FIGURES LIST OF TABLES 1. OVERVIEW
1.1 1.2 1.3 1.4 1.5

i ii iii vi viii

Introduction Aim of the project Methodology Significance of the work Organization of the Report 2

1 1 1 3

2. MICROCONTROLLER AND OTHER HARDWARE 2.1 Introduction 2.2 P89V51RD2BN MICROCONTROLLER 2.2.1 General description 2.2.2 Features 2.2.3 Block diagram 2.2.4 Pin description 2.2.5 Memory organization 2.3 ENCODER AND DECODER 2. 3.1 HT640 Encoder 2. 3.2 HT648L Decoder 19 22 5 6 7 8 12 4

2.4 RF MODULES 2.4.1 ST-TX01-A434 Transmitter 2.4.2 ST-RX04-A434 Receiver 2.5. MAX232 2.6 ULN2803 2.7 RELAYS 2.8 DC MOTOR 2.9 REGULATOR 2.10 WIRELESS CAMERA 3. SOFTWARE DETAILS 3.1 Keil Software 3.2 Flash Magic 3.3 MATLAB 4. IMAGE PROCESSING USING MATLAB 4.1 Image Processing Toolbox 4.2 Image Acquisition with Wireless Camera 5. SOURCE CODE 5.1Microcontroller Code for Bot Control 5.2 MATLAB code 6. CONCLUSIONS AND FUTURE SCOPE BIBLIOGRAPHY 70 70 73 74 59 59 48 51 57 26 28 29 32 34 38 41 44

LIST OF FIGURES
2.1 Circuit Diagram of Transmitter Section 2.2 Circuit Diagram of Receiver Section 2.3 Block diagram of 89V51RD2BN 2.4 Pin diagram of 89V51RD2BN 2.5 Internal and external data memory Structure 2.6 Dual data pointer organization 2.7 Pin Diagram of HT640 Encoder 2.8 Flow Chart of Encoder 2.9 Pin Diagram of HT648L Decoder 2.10 Flow Chart of Decoder 2.11 Image and Block Diagram of ST-TX01-ASK Transmitter 2.12 Image and Block Diagram of ST-RX04-ASK Receiver 2.13 MAX 232 PIN DIAGRAM 2.14 Connection of Max232 to Pc 2.15 ULN pin connection and block diagram 2.16 Relay diagram 2.17 SPDT & DPDT Relay diagram 2.18 DC motor 2.19 Conceptual 3-pole dc motor 2.20 Pin Diagram of Regulator 4 5 7 8 16 17 20 22 24 26 27 29 30 32 33 35 36 39 40 42

2.21 Pin connection of IC regulator 2.22 AV Transmitter circuit diagram 2.23 AV Receiver circuit diagram

43 45 46

LIST OF TABLES

2.1 Pin Description of HT640.. 2.2 Pin Description of HT648L.. 2.3 Positive Voltage Regulators in 7800 series.. 2.4 Specifications of RF-AV wireless cam ...

21 24 44 47

CHAPTER 1 OVERVIEW
1.1 Introduction:
Now-a-days tracing and attacking enemies at different areas are very much difficult for the soldiers. There may be a chance for lost of lives of the soldiers during war and emergency situations. We have implemented a solution for the problem of replacing a soldier with a Robo Soldier completely controlled with a wireless network. The project is to detect an object that is located at some distance with a night vision camera. As the life of a soldier is very valuable, a real soldier can be replaced by an artificial robotic soldier and perform few activities that can be achievable by an artificial robot. In this way instead of risking the life of a soldier for everything we can avoid few situations where an activity can be performed without a real soldier. So this is something like automation in the war field with maximum usage of present technological aspects with minimum loss.

1.2 Aim of the project:


The project is basically used to detect an object by using a wireless robot with a night vision camera. This project uses a RF webcam which is converted into an IR camera, which has a wide range of applications such as detecting the object in darkness with the help of IR illumination. The IR camera is mounted on the wireless robot. The robot is controlled through PC. The video sent by the IR camera can be viewed on the monitor. The video sent by the IR camera is sampled and the sampled image is processed through a MATLAB program. This program helps in object detection.

1.3 Methodology:
The project begins by programming the microcontroller for serial communication with pc using RS232 interface. The data sent to the microcontroller through the terminal window of Flash Magic software. This data present in the ASCII format is specifically sent to port-2 of

the controller. Port-2 is connected to HT640 encoder whose purpose is to convert parallel data from the controller into serial data of the RF transmitter. The antenna in the transmitter section transmits the data to the receiver using ASK modulation technique operating at 434MHz frequency. The receiver receives the data and decodes the information received using HT648L decoder. The decoded data is sent to the ULN2803 which is an 18 pin chip of eight Darlington arrays which is used to drive the relays. DPDT relays are used to control the dc motor which controls the motion of bot. Wireless camera used for object detection is mounted on the bot. It is a wireless audio and video (AV) camera using 1.2GHz RF communication range. Camera receiver is connected to the pc by a TV tuner card. The video stream is imported into the Matlab using winvideo command. The acquired video is sampled and further processed for object detection. The Matlab code uses the RGB thresholds for detecting the object.

1.4 Significance of the work:


The word robot can refer to both physical robots and virtual software agents, but the latter are usually referred to as bots. There is no consensus on which machines qualify as robots, but there is general agreement among experts and the public that robots tend to do some or all of the following: move around, operate a mechanical limb, sense and manipulate their environment, and exhibit intelligent behavior, especially behavior which mimics humans or other animals. Controlled by computer locally, the owner can move the robot to various locations within range of the RF transmitter, take pictures and video, and listen to surroundings with the on-board microphone.

1.5 Organization of the Report:


The chapters are arranged in the following manner Chapter 1 deals with introduction, aim of the project, methodology, significance of work, organization of the project. Chapter 2 discusses about the introduction to Microcontroller and other hardware units along with their features that have been used in the project with complete circuit description and necessary block diagrams and pin diagrams. Chapter 3 explains in detail about the software used like Keil, Flash Magic and Matlab. Chapter 4 shows the experimental results of image acquisition that is done in Matlab with necessary functions that have been used for object detection. Chapter 5 gives the source code of assembly code for bot control and Matlab code for object detection. Chapter 6 concludes the project by showing the results obtained from the execution of the above code and implementation of wireless spy robot along with its future scope and the references used are listed.

CHAPTER 2 MICROCONTROLLER AND OTHER HARDWARE


2.1 INTRODUCTION:
The microcontroller generic part number actually includes a whole family of microcontrollers that have numbers ranging from 8031 to 8751, where P89V51RD2 is one among the above family used in the project. The other hardware components utilized are as follows: Hardware components: 1. HT 640 encoder and HT648 decoder 2. ULN 2803 3. MAX 232 4. LM7805 Voltage Regulator 5. Relays 6. RF module 7. Wireless webcam Circuit Diagram:

Fig2.1: Block Diagram of Transmission Section

Fig2.2: Block diagram of Receiver Section

2.2 P89V51RD2BN Microcontroller


2.2.1 General description The P89V51RD2 is an 80C51 microcontroller with 64 kB Flash and 1024 bytes of data RAM.

A key feature of the P89V51RD2 is its X2 mode option. The design engineer can choose to run the application with the conventional 80C51 clock rate (12 clocks per machine cycle) or select the X2 mode (6 clocks per machine cycle) to achieve twice the throughput at the same clock frequency. Another way to benefit from this feature is to keep the same performance by reducing the clock frequency by half, thus dramatically reducing the EMI. The Flash program memory supports both parallel programming and in serial In-System Programming (ISP). Parallel programming mode offers gang-programming at high speed, reducing programming costs and time to market. ISP allows a device to be reprogrammed in the end product under software control. The capability to field/update the application firmware makes a wide range of applications possible. The P89V51RD2 is also In-Application Programmable (IAP), allowing the Flash program memory to be reconfigured even while the application is running. Basic difference between microcontroller and microprocessor: A microprocessor system consists of a microprocessor with memory, input ports and output ports connected to it externally. A microcontroller is a single chip containing a microprocessor, memory, input ports and output ports. Since all four blocks reside on the one chip, a microcontroller is much faster than a microprocessor system. 2.2.2 Features 80C51 Central Processing Unit 5 V Operating voltage from 0 to 40 MHz 64 kB of on-chip Flash program memory with ISP (In-System Programming) and AP (In-Application Programming) Supports 12-clock (default) or 6-clock mode selection via software or ISP SPI (Serial Peripheral Interface) and enhanced UART PCA (Programmable Counter Array) with PWM and Capture/Compare functions Four 8-bit I/O ports with three high-current Port 1 pins (16 mA each) Three 16-bit timers/counters Programmable Watchdog timer (WDT) Eight interrupt sources with four priority levels

Second DPTR register Low EMI mode (ALE inhibit) TTL- and CMOS-compatible logic levels Brown-out detection Low power modes Power-down mode with external interrupt wake-up Idle mode PDIP40, PLCC44 and TQFP44 packages

MEMORY: We can split memory into two types. RAM and ROM. RAM stands for random access memory. They are two features of RAM which distinguish it from ROM. RAM is read/write - data can be written to and read from RAM. RAM is volatile - data is lost once the power to a RAM chip is lost. Random access refers to the fact that data from any location in the memory chip is accessible at any time (you simply put the desired address on the address bus). ROM stands for read only memory. As with RAM, it is random access but it differs from RAM in two ways. ROM, as the name suggests, is read only. You cannot write to a ROM chip. A ROM chip must be programmed, but once programmed, it cannot be (easily) changed ROM is nonvolatile - when power is removed from the chip data is not lost. There are many types of ROM available; PROM, EPROM, EEPROM and Flash are the most common.

2.2.3 BLOCK DIAGRAM:

Fig 2.3 Block diagram of P89V51RD2BN 2.2.4 PIN DESCRIPTION:

Fig 2.4 Pin diagram of P89V51RD2BN

Port0: P0.0 to P0.7- Pins 39-32

Port 0 is an 8-bit open drain bi-directional I/O port. Port 0 pins that have 1s written to them float and in this state can be used as high-impedance inputs. Port 0 is also the multiplexed low-order address and data bus during accesses to external code and data memory. In this application, it uses strong internal pull-ups when transitioning to 1s. Port 0 also receives the code bytes during the external host mode programming, and outputs the code bytes during the external host mode verification. External pull-ups are required during program verification or as a general purpose I/O port. Port 1: P1.0 to P1.7-Pins 1-8 Port 1 is an 8-bit bi-directional I/O port with internal pull-ups. The Port 1 pins are pulled high by the internal pull-ups when 1s are written to them and can be used as inputs in this state. As inputs, Port 1 pins that are externally pulled LOW will source current (IIL) because of the internal pull-ups. P1.5, P1.6, P1.7 have high current drive of 16 mA. Port 1 also receives the low-order address bytes during the external host mode programming and verification. P1.0 Timer/Counter 2 P1.1 P1.3 T2EX: Timer/Counter 2 capture/reload trigger and direction control P1.2 3 42 CEX0: Capture/compare external I/O for PCA Module 0. Each 4 I ECI: External clock input. This signal is the external clock input for the PCA. capture/compare module connects to a Port 1 pin for external I/O. When not used by the PCA, this pin can handle standard I/O. P1.4 P1.5 P1.6 SS: Slave port select input for SPI CEX1: Capture/compare external I/O for PCA Module 1 MOSI: Master Output Slave Input for SPI CEX2: Capture/compare external I/O for PCA Module 2 MISO: Master Input Slave Output for SPI CEX3: Capture/compare external I/O for PCA Module 3 P1.7 SCK: Master Output Slave Input for SPI CEX4: Capture/compare external I/O for PCA Module 4 T2: External count input to Timer/Counter 2 or Clock-out from

Port 2: P2.0 to P2.7 pin 21-28 Port 2 is an 8-bit bi-directional I/O port with internal pull-ups. Port 2 pins are pulled HIGH by the internal pull-ups when 1s are written to them and can be used as inputs in this state. As inputs, Port 2 pins that are externally pulled LOW will source current (IIL) because of the internal pull-ups. Port 2 sends the high-order address byte during fetches from external program memory and during accesses to external Data Memory that use 16-bit address (MOVX@DPTR). In this application, it uses strong internal pull-ups when transitioning to 1s. Port 2 also receives some control signals and a partial of high-order address bits during the external host mode programming and verification. Port 3: P3.0 to P3.7 pin10-17 Port 3 is an 8-bit bidirectional I/O port with internal pull-ups. Port 3 pins are pulled HIGH by the internal pull-ups when 1s are written to them and can be used as inputs in this state. As inputs, Port 3 pins that are externally pulled LOW will source current (IIL) because of the internal pull-ups. Port 3 also receives some control signals and a partial of highorder address bits during the external host mode programming and verification. P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 PSEN RXD: serial input port TXD: serial output port INT0: external interrupt 0 input INT1: external interrupt 1 input T0: external count input to Timer/Counter 0 T1: external count input to Timer/Counter 1 WR: external data memory write strobe RD: external data memory read strobe Program Store Enable: PSEN is the read strobe for external program memory. When

the device is executing from internal program memory, PSEN is inactive (HIGH). When the device is executing code from external program memory, PSEN is activated twice each

machine cycle, except that two PSEN activations are skipped during each access to external data memory. A forced HIGH-to-LOW input transition on the PSEN pin while the RST input is continually held HIGH for more than 10 machine cycles will cause the device to enter external host mode programming. RST Reset: While the oscillator is running, a HIGH logic state on this pin for two machine cycles will reset the device. If the PSEN pin is driven by a HIGH-to-LOW input transition while the RST input pin is held HIGH, the device will enter the external host mode, otherwise the device will enter the normal operation mode EA External Access Enable: EA must be connected to VSS in order to enable the device to fetch code from the external program memory. EA must be strapped to VDD for internal program execution. However, Security lock level 4 will disable EA, and program execution is only possible from internal program memory. The EA pin can tolerate a high voltage of 12 V. ALE/PROG I/O Address Latch Enable: ALE is the output signal for latching the low byte of the address during an access to external memory. This pin is also the programming pulse input (PROG) for flash programming. Normally the ALE is emitted at a constant rate of 16 the crystal frequency and can be used for external timing and clocking. One ALE pulse is skipped during each access to external data memory. However, if AO is set to 1, ALE is disabled. NC No Connect

XTAL1 Crystal 1: Input to the inverting oscillator amplifier and input to the internal clock generator circuits. XTAL2 VDD VSS Crystal 2: Output from the inverting oscillator amplifier. Power supply Ground

2.2.5 Memory organization: The device has separate address spaces for program and data memory. Flash program memory: There are two internal flash memory blocks in the device. Block 0 has 64 kbytes and contains the users code. Block 1 contains the Philips-provided ISP/IAP routines and may be enabled such that it overlays the first 8 kbytes of the user code memory. The 64 kB Block 0 is organized as 512 sectors, each sector consists of 128 bytes. Access to the IAP routines may be enabled by clearing the BSEL bit in the FCF register. However, caution must be taken when dynamically changing the BSEL bit. Since this will cause different physical memory to be mapped to the logical program address space, the user must avoid clearing the BSEL bit when executing user code within the address range 0000H to 1FFFH. Data RAM memory: The data RAM has 1024 bytes of internal memory. The device can also address up to 64 kB for external data memory. Expanded data RAM addressing: The P89V51RD2 has 1 kB of RAM The device has four sections of internal data memory: 1. The lower 128 bytes of RAM (00H to 7FH) are directly and indirectly addressable. 2. The higher 128 bytes of RAM (80H to FFH) are indirectly addressable. 3. The special function registers (80H to FFH) are directly addressable only. 4. The expanded RAM of 768 bytes (00H to 2FFH) is indirectly addressable by the move external instruction (MOVX) and clearing the EXTRAM bit.

AUXR - Auxiliary register (address 8EH) bit allocation

Since the upper 128 bytes occupy the same addresses as the SFRs, the RAM must be accessed indirectly. The RAM and SFRs space are physically separate even though they have the same addresses. When instructions access addresses in the upper 128 bytes (above 7FH), the MCU determines whether to access the SFRs or RAM by the type of instruction given. If it is indirect, then RAM is accessed. If it is direct, then an SFR is accessed. See the examples below. Indirect Access: MOV@R0, #data; R0 contains 90H Register R0 points to 90H which is located in the upper address range. Data in #data is written to RAM location 90H rather than port 1. Direct Access: MOV90H, #data; write data to P1 Data in #data is written to port 1. Instructions that write directly to the address write to the SFRs. To access the expanded RAM, the EXTRAM bit must be cleared and MOVX instructions must be used. The extra 768 bytes of memory is physically located on the chip and logically occupies the first 768 bytes of external memory (addresses 000H to 2FFH). When EXTRAM = 0, the expanded RAM is indirectly addressed using the MOVX instruction in combination with any of the registers R0, R1 of the selected bank or DPTR. Accessing the expanded RAM does not affect ports P0, P3.6 (WR), P3.7 (RD), or P2. With EXTRAM = 0, the expanded RAM can be accessed as in the following example. Expanded RAM Access (Indirect Addressing only): MOVX@DPTR, A DPTR contains 0A0H DPTR points to 0A0H and data in A is written to address 0A0H of the expanded RAM rather than external memory. Access to external memory higher than 2FFH using the MOVX instruction will access external memory (0300H to FFFFH) and will perform in the same way as the standard 8051, with P0 and P2 as data/address bus, and P3.6 and P3.7 as write and read timing signals.

AUXR - Auxiliary register (address 8EH) bit description EXTRAM Internal/External RAM access using MOVX @Ri/@DPTR. When 0, core attempts to access internal XRAM with address specified in MOVX instruction. If address supplied with this instruction exceeds on-chip available XRAM, off-chip XRAM is going to be selected and accessed. When 1, every MOVX @Ri/@DPTR instruction targets external data memory by default. AO ALE off: disables/enables ALE. AO = 0 results in ALE emitted at a constant rate of 12 the oscillator frequency. In case of AO = 1, ALE is active only during a MOVX or MOVC. When EXTRAM = 1, MOVX @Ri and MOVX @DPTR will be similar to the standard 8051. Using MOVX @Ri provides an 8-bit address with multiplexed data on Port 0. Other output port pins can be used to output higher order address bits. This provides external paging capabilities. Using MOVX @DPTR generates a 16-bit address. This allows external addressing up the 64 kB. Port 2 provides the high-order eight address bits (DPH), and Port 0 multiplexes the low order eight address bits (DPL) with data. Both MOVX @Ri and MOVX @DPTR generates the necessary read and write signals (P3.6 - WR and P3.7 - RD) for external memory use. Below shows external data memory RD, WR operation with EXTRAM bit. The stack pointer (SP) can be located anywhere within the 256 bytes of internal RAM (lower 128 bytes and upper 128 bytes). The stack pointer may not be located in any part of the expanded RAM.Access limited to ERAM ad

External data memory RD, WR with EXTRAM bit Fig 2.5 Internal and external data memory structure.

Dual data pointers: The device has two 16-bit data pointers. The DPTR Select (DPS) bit in AUXR1 determines which of the two data pointers is accessed. When DPS = 0, DPTR0 is selected; when DPS = 1, DPTR1 is selected. Quickly switching between the two data pointers can be accomplished by a single INC instruction on AUXR1

Fig 2.6 Dual data pointer organization.

AUXR1 - Auxiliary register 1 (address A2H) bit allocation

AUXR1 - Auxiliary register 1 (address A2H) bit description Flash memory In-Application Programming Flash organization The P89V51RD2 program memory consists of a 64 kB block. An In-System Programming (ISP) capability, in a second 8 kB block, is provided to allow the user code to be programmed incircuit through the serial port. There are three methods of erasing or programming of the Flash memory that may be used. First, the Flash may be programmed or erased in the end-user application by calling low-level routines through a common entry point (IAP). Second, the onchip ISP boot loader may be invoked. This ISP boot loader will, in turn, call low-level routines through the same common entry point that can be used by the end-user application. Third, the Flash may be programmed or erased using the parallel method by using a commercially available EPROM programmer which supports this device. Boot block

When the microcontroller programs its own Flash memory, all of the low level details are handled by code that is contained in a Boot block that is separate from the user Flash memory. A user program calls the common entry point in the Boot block with appropriate parameters to accomplish the desired operation. Boot block operations include erase user code, program user code, program security bits, etc. A Chip-Erase operation can be performed using a commercially available parallel programmer. This operation will erase the contents of this Boot Block and it will be necessary for the user to reprogram this Boot Block (Block 1) with the Philips-provided ISP/IAP code in order to use the ISP or IAP capabilities of this device. Power-On reset code execution Following reset, the P89V51RD2 will either enter the SoftICE mode (if previously enabled via ISP command) or attempt to autobaud to the ISP boot loader. If this autobaud is not successful within about 400 ms, the device will begin execution of the user code. In-System Programming (ISP) In-System Programming is performed without removing the microcontroller from the system. The In-System Programming facility consists of a series of internal hardware resources coupled with internal firmware to facilitate remote programming of the P89V51RD2 through the serial port. This firmware is provided by Philips and embedded within each P89V51RD2 device. The Philips In-System Programming facility has made in-circuit programming in an embedded application possible with a minimum of additional expense in components and circuit board area. The ISP function uses five pins (VDD, VSS, TxD, RxD, and RST). Only a small connector needs to be available to interface your application to an external circuit in order to use this Feature . Using the In-System Programming The ISP feature allows for a wide range of baud rates to be used in your application, independent of the oscillator frequency. It is also adaptable to a wide range of oscillator frequencies. This is accomplished by measuring the bit-time of a single bit in a received character. This information is then used to program the baud rate in terms of timer counts based on the oscillator frequency. The ISP feature requires that an initial character (an uppercase U) be sent to the P89V51RD2 to establish the baud rate. The ISP firmware provides

auto-echo of received characters. Once baud rate initialization has been performed, the ISP firmware will only accept Intel Hex-type records. Intel Hex records consist of ASCII characters used to represent hexadecimal values and are summarized below: :NNAAAARRDD..DDCC<crlf> In the Intel Hex record, the NN represents the number of data bytes in the record. The P89V51RD2 will accept up to 32 data bytes. The AAAA string represents the address of the first byte in the record. If there are zero bytes in the record, this field is often set to 0000. The RR string indicates the record type. A record type of 00 is a data record. A record type of 01 indicates the end-of-file mark. In this application, additional record types will be added to indicate either commands or data for the ISP facility The maximum number of data bytes in a record is limited to 32 (decimal). ISP commands are summarized in Table 10. As a record is received by the P89V51RD2, the information in the record is stored internally and a checksum calculation is performed. The operation indicated by the record type is not performed until the entire record has been received. Should an error occur in the checksum, the P89V51RD2 will send an X out the serial port indicating a checksum error. If the checksum calculation is found to match the checksum in the record, then the command will be executed. In most cases, successful reception of the record will be indicated by transmitting a . character out the serial port.

2.3 ENCODER AND DECODER:

2.3.1 HT640 ENCODER: General Description


The HT640 encoder is a CMOS LSI for remote control system applications. It is capable of encoding 18 bits of information which consists of 10 address bits and 8 data bits. Each address/data input is externally trinary programmable if bonded out. It is otherwise set floating internally. The programmable address/data is transmitted together with the header bits via an RF or an infrared transmission medium upon receipt of a trigger signal.

Features
Operating voltage: 2.4V~12V Low power and high noise immunity CMOS technology Low standby current Three words transmission Built-in oscillator needs only 5% resistor Easy interface with an RF or infrared transmission media Minimal external components

Applications
Burglar alarm system Smoke and fire alarm system Garage door controllers Car door controllers Car alarm system Security system Cordless telephones Other remote control systems

Fig 2.7 Pin Diagram of HT640 Encoder Table 2.1: Pin Description of HT640

Functional Description
Operation The HT640 encoder begins a three-word transmission cycle upon receipt of a transmission enable This cycle will repeat itself as long as the transmission enable (TE) is held high. Once the transmission enable falls low, the encoder output completes its final cycle and then stops as shown below.

Information word
An information word consists of 4 periods as shown:

Fig 2.8 Flow Chart of Encoder

2.3.2 HT648L DECODER: General Description


The HT648L decoder is a CMOS LSIs for remote control system applications. It is paired with the HT640 encoders. For proper operation a pair of encoder/decoder pair with the same number of address and data format should be selected. The HT648L decoder receives serial address and data from that series of encoders that are transmitted by a carrier using an RF or an IR transmission medium. It then compares the serial input data twice continuously with its local address. If no errors or unmatched codes are encountered, the input data codes are decoded and then transferred to the output pins. The VT pin also goes high to indicate a valid transmission. The HT648L is capable of decoding 18 bits of information that consists of 10 bits of address and 8 bits of data.

Features
Operating voltage: 2.4V~12V Low power and high noise immunity CMOS technology Low standby current Capable of decoding 18 bits of information Pairs with HOLTEKs 318 series of encoders 8~18 address pins 0~8 data pins Trinary address setting Two times of receiving check Built-in oscillator needs only a 5% resistor Valid transmission indictor Easily interface with an RF or an infrared transmission medium Minimal external components

Applications
Burglar alarm system Smoke and fire alarm system Garage door controllers Car door controllers Car alarm system Security system Cordless telephones Other remote control systems

Pin diagram:-

Fig 2.9 Pin Diagram of HT648L Decoder

Pin description

Table 2.2: Pin Description of HT648L

Functional Description Operation


The HT648L decoder is paired with HT640 encoder. The decoder receives data transmitted by the encoder and interprets the first 10 bits of the code period as address and the last 8 bits as data. A signal on the DIN pin then activates the oscillator which in turns decodes the incoming address and data. The decoder will check the received address twice continuously. If all the received address codes match the contents of the decoders local address, the 8 bits of data are decoded to activate the output pins, and the VT pin is set high to indicate a valid transmission. That will last until the address code is incorrect or no signal has been received. The output of the VT pin is high only when the transmission is valid. Otherwise it is low always.

Decoder timing

Fig 2.10 Flow Chart of Decoder

2. 4. RF MODULE:
2.4.1 ST-TX01-ASK Transmitter:

General Description:
This transmitter works based up on the ASK modulation. Amplitude-shift keying (ASK) is a form of modulation that represents digital data as variations in the amplitude of a carrier wave. The amplitude of an analog carrier signal varies in accordance with the bit stream (modulating signal), keeping frequency and phase constant. The level of amplitude can be used to represent binary logic 0s and 1s. We can think of a carrier signal as an ON or OFF switch. In the modulated signal, logic 0 is represented by the absence of a carrier, thus giving OFF/ON keying operation and hence the name given.

The ST-TX01-ASK is an ASK Hybrid transmitter module. ST-TX01-ASK is designed by the Saw Resonator, with an effective low cost, small size, and simple-to-use for Frequency Range: 315 / 433.92 MHZ. Supply Voltage: 3~12V. Output Power: 4~16dBm Circuit Shape: Saw

Fig 2.11 Image and Block Diagram of ST-TX01-ASK Transmitter

RF ASK Transmitter pin numbers o Pin1. Antenna


o

Pin2. Vcc

o Pin3. Data
o

Pin4. GND

Applications Wireless security systems Car Alarm systems Remote controls. Sensor reporting Automation systems 2.4.2 ST-RX04-ASK Receiver:

General Description:
The ST- RX04-ASK is an ASK super heterodyne receiver module with PLL synthesizer and crystal oscillator. The circuit shape is PLL. Receiver Frequency: 315 / 433.92 MHZ Operation Voltage: 5V IF Frequency: 500k Typical sensitivity: -105dBm Supply Current: 2.3mA

Features
Low power consumption. Easy for application. On-Chip VCO with integrated PLL using crystal oscillator reference.

Integrated IF and data filters.


Operation temperature range: -400C ~ -800C

Operation voltage: 5 Volts. Available frequency at: 315/434 MHz

The RX ASK is an ASK Hybrid receiver module. It is a effective low cost solution for using 433 MHz. The TX-ASK is an ASK hybrid transmitter module. TX-ASK is designed by the saw resonator, with an effective low cost, small size and simple to use for designing.

Fig 2.12 Image and Block Diagram of ST-RX04-ASK Receiver

Applications:
Car security system Wireless security systems Sensor reporting Automation system Remote Keyless entry

2.5MAX232:

The MAX232 is a dual driver/receiver that includes a capacitive voltage generator to supply EIA-232 voltage levels from a single 5-V supply. Each receiver converts EIA-232 inputs to 5-V TTL/CMOS levels. These receivers have a typical threshold of 1.3 V and a typical hysteresis of 0.5 V, and can accept 30-V inputs. Each driver converts TTL/CMOS input levels into EIA-232 levels.

Fig 2.13 MAX 232 PIN DIAGRAM

The MAX232 contains four sections: dual charge-pump DC-DC voltage converters, RS-232 drivers, RS-232 receivers, and receiver and transmitter enable control inputs. Dual Charge-Pump Voltage Converter The MAX232 has two internal charge-pumps that convert +5V to 10V (unloaded) for RS-232 driver operation. The first converter uses capacitor C1 to double the +5V input to +10V on C3 at the V+ output. The second converter uses capacitor C2 to invert +10V to -10V on C4 at the V- output.

A small amount of power may be drawn from the +10V (V+) and -10V (V-) outputs to power external circuitry, except on the MAX225 and MAX232, where these pins are not available. V+ and V- are not regulated, so the output voltage drops with increasing load current. MAX241, and MAX245MAX249, avoid using V+ and Vto power external circuitry. When these parts are shut down, V- falls to 0V, and V+ falls to +5V. For applications where a +10V external supply is applied to the V+ pin (instead of using the internal charge pump to generate +10V), the C1 capacitor must not be installed and the SHDN pin must be tied to VCC. This is because V+ is internally connected to VCC in shutdown mode. RS-232 Drivers typical driver output voltage swing is 8V when loaded with a nominal 5k RS-232 receiver and VCC = +5V. Output swing is guaranteed to meet the EIA/TIA- 232E and V.28 specification, which calls for 5V minimum driver output levels under worst-case conditions. These include a minimum 3k load, VCC = +4.5V, and maximum operating temperature. Unloaded driver output voltage ranges from (V+ -1.3V) to (V- +0.5V). Input thresholds are both TTL and CMOS compatible. The inputs of unused drivers can be left unconnected since 400k input pull-up resistors to VCC are built in (except for the MAX220). The pull-up resistors force the outputs of unused drivers low because all drivers invert. The internal input pull-up resistors typically source 12A, except in shutdown mode where the pull-ups are disabled. Driver outputs turn off and enter a high-impedance statewhere leakage current is typically microamperes (maximum 25A)when in shutdown mode, in three-state mode, or when device power is removed. Outputs can be driven to 15V. The power supply current typically drops to 8A in shutdown mode. The receiver TTL/CMOS outputs are in a highimpedance, three-state mode whenever the three-state enable line is high, and are also highimpedance whenever the shutdown control line is high. When in low-power shutdown mode, the driver outputs are turned off and their leakage current is less than 1A with the driver output pulled to ground. The driver output leakage remains less than 1A, even if the transmitter output is backdriven between 0V and (VCC + 6V). Below -0.5V, the transmitter is diode clamped to ground with 1k series impedance. The transmitter is also zener clamped to approximately VCC + 6V, with a series impedance of 1k. The driver output slew rate is limited to less than 30V/s

as required by the EIA/TIA-232E and V.28 specifications. Typical slew rates are 24V/s unloaded and 10V/s loaded with 3 and 2500pF. RS-232 Receivers EIA/TIA-232E and V.28 specifications define a voltage level greater than 3V as a logic 0, so all receivers invert Input thresholds are set at 0.8V and 2.4V, so receivers respond to TTL level inputs as well as EIA/TIA-232E and V.28 levels. The receiver inputs withstand an input overvoltage up to 25V and provide input terminating resistors withnominal 5k values. The receiver input hysteresis is typically 0.5V with a guaranteed minimum of 0.2V. This produces clear output transitions with slow-moving input signals, even with moderate amounts of noise and ringing. The receiver propagation delay is typically 600ns and is independent of input swing direction.

Fig 2.14 CONNECTION OF MAX232 TO PC

2.6 ULN2803:
The driver makes use of the ULN2803 driver IC, which contains an array of 8 power Darlington arrays, each capable of driving 500mA of current. At an approximate duty

cycle, depending on ambient temperature and number of drivers turned on, simultaneously typical power loads totaling over 230w can be controlled. The device has base resistors, allowing direct connection to any common logic family. All the emitters are tied together and brought out to a separate terminal. Output protection diodes are included; hence the device can drive inductive loads with minimum extra components. Typical loads include relays, solenoids, stepper motors, magnetic print hammers, multiplexed LED, incandescent displays and heaters.

Fig 2.15 ULN pin connection and block diagram

The main features of ULN2803 are as follows: Seven Darlington per package Output current 500ma per driver (600ma peak) Output voltage 50v Integrated suppression diodes for inductive loads Outputs can be paralleled for high current TTL/CMOS/DTL compatible inputs Inputs pinned opposite outputs to simplify layout. Transient protected outputs Dual In-Line plastic package or small-Outline IC package

2.7 RELAY:
2.7.1 Overview: A relay is an electrically operated switch. Current flowing through the coil of the relay creates a magnetic field which attracts a lever and changes the switch contacts. The coil current can be ON or OFF so relays have two switch position and they are double throw (changeover) switches. Relays allow one circuit to switch a second circuit which can be completely separate from the first. For example a low voltage battery circuit can use a relay to switch a 230V AC mains circuit. There is no electrical connection inside the relay between the two circuits; the link is magnetic and mechanical. The coil of a relay passes a relatively large current, typically 30mA for a 12V relay, but it can be as much as 100mA for relays designed to operate from lower voltages. Most ICs (chips) can not provide this current and a transistor is usually used to amplify the small IC current to the larger value required for the relay coil. The maximum output current for the popular 555 timer IC is 200mA so these devices can supply relay coils directly without amplification.

Relays are usually SPDT or DPDT but they can have many more sets of switch contacts, for example relay with 4 sets of changeover contacts are readily available. Most relays are designed for PCB mounting but you can solder wires directly to the pins providing you take care to avoid melting the plastic case of the relay. The supplier's catalogue should show you the relay's connection. The coil will be obvious and it may be connected either way round. Relay coils produce brief high voltage 'spikes' when they are switched off and this can destroy transistors and ICs in the circuit. To prevent damage you must connect a protection diode across the relay coil.

Fig 2.16 Relay diagram The relays switch connections are usually contains COM, NC and NO. COM = Common, always connect to this; it is the moving part of the switch. NC = Normally Closed, COM is connected to this when the relay coil is off. NO = Normally Open, COM is connected to this when the relay coil is on. Connect to COM and NO if you want the switched circuit to be on when the relay coil is on. Connect to COM and NC if you want the switched circuit to be on when the relay coil is off. Most relays are SPDT or DPDT which are often described as "single pole changeover" (SPCO) Or "double pole changeover"(DPCO).

Fig 2.17 SPDT Relay

D This is a Single Pole Double Throw relay. Current will flow between the movable
contact and one fixed contact when the coil is energized and between the movable contact and the alternate fixed contact when the relay coil is energized. The most commonly used relay in car audio, the Bosch relay, is a SPDT relay..

Fig 2.17 DPDT Relay This relay is a Double Pole Double Throw relay. It operates like the SPDT relay but has twice as many contacts. There are two completely isolated sets of contacts. 2.7.2 Relay Construction: Relays are amazingly simple devices. There are four parts in every relay:

Electromagnet Armature that can be attracted by the electromagnet Spring Set of electrical contacts

A relay consists of two separate and completely independent circuits. The first is at the bottom and drives the electromagnet. In this circuit, a switch is controlling power to the electromagnet. When the switch is on, the electromagnet is on, and it attracts the armature. The armature is acting as a switch in the second circuit. When the electromagnet is energized, the armature completes the second circuit and the light is on. When the electromagnet is not energized, the spring pulls the armature away and the circuit is not complete. In that case, the light is dark. When you purchase relays, you generally have control over several variables:

The voltage and current that is needed to activate the armature The maximum voltage and current that can run through the armature and the armature The number of armatures (generally one or two) The number of contacts for the armature (generally one or two -- the relay shown here Whether the contact (if only one contact is provided) is normally open (NO) or normally

contacts

has two, one of which is unused)

closed (NC)
Relay Applications:
In general, the point of a relay is to use a small amount of power in the electromagnet coming, say, from a small dashboard switch or a low-power electronic circuit -- to move an armature that is able to switch a much larger amount of power. For example, you might want the electromagnet to energize using 5 volts and 50 milliamps (250 mill watts), while the armature can support 120V AC at 2 amps (240 watts).

Relays are quite common in home appliances where there is an electronic control turning on something like a motor or a light. They are also common in cars, where the 12V supply voltage means that just about everything needs a large amount of current. In later model cars, manufacturers have started combining relay panels into the fuse box to make maintenance easier. In places where a large amount of power needs to be switched, relays are often cascaded. In this case, a small relay switches the power needed to drive a much larger relay, and that second relay switches the power to drive the load.

Relays can also be used to implement Boolean logic.

Advantages of Relay:

Relays can switch AC and DC, transistors can only switch DC. Relays can switch high voltages, transistors cannot. Relays are a better choice for switching large currents (> 5A). Relays can switch many contacts at once.

2.8 DC MOTOR:
DC motors are configured in many types and sizes, including brush less, servo, and gear motor types. A motor consists of a rotor and a permanent magnetic field stator. The magnetic field is maintained using either permanent magnets or electromagnetic windings. DC motors are most commonly used in variable speed and torque. Motion and controls cover a wide range of components that in some way are used to generate and/or control motion. Areas within this category include bearings and bushings, clutches and brakes, controls and drives, drive components, encoders and resolves, Integrated motion control, limit switches, linear actuators, linear and rotary motion components, linear position sensing, motors (both AC and DC motors), orientation position sensing, pneumatics and pneumatic components, positioning stages, slides and guides, power transmission (mechanical), seals, slip rings, solenoids, springs. Motors are the devices that provide the actual speed and torque in a drive system. This family includes AC motor types (single and multiphase motors, universal, servo motors, induction, synchronous, and gear motor) and DC motors (brush less, servo motor, and gear motor) as well as linear, stepper and air motors, and motor contactors and starters. In any electric motor, operation is based on simple electromagnetism. A currentcarrying conductor generates a magnetic field; when this is then placed in an external magnetic field, it will experience a force proportional to the current in the conductor, and to the strength of the external magnetic field. The internal configuration of a DC motor is designed to harness the

magnetic interaction between a current-carrying conductor and an external magnetic field to generate rotational motion. Look at a simple 2-pole DC electric motor (here red represents a magnet or winding with a "North" polarization, while green represents a magnet or winding with a "South" polarization).

Fig 2.18 DC motor Every DC motor has six basic parts -- axle, rotor (a.k.a., armature), stator, commutator, field magnet(s), and brushes. In most common DC motors (and all that Beamers will see), the external magnetic field is produced by high-strength permanent magnets. The stator is the stationary part of the motor. This includes the motor casing, as well as two or more permanent magnet pole pieces. The rotor (together with the axle and attached commutator) rotates with respect to the stator. The rotor consists of windings (generally on a core), the windings being electrically connected to the commutator. The above diagram shows a common motor layout -- with the rotor inside the stator (field) magnets. The geometry of the brushes, commutator contacts, and rotor windings are such that when power is applied, the polarities of the energized winding and the stator magnet(s) are misaligned, and the rotor will rotate until it is almost aligned with the stator's field magnets. As the rotor reaches alignment, the brushes move to the next commutator contacts, and energize the next winding. Given our example two-pole motor, the rotation reverses the direction of current through the rotor winding, leading to a "flip" of the rotor's magnetic field, and driving it to continue rotating. In real life, though, DC motors will always have more than two poles (three is a very common number). In particular, this avoids "dead spots" in the commutator. You can imagine how with our example two-pole motor, if the rotor is exactly at the middle of its rotation (perfectly

aligned with the field magnets), it will get "stuck" there. Meanwhile, with a two-pole motor, there is a moment where the commutator shorts out the power supply (i.e., both brushes touch both commutator contacts simultaneously). This would be bad for the power supply, waste energy, and damage motor components as well. Yet another disadvantage of such a simple motor is that it would exhibit a high amount of torque ripple" (the amount of torque it could produce is cyclic with the position of the rotor).

Fig 2.19 working of DC motor So since most small DC motors are of a three-pole design, let's tinker with the workings of one via an interactive animation (JavaScript required):

Fig 2.19 conceptual 3-pole dc motor One pole is fully energized at a time (but two others are "partially" energized). As each brush transitions from one commutator contact to the next, one coil's field will rapidly collapse, as the next coil's field will rapidly charge up (this occurs within a few microsecond). We'll see more about the effects of this later, but in the meantime you can see that this is a direct result of the coil windings' series wiring:

Fig 2.19 working of 3-pole dc motor There's probably no better way to see how an average dc motor is put together, than by just opening one up. Unfortunately this is tedious work, as well as requiring the destruction of a perfectly good motor. This is a basic 3-pole dc motor, with 2 brushes and three commutator contacts

2.9 VOLTAGE REGULATOR:


The LM7805 is simple to use. You simply connect the positive lead of your unregulated DC power supply (anything from 9VDC to 24VDC) to the Input pin, connect the negative lead to the Common pin and then when you turn on the power, you get a 5 volt supply from the Output pin.

Fig 2.20 Pin Diagram of Regulator

Circuit Features: Brief description of operation: Gives out well regulated +5V output, output current capability of 100 mA

Circuit protection: Built-in overheating protection shuts down output when Circuit complexity: Very simple and easy to build Circuit performance: Very stable +5V output voltage, reliable operation

regulator IC gets too hot


Voltage regulators comprise a class of widely used ICs. Regulator IC units contain the circuitry for reference source, comparator amplifier, control device, and overload protection all in a single IC. Although the internal construction of the IC is somewhat different from that described for discrete voltage regulator circuits, the external operation is much the same. IC units provide regulation of either a fixed positive voltage, a fixed negative voltage, or an adjustably set voltage. A power supply can be built using a transformer connected to the ac supply line to step the ac voltage to desired amplitude, then rectifying that ac voltage, filtering with a capacitor and RC filter, if desired, and finally regulating the dc voltage using an IC regulator. The regulators can be selected for operation with load currents from hundreds of mill amperes to tens of amperes, corresponding to power ratings from mill watts to tens of watts. Three-Terminal Voltage Regulators: Fixed Positive Voltage Regulators:
IN Vin C1 GND 78XX OUT Vout C2

Fig 2.21 pin connection of IC regulator Fig shows the basic connection of a three-terminal voltage regulator IC to a load. The fixed voltage regulator has an unregulated dc input voltage, Vi, applied to one input terminal, a regulated output dc voltage, Vo, from a second terminal, with the third terminal connected to ground. While the input voltage may vary over some permissible voltage range, and the output load may vary over some acceptable range, the output voltage remains constant within specified voltage variation limits. A table of positive voltage regulated ICs is provided in table. For a selected regulator, IC device specifications list a voltage range over which the input voltage can vary to maintain a regulated output voltage over a range of load current. The specifications also list the amount of output voltage change resulting from a change in load current (load regulation) or in input voltage (line regulation).

Table 2.3 Positive Voltage Regulators in 7800 series


IC No. Output voltage(v) Maximum input voltage(v)

7805 7806 7808 7810 7812 7815 7818

+5 +6 +8 +10 +12 +15 +18 35V

7824

+24

40V

2.10 WIRELESS CAMERA


Radio Frequency AV Wireless Cam A wireless audio and video signal transmitter and receiver system apparatus capable of accepting both external baseband audio and video signal inputs and a modulated external audio/video signal modulated at a particular TV channel. A transmitter transmits an audio/video signal to one or more remote receivers which regenerate the original audio/video signal providing both baseband audio /video signal output at the particular television channel. The transmitter includes a modulated audio/video signal input section and baseband audio and video signal input sections which provide audio subcarrier and video baseband signals to a video/RF switch which permits the user to select between modulated and baseband inputs to the transmitter. The audio/video signal is AM modulated and up converted before being transmitted to the receiver. The receiver down converts the received audio/video signal and through which a modulated audio/video signal output section connected to baseband audio and video signal output sections serves to provide both modulated and baseband audio/video signal outputs.

2.22 AV Transmitter circuit diagram The transmitter is made up of 2 parts: audio and video unit. The audio signal form MIC1 is amplified, then modulated by the audio carry frequency oscillator(6.5MHz), the modulated carry frequency is added in the VT of voltage controlled oscillator VCO2 (2.4GHz,D1,Q1). The video signal from CMOS camera passes through the sharp network (R4,R5,C11,R16),also is added in the VT of VCO2,another signal is added in the VCO2 is the error voltage output of loop filter (R1,R24,R25,R28,C17,C19,C25) of PLL(U2) which is programmed by CPU(U1), the channel data is decided by the encode switch(SW1) of CPUs VCO2 is compared with reference crystal oscillator, the error frequency of oscillator VCO2 can be corrected. The carry frequency modulated of audio and video has filter (c20,c18,c23,smicrostrip) to make the higher harmonica of signal reduce to lower level. The purer signal is emitted by antenna (RFout ) AV Receiver: Here in this we use RF receiver which worked at the frequencies of 900MHz to 1200MHz. The receiver receives the signal from the transmitter when we tune the tuner circuit of the receiver. The receiver circuit basically consists of a receiving antenna, RF amplifier, Demodulator, Tuner and Display device.

Fig 2.23 AV Receiver circuit diagram The receiving antenna is used to pickup the Electro-magnetic signals and converts these signals into Electrical signals. The antenna is fed to the RF amplifier which is used to amplify the electric signals. The tuner is used to tune specific frequency for effective reception. The demodulator is used to demodulate the modulated singles and produces baseband signal which is used to demodulate the modulated signal and produces baseband signal which is similar to the input of the transmitter. The output of the demodulator is given to the any type of displays devices to see the audio and video of transmitted signals. Features: Wireless transmission and reception Small size Light weight Low power consumption High sensitivity Easy installation and operation Easy to construct Table 2.4 Specifications of RF-AV Wireless Cam Image pickup device inch CMOS

TV system Definition Scan frequency Min illumination Output Power Output frequency Power supply

PAL/CCIR,NTSC/EIA 380 TV lines Pal/CCIR:50Hz,NTSC/EIA:60Hz 3 LUX 5omW,200mW 900MHz,1200MHz DC +6V to +12V

CHAPTER 3 SOFTWARE DETAILS


3.1 KEIL SOFTWARE
Introduction to Micro vision Keil (IDE) Keil is a cross compiler. So first we have to understand the concept of compilers and cross compilers. After then we shall learn how to work with keil. Concept of compiler: Compilers are programs used to convert a High Level Language to object code. Desktop compilers produce an output object code for the underlying microprocessor, but not for other microprocessors. I.E the programs written in one of the HLL like C will compile the code to run on the system for a particular processor like x86 (underlying microprocessor in the computer). For example compilers for Dos platform is different from the Compilers for Unix platform So if one wants to define a compiler then compiler is a program that translates source code into object code. The compiler derives its name from the way it works, looking at the entire piece of source code and collecting and reorganizing the instruction. See there is a bit little difference between compiler and an interpreter. Interpreter just interprets whole program at a time while compiler analyzes and execute each line of source code in succession, without looking at the entire program. The advantage of interpreters is that they can execute a program immediately. Secondly programs produced by compilers run much faster than the same programs executed by an interpreter. However compilers require some time before an executable program emerges. Now as compilers translate source code into object code, which is unique for each type of computer, many compilers are available for the same language.

Concept of cross compiler: A cross compiler is similar to the compilers but we write a program for the target processor (like 8051 and its derivatives) on the host processors (like computer of x86) It means being in one environment you are writing a code for another environment is called cross development. And the compiler used for cross development is called cross compiler So the definition of cross compiler is a compiler that runs on one computer but produces object code for a different type of computer. Cross compilers are used to generate software that can run on computers with a new architecture or on special-purpose devices that cannot host their own compilers. Cross compilers are very popular for embedded development, where the target probably couldn't run a compiler. Typically an embedded platform has restricted RAM, no hard disk, and limited I/O capability. Code can be edited and compiled on a fast host machine (such as a PC or Unix workstation) and the resulting executable code can then be downloaded to the target to be tested. Cross compilers are beneficial whenever the host machine has more resources (memory, disk, I/O etc) than the target. Keil C Compiler is one such compiler that supports a huge number of host and target combinations. It supports as a target to 8 bit microcontrollers like Atmel and Motorola etc. Why do we need cross compiler? There are several advantages of using cross compiler. Some of them are described as follows By using this compilers not only can development of complex embedded systems be

completed in a fraction of the time, but reliability is improved, and maintenance is easy. Knowledge of the processor instruction set is not required. A rudimentary knowledge of the 8051s memory architecture is desirable but not

necessary. Register allocation and addressing mode details are managed by the compiler. The ability to combine variable selection with specific operations improves program

readability.

Keywords and operational functions that more nearly resemble the human thought

process can be used. Program development and debugging times are dramatically reduced when compared to

assembly language programming. The library files that are supplied provide many standard routines (such as formatted

output, data conversions, and floating-point arithmetic) that may be incorporated into your application. Existing routine can be reused in new programs by utilizing the modular programming

techniques available with C. The C language is very portable and very popular. C compilers are available for almost

all target systems. Existing software investments can be quickly and easily converted from or adapted to other processors or environments. Now after going through the concept of compiler and cross compilers lets we start with Keil C cross compiler. Keil C cross compiler: Keil is a German based Software development company. It provides several development tools like IDE (Integrated Development environment) Project Manager Simulator Debugger C Cross Compiler, Cross Assembler, Locator/Linker

Keil Software provides you with software development tools for the ARM microcontrollers. With these tools, you can generate embedded applications for the multitude of ARM derivatives. Keil provides following tools for ARM development

1. 2. 3. 4. 5.

ARM Optimizing C Cross Compiler, Macro Assembler, ARM Utilities (linker, object file converter, library manager), Source-Level Debugger/Simulator, Vision for Windows Integrated Development Environment.

The keil ARM tool kit includes three main tools, assembler, compiler and linker. An assembler is used to assemble your ARM assembly program A compiler is used to compile your C source code into an object file A linker is used to create an absolute object module suitable for your in-circuit emulator. 8051 project development cycle: These are the steps to develop ARM project using keil 1. Create source files in C or assembly. 2. Compile or assemble source files. 3. Correct errors in source files. 4. Link object files from compiler and assembler. 5. Test linked application.

3.2 Flash Magic


NXP Semiconductors produce a range of Microcontrollers that feature both on-chip Flash memory and the ability to be reprogrammed using In-System Programming technology. Flash Magic is Windows software from the Embedded Systems Academy that allows easy access to all the ISP features provided by the devices. These features include: Erasing the Flash memory (individual blocks or the whole device) Programming the Flash memory

Modifying the Boot Vector and Status Byte Reading Flash memory Performing a blank check on a section of Flash memory Reading the signature bytes Reading and writing the security bits Direct load of a new baud rate (high speed communications) Sending commands to place device in Boot loader mode Flash Magic provides a clear and simple user interface to these features and more as described in the following sections. Under Windows, only one application may have access the COM Port at any one time, preventing other applications from using the COM Port. Flash Magic only obtains access to the selected COM Port when ISP operations are being performed. This means that other applications that need to use the COM Port, such as debugging tools, may be used while Flash Magic is loaded. Note that in this manual third party Compilers are listed alphabetically. No preferences are indicated or implied. 3.2.1Five Step Programming For each step there is a corresponding section in the main window as described in the User Interface Tour. Step 1 Connection Settings Before the device can be used the settings required to make a connection must be specified

COM Port Settings

Select the desired COM port from the drop down list or type the desired COM port directly into the box. If you enter the COM port yourself then you must enter it in one of the following formats: COM n n

Any other format will generate an error. So if you want to use COM 5 (which is not present on the drop down list) you can directly type in either COM 5 or 5. Select the baud rate to connect at. Try a low speed first. The maximum speed that can be used depends on the crystal frequency on your hardware. You can try connecting at higher and higher speeds until connections fail. Then you have found the highest baud rate to connect at. Alternatively, some devices support high speed communications. Please refer to the High Speed Communications section for information. Select the device being used from the drop down list. Ensure you select the correct one as different devices have different feature sets and different methods of setting up the serial communications. Select the interface being used, if any. An interface is a device that connects between your PC and the target hardware. If you simply have a serial cable or USB to serial cable Connecting your COM port to the target hardware, then choose "None (ISP)". Choosing the correct interface will automatically configure Flash Magic for that interface, along with enabling and disabling the relevant features. Enter the oscillator frequency used on the hardware. Do not round the frequency, instead enter it as precisely as possible. Some devices do not require the oscillator frequency to be entered, so this field will not be displayed. Once the options are set ensure the device is running the on-chip Boot loader if you are using a manual ISP entry method. Note that the connection settings affect all ISP features provided by Flash Magic. Ethernet Settings Selecting a device with "Ethernet" at the end of the name indicates that the Ethernet boot loader should be used. The Ethernet options will be displayed. Enter an IP address for the boot loader. This must be an address on the same subnet as the

PC running Flash Magic and it must not be already in use. The boot loader will be assigned this IP address while Flash Magic is accessing the device. The IP address must have the format "a.b.c.d" where a, b, c and d are decimal values from zero to 255. Enter the MAC address of the boot loader. Typically the MAC address is hard-coded in the bootloader.The MAC address must have the format "aa-bb-cc-dd-ee-ff" where aa, bb, cc, dd, ee and ff are two digit hexadecimal values. Note that the connection settings affect all ISP features provided by Flash Magic. 4.2 Step 2 Erasing This step is optional, however if you attempt to program the device without first erasing at least one Flash block, then Flash Magic will warn you and ask you if you are sure you want to program the device.

Select each Flash block that you wish to erase by clicking on its name. If you wish to erase all the Flash then check that option. If you check to erase a Flash block and all the Flash then the Flash block will not be individually erased. If you wish to erase only the Flash blocks used by the hex file you are going to select, then check that option. For most devices erasing all the Flash also results in the Boot Vector and Status Byte being set to default values, which ensure that the Boot loader will be executed on reset, regardless of the state of the PSEN pin or other hardware requirements. Only when programming a Hex File has been completed will the Status Byte be set to 00H to allow the code to execute.

This is a safeguard against accidentally attempting to execute when the Flash is erased. On some devices erasing all the Flash will also erase the security bits. This will be indicated by the text next to the Erase all Flash option. On some devices erasing all the Flash will also erase the speed setting of the device (the number of clocks per cycle) setting it back to the default. This will be indicated by the text next to the Erase all Flash option. 4.3 Step 3 Selecting the Hex File This step is optional. If you do not wish to program a Hex File then do not select one.

You can either enter a path name in the text box or click on the Browse button to select a Hex File by browsing to it. Also you can choose Open from the File menu. Note that the Hex file is not loaded or cached in any way. This means that if the Hex File is modified, you do not have to reselect it in Flash Magic. Every time the Hex File is programmed it is first re-read from the location specified in the main window. The date the Hex file was last modified is shown in this section. This information is updated whenever the hex file is modified. The hex file does not need to be reselected. Clicking on more info or choosing Information from the File menu will display additional information about the Hex file. The information includes the range of Flash memory used by the Hex file, the number of bytes of Flash memory used and the percentage of the currently selected device that will be filled by programming the Hex file. If the device supports programming and execution from RAM, for example the ARM devices, then the hex file may contain records for the RAM. First the flash will be programmed followed by the RAM. Programs loaded into RAM via a hex file may be executed using such features as the Go option.

4.4 Step 4 Options Flash Magic provides various options that may be used after the Hex File has been programmed.

This section is optional, however Verify After Programming, Fill Unused Flash and Gen Block Checksums may only be used if a Hex File is selected (and therefore being programmed), as they all need to know either the Hex File contents or memory locations used by the Hex File. Checking the Verify After Programming option will result in the data contained in the Hex File being read back from Flash and compared with the Hex File after programming. This helps to ensure that the Hex File was correctly programmed. If the device does not support verifying then this item will be disabled. Checking the Fill Unused Flash option will result in every memory location not used by the Hex File being programmed with the value that sets all the bits to a programmed state. Once a location has been programmed with this feature it cannot be reprogrammed with any other value, preventing someone from programming the device with a small program to read out the contents of Flash or altering the applications operation. Checking the Gen Block Checksums option will instruct Flash Magic to program the highest location in every Flash block used by the Hex File with a special checksum adjuster value. This value ensures that when a checksum is calculated for the whole Flash Block it will equal 55H, providing the contents of the Flash block have not be altered or corrupted. Please refer to the Block Checksums section for more information. Checking the Execute option will cause the downloaded firmware to be executed automatically after the programming is complete. Note that this will not work if using the Hardware Reset option or a device that does not support this feature. 4.5 Step 5 Performing the Operations Step 5 contains a Start button.

Clicking the Start button will result in all the selected operations in the main window taking place. They will be in order: Erasing Flash Programming the Hex File Verifying the Hex File Filling Unused Flash Generating Checksums Programming the clocks bit Programming the Security Bits Executing the firmware

Once started progress information and a progress bar will be displayed at the bottom of the main window. In addition the Start button will change to a cancel button. Click on the cancel button to cancel the operation. Note that if you cancel during erasing all the Flash, it may take a few seconds before the operation is cancelled. Once the operations have finished the progress information will briefly show the message Finished. The Programmed Count shown next to the progress bar will increment. This shows the total number of times the hex file has been programmed. Modifying the hex file or selecting another hex file will reset the count. Alternatively, right-clicking over the count provides a menu with the option to immediately reset the count.

3.3 MATLAB
MATLAB is a high-performance language for technical computing. It integrates computation, visualization, and programming in an easy-to-use environment where problems and solutions are expressed in familiar mathematical notation. Typical uses include Math and computation Algorithm development Data acquisition Modeling, simulation, and prototyping

Data analysis, exploration, and visualization Scientific and engineering graphics Application development, including graphical user interface building

MATLAB is an interactive system whose basic data element is an array that does not require dimensioning. This allows you to solve many technical computing problems, especially those with matrix and vector formulations, in a fraction of the time it would take to write a program in a scalar non interactive language such as C or FORTRAN. The name MATLAB stands for matrix laboratory. MATLAB was originally written to provide easy access to matrix software developed by the LINPACK and EISPACK projects. Today, MATLAB engines incorporate the LAPACK and BLAS libraries, embedding the state of the art in software for matrix computation. MATLAB has evolved over a period of years with input from many users. In university environments, it is the standard instructional tool for introductory and advanced courses in mathematics, engineering, and science. In industry, MATLAB is the tool of choice for highproductivity research, development, and analysis. MATLAB features a family of add-on application-specific solutions called toolboxes. Very important to most users of MATLAB, toolboxes allow you to learn and apply specialized technology. Toolboxes are comprehensive collections of MATLAB functions (M-files) that extend the MATLAB environment to solve particular classes of problems. Areas in which toolboxes are available include signal processing, control systems, neural networks, fuzzy logic, wavelets, simulation, and many others.

CHAPTER 4 IMAGE PROCESSING USING MATLAB


4.1 Image Processing Toolbox:
Image Processing Toolbox is a collection of functions that extend the capability of the MATLAB numeric computing environment. The toolbox supports a wide range of image processing operations, including Spatial image transformations Morphological operations Neighborhood and block operations Linear filtering and filter design Transforms Image analysis and enhancement image registration Deblurring Region of interest operations Many of the toolbox functions are MATLAB M-files, a series of MATLAB statements that implement specialized image processing algorithms. You can view the MATLAB code for these functions using the statement type function name you can extend the capabilities of Image Processing Toolbox by writing your own M-files, or by using the toolbox in combination with other toolboxes, such as Signal Processing Toolbox and Wavelet Toolbox.

4.2 Image Acquisition with Wireless Camera


What Is Image Acquisition Toolbox? Image Acquisition Toolbox is a collection of functions that extend the capability of the MATLAB numeric computing environment. The toolbox supports a wide range of image acquisition operations, including: Acquiring images through many types of image acquisition devices, from professional grade frame grabbers to USB-based Webcams Viewing a preview of the live video stream, Triggering acquisitions (includes external hardware triggers)Configuring

callback functions that execute when certain events occur, Bringing the image data into the MATLAB workspace. Many of the toolbox functions are MATLAB M-files. You can view the MATLAB code for these functions using the statement type function name. You can extend the capabilities of Image Acquisition Toolbox by writing your own M-files, or by using the toolbox in combination with other toolboxes, such as Image Processing Toolbox and Data Acquisition Toolbox. Basic Image Procedure Acquisition This section illustrates the basic steps required to create an image acquisition application by implementing a simple motion detection application. The application detects movement in a scene by performing a pixel-to-pixel comparison in pairs of incoming image frames. If nothing moves in the scene, pixel values remain the same in each frame. When something moves in the image, the application displays the pixels that have changed values. To use Image Acquistion Toolbox to acquire image data,we must perform the following steps: Step 1: Install Your Image Acquisition Device. Follow the setup instructions that come with your image acquisition device. Setup typically involves: Installing the frame grabber board in your computer Installing any software drivers required by the device. These are supplied by the device vendor. Connecting a camera to a connector on the frame grabber board. Verifying that the camera is working properly by running the application software that came with the camera and viewing a live video stream. Generic Windows image acquisition devices, such as Webcams and digital video camcorders, typically do not require the installation of a frame grabber board. You connect these devices directly to your computer via a USB or FireWire port.

After installing and configuring your image acquisition hardware, start MATLAB on your computer by double-clicking the icon on your desktop. You do not need to perform any special configuration of MATLAB to perform image acquisition. Step 2: Retrieve Hardware Information In this step, you get several pieces of information that the toolbox needs to uniquely identify the image acquisition device you want to access. You use this information when you create an image acquisition object, described in Step 3: Create a Video Input Object. Determining the Adaptor Name To determine the name of the adaptor, enter the imaqhwinfo function at the MATLAB prompt without any arguments. imaqhwinfo ans = InstalledAdaptors: {'dcam' 'winvideo'} MATLABVersion: '7.4 (R2007a)' ToolboxName: 'Image Acquisition Toolbox' ToolboxVersion: '2.1 (R2007a)' In the data returned by imaqhwinfo, the InstalledAdaptors field lists the adaptors that are available on your computer. In this example, imaqhwinfo found two adaptors available on the computer: 'dcam' and 'winvideo'. The listing on your computer might contain only one adaptor name. Select the adaptor name that provides access to your image acquisition device. Determining the Device ID To find the device ID of a particular image acquisition device, enter the imaqhwinfo function at the MATLAB prompt, specifying the name of the adaptor as the only argument. (You found the adaptor name in the first call to imaqhwinfo) In the data returned, the DeviceIDs field is a cell array containing the device IDs of all the devices accessible through the specified adaptor.

info = imaqhwinfo('dcam') info =

AdaptorDllName: [1x77 char] AdaptorDllVersion: '2.1 (R2007a)' AdaptorName: 'dcam' DeviceIDs: {[1]} DeviceInfo: [1x1 struct]

Determining the Supported Video Formats To determine which video formats an image acquisition device supports, look in the DeviceInfo field of the data returned by imaqhwinfo. The DeviceInfo field is a structure array where each structure provides information about a particular device. To view the device information for a particular device, you can use the device ID as a reference into the structure array. Alternatively, you can view the information for a particular device by calling the imaqhwinfo function, specifying the adaptor name and device ID as arguments. To get the list of the video formats supported by a device, look at SupportedFormats field in the device information structure. The SupportedFormats field is a cell array of strings where each string is the name of a video format supported by the device. For more information, see Determining Supported Video Formats.dev_info = imaqhwinfo('dcam',1) dev_info = DefaultFormat: 'F7_Y8_1024x768' DeviceFileSupported: 0 DeviceName: 'XCD-X700 1.05'

DeviceID: 1 ObjectConstructor: 'videoinput('dcam', 1)' SupportedFormats: {'F7_Y8_1024x768' 'Y8_1024x768'} Step 3: Create a Video Input Object In this step you create the video input object that the toolbox uses to represent the connection between MATLAB and an image acquisition device. Using the properties of a video input object, you can control many aspects of the image acquisition process. To create a video input object, use the videoinput function at the MATLAB prompt. The DeviceInfo structure returned by the imaqhwinfo function contains the default videoinput function syntax for a device in the Object Constructor field. The following example creates a video input object for the DCAM adaptor. Substitute the adaptor name of the image acquisition device available on your system. vid = videoinput('dcam',1,'Y8_1024x768') The videoinput function accepts three arguments: the adaptor name, device ID, and video format. You retrieved this information in step 2. The adaptor name is the only required argument; the videoinput function can use defaults for the device ID and video format. To determine the default video format, look at the DefaultFormat field in the device information structure. See Determining the Supported Video Formats for more information.Instead of specifying the video format, you can optionally specify the name of a device configuration file, also known as a camera file. Device configuration files are typically supplied by frame grabber vendors. These files contain all the required configuration settings to use a particular camera with the device. Viewing the Video Input Object Summary To view a summary of the video input object you just created, enter the variable name (vid) at the MATLAB command prompt. The summary information displayed shows many of the characteristics of the object, such as the number of frames that will be captured with each trigger, the trigger type, and the current state of the object. You can use video input object properties to control many of these characteristics. See Step 5: Configure Object Properties (Optional) for more information.

vid Summary of Video Input Object Using 'XCD-X700 1.05'. Acquisition Source(s): input1 is available. Acquisition Parameters: 'input1' is the current selected source. 10 frames per trigger using the selected source. 'Y8_1024x768' video data to be logged upon START. Grabbing first of every 1 frame(s). Log data to 'memory' on trigger. Trigger Parameters: 1 'immediate' trigger(s) on START. Status: Waiting for START. 0 frames acquired since starting. 0 frames available for GETDATA. Step 4: Preview the Video Stream (Optional) After you create the video input object, MATLAB is able to access the image acquisition device and is ready to acquire data. However, before you begin, you might want to see a preview of the video stream to make sure that the image is satisfactory. For example, you might want to change the position of the camera, change the lighting, correct the focus, or make some other change to your image acquisition setup. To preview the video stream in this example, enter the preview function at the MATLAB prompt, specifying the video input object created in step 3 as an argument. preview(vid)

The preview function opens a Video Preview figure window on your screen containing the live video stream. To stop the stream of live video, you can call the stoppreview function. To restart the preview stream, call preview again on the same video input object. While a preview window is open, the video input object sets the value of the Previewing property to 'on'. If you change characteristics of the image by setting image acquisition object properties, the image displayed in the preview window reflects the change. To close the Video Preview window, use the closepreview function, specifying the video input object as an argument. closepreview(vid) Calling closepreview without any arguments closes all open Video Preview windows. Step 5: Configure Object Properties (Optional) After creating the video input object and previewing the video stream, you might want to modify characteristics of the image or other aspects of the acquisition process. You accomplish this by setting the values of image acquisition object properties. This section

Describes the types of image acquisition objects used by the toolbox Describes how to view all the properties supported by these objects, with their current values Describes how to set the values of object properties

Types of Image Acquisition Objects The toolbox uses two types of objects to represent the connection with an image acquisition device:

Video input objects Video source objects

A video input object represents the connection between MATLAB and a video acquisition device at a high level. The properties supported by the video input object are the same for every type of device. You created a video input object using the videoinput function in step 3. When you create a video input object, the toolbox automatically creates one or more video source objects associated with the video input object. Each video source object represents a collection of one or more physical data sources that are treated as a single entity. The number of video source objects the toolbox creates depends on the device and the video format you specify. At any one time, only one of the video source objects, called the selected source, can be active. This is the source used for acquisition. Viewing Object Properties To view a complete list of all the properties supported by a video input object or a video source object, use the get function. To list the properties of the video input object created in step 3, enter this code at the MATLAB prompt. get(vid) The get function lists all the properties of the object with their current values.

General Settings: DeviceID = 1 DiskLogger = [] DiskLoggerFrameCount = 0 EventLog = [1x0 struct] FrameGrabInterval = 1 FramesAcquired = 0 FramesAvailable = 0 FramesPerTrigger = 10 Logging = off LoggingMode = memory

Name = Y8_1024x768-dcam-1 NumberOfBands = 1 Previewing = on ReturnedColorSpace = grayscale ROIPosition = [0 0 1024 768] Running = off Tag = Timeout = 10 Type = videoinput UserData = [] VideoFormat = Y8_1024x768 VideoResolution = [1024 768] To view the properties of the currently selected video source object associated with this video input object, use the getselectedsource function in conjunction with the get function. The
getselectedsource

function returns the currently active video source. To list the properties of

the currently selected video source object associated with the video input object created in step 3, enter this code at the MATLAB prompt. get(getselectedsource(vid)) The get function lists all the properties of the object with their current values. General Settings: Parent = [1x1 videoinput] Selected = on SourceName = input1 Tag = Type = videosource

Device Specific Properties: FrameRate = 15 Gain = 2048 Shutter = 2715

Setting Object Properties To set the value of a video input object property or a video source object property, you can use the set function or you can reference the object property as you would a field in a structure, using dot notation. Some properties are read only; you cannot set their values. These properties typically provide information about the state of the object. Other properties become read only when the object is running. To view a list of all the properties you can set, use the set function, specifying the object as the only argument. To implement continuous image acquisition, the example sets the Trigger Repeat property to Inf. To set this property using the set function, enter this code at the MATLAB prompt. set (vid,'TriggerRepeat',Inf);To help the application keep up with the incoming video stream while processing data, the example sets the FrameGrabInterval property to 5. This specifies that the object acquire every fifth frame in the video stream. (You might need to experiment with the value of the FrameGrabInterval property to find a value that provides the best response with your image acquisition setup.) This example shows how you can set the value of an object property by referencing the property as you would reference a field in a MATLAB structure. vid.FrameGrabInterval = 5; To set the value of a video source object property, you must first use the getselectedsource function to retrieve the object.

(You can also get the selected source by searching the video input object Source property for the video source object that has the Selected property set to 'on'.) To illustrate, the example assigns a value to the Tag property. vid_src = getselectedsource(vid); set(vid_src,'Tag','motion detection setup'); Step6: Acquire Image Data After you create the video input object and configure its properties, you can acquire data. This is typically the core of any image acquisition application, and it involves these steps: Starting the video input object You start an object by calling the start function. Starting an object prepares the object for data acquisition. For example, starting an object locks the values of certain object properties (they become read only). Starting an object does not initiate the acquiring of image frames, however. The initiation of data logging depends on the execution of a trigger.The following example calls the start function to start the video input object. Objects stop when they have acquired the requested number of frames. Because the example specifies a continuous acquisition, you must call the stop function to stop the object. Triggering the acquisition To acquire data, a video input object must execute a trigger. Triggers can occur in several ways, depending on how the TriggerType property is configured. For example, if you specify an immediate trigger, the object executes a trigger automatically, immediately after it starts. If you specify a manual trigger, the object waits for a call to the trigger function before it initiates data acquisition. For more information, see Acquiring Image Data.In the example, because the TriggerType property is set to 'immediate' (the default) and the TriggerRepeat property is set to Inf, the object automatically begins executing triggers and acquiring frames of data, continuously. Bringing data into the MATLAB workspace The toolbox stores acquired data in a memory buffer, a disk file, or both, depending on the value of the video input object LoggingMode property. To work with this data, you must bring it into the MATLAB workspace. To bring

multiple frames into the workspace, use the getdata function. Once the data is in the MATLAB workspace, you can manipulate it as you would any other data.

CHAPTER 5 SOURCE CODE


5.1 Microcontroller code for BOT control
org 00h te equ p3.2 clr te mov a,#00h mov tmod,#20h mov th1,#-3 mov scon,#50h setb te setb tr1 clr ri next: jnb ri,next mov a,sbuf mov p1,a end

5.2 MATLAB program for object detection:


clear all clc vid=videoinput('winvideo',1,'YUY2_640x480'); preview(vid) set(vid,'FramesPerTrigger',1); pause(10); rgb_image=getsnapshot(vid);

[a b c]=size('rgb_image'); y=a; x=b; x1=x/2-60; x2=x/2+60; y1=y/2-40; y2=y/2+40; while(1) rgb_image=getsnapshot(vid); flushdata(vid); rbar=0; cbar=0; e=0; z=wavread('Ipl_Trumpet.wav'); load handel Fs=48000; p = audioplayer(z, Fs); fR=rgb_image(:,:,1); fG=rgb_image(:,:,2); fB=rgb_image(:,:,3); I=((fR>=55)&(fG<=125)&(fB<=165)&(fR<=75)&(fG>=115)&(fB>=155)); se=strel('disk',10); B=imopen(I,se); final=imclose(B,se); [L,n]=bwlabel(final); for k=1:n [r,c]=find(L==k); rbar=mean(r); cbar=mean(c); e=(((rbar>=x1)*2*2*2)+((rbar<=x2)*2*2)+((cbar>=y1)*2)+(cbar<=y2)) end

switch(e) case 5 play(p, [1 (get(p, 'SampleRate') * 3)]); pause(4); case 6 play(p, [1 (get(p, 'SampleRate') * 3)]); pause(4); case 7 play(p, [1 (get(p, 'SampleRate') * 3)]); pause(4); case 9 play(p, [1 (get(p, 'SampleRate') * 3)]); pause(4); case 10 play(p, [1 (get(p, 'SampleRate') * 3)]); pause(4); case 11 play(p, [1 (get(p, 'SampleRate') * 3)]); pause(4); case 13 play(p, [1 (get(p, 'SampleRate') * 3)]); pause(4); case 14 play(p, [1 (get(p, 'SampleRate') * 3)]); pause(4); case 15 play(p, [1 (get(p, 'SampleRate') * 3)]); pause(4); otherwise disp('Not detected'); end

end

CHAPTER 6 CONCLUSIONS AND FUTURE SCOPE


6.1 CONCLUSION:
The project WIRELESS SPY ROBOT WITH OBJECT DETECTION has been successfully designed and tested. Integrating features of all the hardware components used have developed it. Presence of every module has been reasoned out and placed carefully thus contributing to the best working of the unit. Secondly, using highly advanced ICs and with the help of growing technology the project has been successfully implemented.

6.2 Future work:


Inspired by colonies of insects such as ants and bees, researchers are modeling the behavior of swarms of thousands of tiny robots which together perform a useful task, such as finding something hidden, cleaning, or spying. Each robot is quite simple, but the emergent behavior of the swarm is more complex. The whole set of robots can be considered as one single distributed system, in the same way an ant colony can be considered a super organism, exhibiting swarm intelligence. The largest swarms so far created include the iRobot swarm, the SRI/MobileRobots CentiBots project and the Open-source Micro-robotic Project swarm, which are being used to research collective behaviors.[65][66] Swarms are also more resistant to failure. Whereas one large robot may fail and ruin a mission, a swarm can continue even if several robots fail. This could make them attractive for space exploration missions, where failure can be extremely costly.

BIBLIOGRAPHY
TEXT BOOKS:

The 8051 Microcontroller and Embedded Systems ,2000 By Muhammad Ali Mazidi and Janice Gillispie Mazidi Fundamentals of Embedded Software By Daniel W. Lewis The 8051/8052 Microcontroller: Architecture, Assembly Language, And Hardware Interfacing By Craig Steiner Electronics For You Magazine MATLAB Help By Mathworks

WEB SITES: 1. www.alldatasheets.com 2. www.8051 projects.info/projects.asp 3. www.wikipedia.com 4. www.project.spogels.com

5. www.projectfreaks.com

You might also like