car security using GSM
-
Upload
gopalkrishnan-nadar -
Category
Documents
-
view
155 -
download
6
description
Transcript of car security using GSM
Table of contents
Sr. No. Topic Page. No.
1 Introduction 3
1.1 Introduction to project 4
2 System study and analysis 6
2.1 Problem definition 7
2.2 Feasibility 7
2.3 System analysis 8
2.4 Current system 8
2.5 Proposed system 8
3 System development 9
3.1 Gantt chart 10
3.2 Event table 11
3.3 Use Case diagram 12
3.4 Sequence diagram / Collaboration diagram 13
3.5 Activity diagram 14
3.6 Block Diagram 15
3.7 Circuit diagram 18
3.8 Menu tree 20
4 Component list 21
5 PCB hardware designing 23
6 System testing and conclusion 41
7 Coding conventions
8 Source code 44
9 Screen layout with test data and test results 58
10 Report layouts 60
11 References/ bibliography/websites used 64
Annexure 66
I Application of the project 67
II Future scope 67
III List of abbreviations 67
IV Soft copy of the project on CD 69
1
1.1 Introduction to project
The main scope of this project is to stop the engine of an automobile
automatically whenentered password is incorrect and the status of the vehicle
regarding the ignition is also sent to the user. The project includes a GSM
modem, Microcontroller, voltage regulator, Keypad, Buzzer and the 9v battery
to power up this module. When someone tries to steal the car then
microcontroller detects and orders GSM Modem to send message regarding
the theft to the owner vehicle it automatically switches OFF the Ignition the
microcontroller can also receive message from the GSM modem for switching
ON the vehicle and stopping the vehicle. The accident alert sensor is used to
detect the accident and if it is detected then the microcontroller sends a
message through the GSM modem to the relation of the owner of the vehicle.
Global system for mobile communication (GSM) is a globally accepted
standard for digital cellular communication. GSM is the name of a
standardization group established in 1982 to create a common European
mobile telephone standard that would formulate specifications for a pan-
European mobile cellular radio system operating at 900 MHz It is estimated
that many countries outside of Europe will join the GSM partnership.
With this system we can easily identify vehicle thefts. GSM is used for
receiving and sending messages according to the software program written to
perform the task.
GSM is used by over 1.5 billion people across more than 212 countries
and territories. Its ubiquity enables international roaming arrangements
between mobile network operators, providing subscribers the use of their
phones in many parts of the world. GSM differs from its predecessor
technologies in that both signaling and speech channels are digital and thus
GSM is considered a second generation (2G) mobile phone system.
This also facilitates the wide-spread implementation of data
communication applications into the system. GSM also pioneered low-cost
implementation of the short message service(SMS), also called text
messaging,which has since been supported on other mobile phone standards
3
as well. The standard includes a worldwide emergency telephone number
feature.
GSM uses several cryptographic algorithms for security. Although
security issues remain for GSM newer standards and algorithms may address
this. New attacks are growing in the wild which take advantage of poor
security implementations, architecture and development for smart phone
applications.
The basic requirement which we have thoroughly considered here are:-
Product must be safe to use.
It must be easy to handle.
All operation must be within user limit.
Accessibility for assembly maintenance and service.
Safety: by providing electrical grounding, opening precaution, sharp
corners and terminal heat.
4
SYSTEM STUDY AND ANALYSIS
2.1 Problem Definition
These days’ car theft cases are higher than ever, give your car an
excellent protection with the only reliable anti-theft device. Car central locking
5
system ensures the best guarantee to protect your car from different kinds of
theft cases. It is a car security device that offers excellent protection to your
car.
A car with central locking security system helps the user to lock and
unlock doors at the press of a button. Mainly two types of central locking
systems are used in Auto industry - Automatic central locking system and
Manual central locking system that ensures smoother and secured operation.
Again this system could not prove to provide complete security and
accessibility of the vehicle in case of theft. So a more developed system
makes use of an embedded system based on GSM technology. The designed
& developed system is installed in the vehicle. The main concept in this
design is introducing the mobile communications into the embedded system.
2.2 Feasibility
The project is technically feasible as it requires very limited hardware
configuration. It is completely made in C programming and using Keil compiler
and thus easy for further developments and integration.
The project is economically feasible, as all the technology used is open
source. Also software like Keil Compiler and Flash Magic are available freely
on internet. Also the hardware and software needed are available easily and
cheaply.
2.3 System Analysis
2.3.1 Understanding client requirements
6
Security is a basic need in today’s life so securing your car is
important aspect. A client requires a system that would ensure security of
their car. Also there should be some additional features to stop and start the
car using their mobiles.
2.3.2 System objectives
To Provide Security to the vehicle
To alert the user through GSM when the vehicle is accessed by an unauthenticated Person
Car security system module(using GSM modem, accident alert sensors)
Stop or Start the vehicle through message
Accident Alert to multiple persons using GSM
2.4 Current system
Presently the system (car) does not exhibit any car antitheft module that would ensure the security of the car. Also the system does not have any additional features for starting and stopping the car.
2.5 Proposed system
The system exhibits a subsystem basically an antitheft system which ensures car security using GSM modem. It also ensures accident alert messaging concurrently to the required clients. Additional features for start and stop the car by using mobile computing.
7
3.2 Event table
Events Results
1.When correct password is entered through the system.
Client receives acknowledgment message and the client is authenticated user.
2. When incorrect password is entered through the system.
Client receives acknowledgment message and the client is unauthenticated user.
The buzzer gets ON.
3. When the client sends the correct password through mobile.
The ignition key of the vehicle is made ON.
4. When the client sends the correct password followed by “STOP” through mobile.
The ignition key of the vehicle is made OFF.
5. When the client sends the incorrect password through mobile.
The ignition key of the vehicle will not be made ON.
The buzzer gets ON.
6. When the meets an accident. The client receives an alert message that driver of the vehicle has met with an accident.
10
3.3 Use case diagram
11
GSM SystemAlert
clientfromunauthenticated user
through SMSStart the
vehicle through
SMS
Stop the vehicle through
SMSSend SMS
of Accident
alert
Authenticate
client
Other perso
n
3.4 Sequence diagram
12
Authenticated user
GSM System
networkOther personSend SMS with password
ACK of SMS “password is correct” Send SMS for accident
alert
ACK of SMS “SMS received”Send SMS for STOP the
vehicle
ACK of SMS “Ignition off”
Send SMS for START the vehicle
ACK of SMS “Ignition on”
3.5 Activity diagram
13
ENTER PASSWORD
IFPASSWORD=CORRE
CT
AUTHENTICATE CLIENT
UNAUTHENTICATE CLIENT AND BUZZER GETS ON
IF PASSWOR
D ENTERED THROUGH MOBILE=CORRECT
IGNITION KEY IS NOT MADE ON AND THE BUZZER GETS
ON
IGNITION KEY IS MADE ON
IF ACCIDE
NT DETEC
TED
ALERT MESSAGE IS SENT TO OTHER PERSON
NO
NO
YES
YES
3.6 Block diagram
14
MICROCONTR-OLLER
P89V51RD2
KEYPAD(4x3)
LCD(16x2)
TTL to RS232
CONVERTER
GSMMODEM
BUZZER
ACCIDENTALERT
SENSOR
Block diagram description
In this project we will place this vehicle tracking system in vehicle. The
Block diagram consists of a GPS modem, a GSM modem, a Microcontroller,
an ignition switch, accident alert sensor, LCD Display, Keypad, Buzzer and
power supply. These hardware components will be discussed briefly as
follows:
A GSM modem is used to send the information regarding the status of
the ignition to the owner of the vehicle in the form of messages the number of
the owner is fed into the program of the microcontroller. It can also receive
messages that are nothing but the commands like switch Off the Ignition
control of the engine.
The GSM modem is nothing but the mobile the difference between the
mobile and GSM Modem is that it has a serial connectivity through which
microcontroller can communicate with the GSM Modem.
The GSM Modem communicates with the microcontroller serially at a
baud rate of 9600 bps. It receives the AT Commands from the microcontroller
and takes the necessary action depending upon the command received from
the microcontroller. The AT Commands are used for sending the SMS and
reading the SMS.
The Microcontroller is the most important part of this project. The
microcontroller used in the project is P89V51RD2. The total controlling action
will be done through this microcontroller. The Microcontroller receives the
data from the keypad and GSM Modem. It also authenticates the user
whether by checking the password entered by the user, if correct password is
entered then it allows the user to access the vehicle otherwise the ignition
switch is made OFF. The microcontroller can also switch OFF the Ignition
switch if a message is received to switch OFF the ignition part of the vehicle.
An Ignition switch plays the key role in the vehicle, for moving. If it is
in off condition, the vehicle does not move. In this project, for completely
15
stopping the vehicle we are just switched-off the ignition switch with the help
of the micro controller.
A LCD display is used at the output section to display the status of the
GSM and GPS. The LCD used in the project is 16X2. The maximum power
supply required to operate the hardware circuitry is 5V and 12V DC voltage.
A Buzzer is used to generate alert sound during the invalid access of
the vehicle
The Keypad used in the project is 4x3 matrix keypad. It is used to
enter password for switching on the Ignition of the vehicle. The ‘*’ is used for
cancelling the entered number and the ‘#’ key is used as the Enter key. After
entering the complete password the # key should be pressed.
16
Circuit diagram description
In this project, the GSM and GPS are connected to the micro controller.
The GSM is used for sending, receiving and reading the messages. The GPS
is used for getting the location of the vehicle which sends the location name in
the form of coordinates ie., latitudes, longitudes and altitudes. These GSM
and GPS are both meant for serial communication. Both the GSM and GPS
are RS232 voltage level compatible but the Micro controller is TTL
compatible.
To match the voltage levels we using the MAX-232 line driver to
convert the RS voltage level to TTL voltage levels and vice versa. The
controller is having one serial port. It is impossible to interface to two serial
communication devices and access both at a time. So that, through Latch
these devices are connected to the MAX. The latch acts to store the
information temporarily. For accessing these devices, one is kept in sleep
mode and the other activated and vice versa.
The ignition switch is used for starting/ stopping the engine. This is
operated through software, which is connected to one of the port pin. The
LCD display will acts as an output source in this project that will be helpful to
display the location name on this display.
The RS, R/W. and EN pins are the control pins which are used for
controlling purpose. The RS pin is used to select either data mode or
command mode. The R/W is used to indicate that the LCD will acts as a
either read or write mode. The EN pin is used to enable the data. D0-D7 are
data pins used to get the data from the micro controller.
To operate the LCD display, which requires maximum of +5V DC
power supply. The power supply is used drive all the hardware components,
which are work at the maximum voltage of +5V DC. The 230V AC is a power
supply which is used for operate our general home appliance but the
hardware component which requires just +5V DC voltage. A step-down
transformer is used to step down the 230V AC to the required AC voltage and
thereafter it is meant for filtering with the help of a capacitor. Thereby, the
circuit is meant for the regulation to get the constant +5V DC.
18
3.8 Menu tree
19
ENTER THE
PASSWORD
CORRECT PASSWO
RD
INCORRECT
PASSWORD
AUTHENTICATIO
N
IGNITION ON/OFF
ACCIDENT ALERT CONTRO
L
IGNITION START
IGNITION STOP
ALERT MESSAGE SEND
TO OTHER
PERSON
BUZZER GETS ON
PERSON AUNTHENTICATE
D
PERSON UNAUNTHENTICATE
DINCORRE
CT PASSWO
RD
BUZZER GETS ON
COMPONENTS COST
GSM modem 2500/-
Microcontroller P89V51RD2 200/-
Crystal , Buzzer 10/-,10/-
LCD 16*2 150/-
Terminal block[32] 150/-
Regulator IC [1] 8/-
Relimate connector (16*1),(8*1) 35/-, 18/-
Serial cable 40/-
Wheels [60*4] 240/-
LED[4] 4/-
Miscellaneous 200/-
PCB development 800/-
MAX 232 15/-
IC 7805 10/-
Studs and screws 50/-
SMPS(12V) 180/-
Acrylic sheet 100/-
21
Fabrication
Printed circuit boards, or PCBs, form the core of electronic equipment
domestic and industrial. Some of the areas where PCBs are intensively used
are computers, process control, telecommunications and instrumentation.
Manufacturing
The manufacturing process consists of two methods; print and etch, and print,
plate and etch. The single sided PCBs are usually made using the print and
etch method. The double sided plate through hole (PTH) boards are made by
the print plate and etch method. The production of multi layer boards uses
both the methods. The inner layers are printed and etch while the outer layers
are produced by print, plate and etch after pressing the inner layers.
Penalization
Here the schematic transformed in to the working positive/negative films. The
circuit is repeated conveniently to accommodate economically as many
circuits as possible in a panel, which can be operated in every sequence of
subsequent steps in the PCB process. This is called penalization. For the
PTH boards, the next operation is drilling.
Drilling
PCB drilling is a state of the art operation. Very small holes are drilled with
high speed CNC drilling machines, giving a wall finish with less or no smear or
epoxy, required for void free through hole plating.
Plating
The heart of the PCB manufacturing process. The holes drilled in the board
are treated both mechanically and chemically before depositing the copper by
the electro less copper platting process.
23
Etching
Once a multiplayer board is drilled and electro less copper deposited, the
image available in the form of a film is transferred on to the outside by photo
printing using a dry film printing process. The boards are then electrolytic
plated on to the circuit pattern with copper and tin. The tin-plated deposit
serves an etch resist when copper in the unwanted area is removed by the
conveyor‘s spray etching machines with chemical etch ants. The etching
machines are attached to an automatic dosing equipment, which analyses
and controls etch ants concentrations
Design Rule
Rules followed while selecting artwork symbol are,
1. Minimum spacing between conductor and pad should be 0 .35 mm in 1:1
scale.
2. Minimum spacing between parallel conductors should be 0.4 mm in 1:1
scale.
3. The area of non-PTH solder pad should not be less than (5 sq.mm.).
4. The width of current carrying conductors should be determined for
maximum temperature, rise of 20 ْ�C.
General art work rules:
1. When there is higher conductor density assumes the conductors parallel to
any one of the edge of the board
2. When conductors have to be placed in other direction preference should be
given to the 45 � direction or to the 30 � / 60 � direction.
3. Whenever there is sufficient space available the conductors can be run in
any direction so as to achieve sorted possible interconnection.
4. As far as possible, design and the conductor on the solder pad. Conductor
forming sharp internal angles must be avoided.
24
5. When a member of conductor has to run between two pads the conductor
lines are run perpendicular w.r.to the center-to-center line of pair of pads.
6. Equally distributed spacing is to be provided when three or more
conductors run along a direction and / or between two pads.
7. Minimum spacing is provided when three or more lines run along a
direction and / or between two pads.
8. The diameter of solder pad should be approximately 8 times the drilled hole
diameter.
25
Testing
Code Test:
1. The first step was to carry out the visual inspection of the PCB. This
means to check any short or cut in the tracks on PCB. Find any missing pads
if any where found on it. We did mechanical repair of the same.
2. The second step involved the continuity testing. This means to check that
the current is flowing through all the tracks.
3. Thirdly testing solder of socket crystal & reset circuitry.
Test Result :
[1] Give VCC and GND to microcontroller.
[2] Check voltage between 18 & 19 pins (XTAL 1, XTAL 2). It should be 2.5.
[3] Check available voltage pin 3.0-1.4. If all these voltage are coming then
the microcontroller is working properly.
[4] Check VCC and GND of LCD & write a RTN for display any message on
LCD if the message does not come check the supply again also check the
data lines for any opens or short.
µC Testing:
Initially the µC is given the power supply. All the respective ports and port pins
were checked when the signals were proper, it means that all the µC signal
were correct. If these signals are not proper, we can check the signals from
VCC ground, reset, circuit respectively. Even after the above test if the signals
are not proper it means that the purchased CPU is not functioning properly &
must be thrown.
1. We can put latch and memory in their respective sockets we wrote a
small program for the same then checked for numbers on port pin.
27
2. For the transmission of data stored in memory of µC. Various
parameters of communication port such as parity, data type baud rate
were checked before the transmission.
3. Accepting the data next step was to check that all the devices that are
connected and the program that was written to accept the data from
the µC is successful or not. ff not then the further modifications were
done in the program.
Conclusions
The “Car Security System using GSM” has been developed to the best of
knowledge and information made available to us. User friendliness has been
accented in this mini-project so that the user will be satisfied according to his
requirements.
With the knowledge of new techniques in ‘Electronics’ we are able to
make our life more comfortable. One such application of electronics is used in
“Car Security System using GSM”. The same circuit finds its use in many
more applications. By this Project we can track and block the vehicle.
This project provides a cheap and simple way to communicate with
user. We enjoyed every moment of working of this project and feel proud to hit
the Bulls Eye. Thus, we have implemented our engineering learning through
the project of “Car Security System using GSM”.
28
#include <reg51.h>#include <stdio.h>#include <string.h>#include "lcd.h"#include "serial.h"
sbit col1=P1^4;sbit col2=P1^5;sbit col3=P1^6;sbit row1=P1^0;sbit row2=P1^1;sbit row3=P1^2;sbit row4=P1^3;
sbit buzzer = P0^0;sbitignition_switch=P0^1;
/*--------------------Global declarations--------------------*/unsigned char code sto_password[4]="1234";unsigned char password[4]; //array for storing the password
unsigned char keycode; //for storing the key pressed codeunsigned char lcd_pos=0;bitpassword_complete=0; //flag for indicating that the key # is pressed/*------------------------------------------------------------*/
#define CR 0x0D
//definitations of the return value of the comparison#define UNKNOWN 0#define CMD_OK 1#define CMD_ERROR 2#define SEND_SUCCESS 3#define SEND_FAIL 4#define MSG_RECEIVED 5bitflag_cmd=0; //for indicating that the command is received from the modem//bit flagint=0;//for deciding the start of the command by detecting the presence of OA in the fisrt timebitrec_flag=0; //deciding whether command =0 or message=1 for the interrupt for storing thebitsend_start=0;bitmsg_start=0;//for indicating the start of the actual message from the received messagebitmsg_end=0; //for indicating the function that the entire message is received
unsigned char count_cr=0;unsigned char count_lf=0;
30
unsigned char rec_string[20]; //for storing the received command stringunsigned char len=0; //for storing the count value of the received strinngunsigned char rec_msg[35];unsigned char len_msg=0;unsigned char start_msg=0;unsigned char process[10];code unsigned char ok[3]="OK";
//for storing the message to be sentunsigned char code correct_msg[72] = "The password entered is correct and the ignition of vehicle is made ON\r\0";unsigned char code incorrect_msg[72] = "The password entered is incorrect the ignition of vehicle is made OFF\r\0";unsigned char code sms_correct_msg[85] = "The password sent through message is correct and the ignition of vehicle is made ON\r\0";unsigned char code sms_incorrect_msg[88] = "The password sent through message is incorrect and the ignition of vehicle is made OFF\r\0";unsigned char code stop_msg[] = "The ignition of the vehicle is stopped due to the stop command from the user";
voidsend_message(unsigned char msg_type);
/*---fucntion for generating delay in milli seconds----*//*input arguments : delay required in msec*/voiddelay_ms(unsigned intmsec){
unsignedint i;TMOD|=0X01;for(i=0;i<msec;i++){
TH0=0XFC;TL0=0X77;TR0=1;while(!TF0);TR0=0;TF0=0;
}}voidclear_flag(void){
len_msg=0;len=0;flag_cmd=0;count_cr=0;
31
count_lf=0;send_start=0;msg_start=0;start_msg=0;rec_flag=0;msg_end=0;
}//interrupt subroutine for serial receptionvoidreceive_data(void) interrupt 4 using 2{
if(RI){
RI=0;if(rec_flag==0&&send_start==0){
rec_string[len]=SBUF;if(rec_string[len]==0x0d)count_cr++;if(rec_string[len]==0x0a)count_lf++;if(count_cr==2&&count_lf==2)flag_cmd=1;len++;
}if(send_start==1){
rec_string[len]=SBUF;if(rec_string[len]==0X20)flag_cmd=1;len++;
}if(rec_flag==1){
rec_msg[len_msg]=SBUF;if(rec_msg[len_msg]==0X0A)start_msg++;if(msg_start){
if(rec_msg[len_msg]==CR){
rec_msg[len_msg]='\0';msg_end=1;
}elselen_msg++;
}
32
if(start_msg==2){
msg_start=1;}
}}
}
voidbuzzer_on(void){
unsigned char i;for(i=0;i<10;i++){
buzzer=0;delay_ms(250);buzzer=1;delay_ms(250);
}}/*-----------------------------------------------------------------function for comparing the received message with that of the password---------------------------------------------------------------------*/voidprocess_message(void){
if(!(strncmp(rec_msg,"1234 STOP",9))){
lclrscr();ignition_switch=0;lprintf(" Stop Vehicle ");gotoxy(2,1);lprintf(" Cmd Received ");delay_ms(1500);send_message(5);buzzer_on();
}
else if(!(strncmp(rec_msg,sto_password,4))){
lclrscr();ignition_switch=1;lprintf("Password Correct");delay_ms(1500);send_message(3);
}
else
33
{lclrscr();ignition_switch=0;lprintf("Password Incorrect");delay_ms(1500);send_message(4);buzzer_on();
}}voidread_message(unsigned char msg_id){
IE=0X00;rec_flag=1;send_string("AT+CMGR=");ser_tx(msg_id);ser_tx(CR);IE=0X90;while(!msg_end);IE=0x00;clear_flag();lprintf(rec_msg);delay(1000);IE=0x90;process_message();
}/*-----------------------------------------------------------------function for comparing the received command with that of the saved oneReturn value: the result status i.e. OK, ERROR,---------------------------------------------------------------------*/unsigned char process_data(void){
unsigned char i=0,j=0;while(flag_cmd==0);len=0;flag_cmd=0;count_cr=0;count_lf=0;
/*for removing the 0X0D AND 0X0A in the message and storing it in buffer*/
while(rec_string[i++]!= 0x0A);doprocess[j++]=rec_string[i++];while(rec_string[i]!=0x0D);process[j]='\0';//now comparing with the messagesif(!(strcmp(process,"OK")))return(CMD_OK);
34
else if(!(strcmp(process,"ERROR")))return(CMD_ERROR);
else if(!(strncmp(process,"+CMGSXXXXX",5)))return(SEND_SUCCESS);else if(!(strncmp(process,"+CMS:XXXXXXXX",4)))return(SEND_FAIL);
else if (!(strncmp(process,"+CMTI:XXXXXX",5)))return(MSG_RECEIVED);
elsereturn(UNKNOWN);
}
voidsend_message(unsigned char msg_type){
unsigned char i=0,j=0;unsigned char result;serial_init(9600);EA=1;ES=1;lclrscr();clear_flag();lprintf("Check Connection");gotoxy(2,1);send_string("AT\r");result=process_data();
switch(result){
case CMD_OK: lprintf("Modem connected"); break;case CMD_ERROR: lprintf("Error command"); break;
}delay_ms(500);lclrscr();lprintf("Check Network");send_string("AT+CREG=1\r");result=process_data();gotoxy(2,1);switch(result){
case CMD_OK: lprintf("NETWORK REGISTER"); break;case CMD_ERROR: lprintf("Error command"); break;
}delay_ms(500);lclrscr();lprintf("Sel. Text Mode");send_string("AT+CMGF=1\r");result=process_data();gotoxy(2,1);switch(result){
case CMD_OK: lprintf("TEXT MODE"); break;
35
case CMD_ERROR: lprintf("Error command"); break;}delay_ms(500);lclrscr();lprintf("Sending Message");send_start=1;send_string("AT+CMGS=\"+919769866207\"\r");while(flag_cmd==0);send_start=0;len=0;flag_cmd=0;count_cr=0;count_lf=0;delay(200);
/*for removing the 0X0D AND 0X0A in the message and storing it in buffer*/
if(msg_type==1){
send_string(correct_msg);ser_tx(0x1a);
}else if(msg_type==2){
send_string(incorrect_msg);ser_tx(0x1a);
}else if(msg_type==3){
send_string(sms_correct_msg);ser_tx(0x1a);
}else if(msg_type==4){
send_string(sms_incorrect_msg);ser_tx(0x1a);
}else if(msg_type==5){
send_string(stop_msg);ser_tx(0x1a);
}else if(msg_type==6){
}
result=process_data();gotoxy(2,1);switch(result)
36
{case CMD_ERROR: lprintf("Error command"); break;case SEND_SUCCESS: lprintf("Message Sent"); break;case SEND_FAIL : lprintf("Msg. Sending Fail"); break;
}clear_flag();delay_ms(500);
}
unsigned char keypad(void){
//scanning the first rowrow1=row2=row3=row4=1;row1=0;if(col1==0){
delay_ms(32);if(col1==0){
while(!col1);return(1);
}}if(col2==0){
delay_ms(32);if(col2==0){
while(!col2);return(2);
}}if(col3==0){
delay_ms(32);if(col3==0){
while(!col3);return(3);
}}//scanning the second rowrow1=row2=row3=row4=1;row2=0;if(col1==0){
delay_ms(32);if(col1==0){
37
while(!col1);return(4);
}}if(col2==0){
delay_ms(32);if(col2==0){
while(!col2);return(5);
}}if(col3==0){
delay_ms(32);if(col3==0){
while(!col3);return(6);
}}//scanning the third rowrow1=row2=row3=row4=1;row3=0;if(col1==0){
delay_ms(32);if(col1==0){
while(!col1);return(7);
}}if(col2==0){
delay_ms(32);if(col2==0){
while(!col2);return(8);
}}if(col3==0){
delay_ms(32);if(col3==0){
while(!col3);return(9);
38
}}//scanning the fourth rowrow1=row2=row3=row4=1;row4=0;if(col1==0){
delay_ms(32);if(col1==0){
while(!col1);return('*');
}}if(col2==0){
delay_ms(32);if(col2==0){
while(!col2);return(0);
}}if(col3==0){
delay_ms(32);if(col3==0){
while(!col3);return('#');
}}return('$');
}
voidlcd_keypad(unsigned char keycode){
if(keycode=='#')password_complete=1;
else if(keycode<=9){
if(lcd_pos<4){
password[lcd_pos++]=keycode+'0';gotoxy(2,lcd_pos);lcd_data((password[lcd_pos-1]));
}}else if(keycode=='*')
39
{lcd_pos--;gotoxy(2,(lcd_pos+1));lcd_data(' ');gotoxy(2,(lcd_pos+1));
}}//function for checking the entered passwordvoidpassword_check(void){
unsigned char i;for(i=0;i<4;i++){
if(password[i]==sto_password[i]);else
break;}if(i==4){
lclrscr();lprintf("Password Correct");delay_ms(1500);ignition_switch=1;send_message(1);
}else{
lclrscr();lprintf("Password Incorrect");delay_ms(1500);ignition_switch=0;send_message(2);buzzer_on();
}}
void main(void){
unsigned char result;P1=0xff;ignition_switch=0;buzzer=1;lcd_init();serial_init(9600);EA=1; ES=1;lprintf("VEHICLE SECURITY");gotoxy(2,1);
40
lprintf("SYSTEM USING GSM");delay_ms(1500);lclrscr();lprintf("Project Done By:");gotoxy(2,1);lprintf("****************");delay_ms(1500);lclrscr();lprintf("1. Abhishek ");gotoxy(2,1);lprintf("2. Anagha ");send_string("ATE0\r\0");delay_ms(1000);clear_flag();send_string("AT+CMGD=1\r\0");delay_ms(1000);clear_flag();lclrscr();lprintf("Enter Password");while(1){
keycode = keypad();if(keycode!='$'){
lcd_keypad(keycode);}if(password_complete){
lcd_pos=0;password_complete=0;password_check();delay(1000);lclrscr();lprintf("Enter Password");
}if(flag_cmd==1){
result=process_data();if(result==MSG_RECEIVED){
lclrscr();lprintf("Msg. Received");gotoxy(2,1);read_message('1');send_string("AT+CMGD=1\r\0");delay(1000);clear_flag();lclrscr();lprintf("Enter Password");
}
41
else{
lclrscr();lprintf("Msg not received");clear_flag();
}}if (accident == 0){
send_message(6)}
}}
42
Steps for executing the Keil programs:
Click on the KeiluVision Icon on Desktop
The following fig will appear
1. Click on the Project menu from the title bar
2. Then Click on New Project
44
3. Save the Project by typing suitable project name with no extension in u r own folder sited in either C:\ or D:\
4. Then Click on Save button above.
5. Select the component for u r project. i.e. Atmel……
6. Click on the + Symbol beside of Atmel
7. Select P89V51RD2 as shown below
45
8. Then Click on “OK”
9. The Following fig will appear
10. Then Click either YES or NO………mostly “NO”
11. Now your project is ready to USE
12. Now double click on the Target1, you would get another option
“Source group 1” as shown in next page.
46
13. Click on the file option from menu bar and select “new”
14. The next screen will be as shown in next page, and just maximize it
by double clicking on its blue boarder.
47
15. Now start writing program in either in “C” or “ASM”
16. For a program written in Assembly, then save it with extension “.
asm” and for “C” based program save it with extension “ .C”
17. Now right click on Source group 1 and click on “Add files to Group
Source”
48
18. Now you will get another window, on which by default “C” files will
appear.
19. Now select as per your file extension given while saving the file
20. Click only one time on option “ADD”
21. Now Press function key F7 to compile. Any error will appear if so
happen.
49
22. If the file contains no error, then press Control+F5 simultaneously.
23. The new window is as follows
24. Then Click “OK”
25. Now Click on the Peripherals from menu bar, and check your
required port as shown in fig below
50
26. Drag the port a side and click in the program file.
27. Now keep Pressing function key “F11” slowly and observe.
28. You are running your program successfully
51
Details:
89V51RD is 40 pin IC with four ports. Pin diagram of microcontroller is shown in
Fig.
VCC - - Supply voltage..
VSS - - Ground.
Port 0Port 0
Port 0 is an 8-bit open-drain bi-directional I/O port. As an output port, each pin
can sink eight TTL inputs. When 1s are written to port 0 pins, the pins can be used
as high impedance inputs. Port 0 may also be configured to be the multiplexed low
order address/data bus during accesses to external program and data memory. In
this mode P0 has internal pull-ups. Port 0 also receives the code bytes during
Flash programming, and outputs the code bytes during program verification.
External pull-ups are required during program verification.
Port 1 Port 1
Port 1 is an 8-bit bi-directional I/O port with internal pull-ups. The Port 1 output
buffers can sink/source four TTL inputs. When 1s are written to Port 1 pins they are
pulled high by the internal pull-ups and can be used as inputs. As inputs, Port 1
pins that are externally being pulled low will source current (IIL) because of the
internal pull-ups. Port 1 also receives the low-order address bytes during Flash
programming and verification.
Port 2Port 2
Port 2 is an 8-bit bi-directional I/O port with internal pull-ups. The Port 2 output
buffers can sink/source four TTL inputs. When 1s are written to Port 2 pins they are
pulled high by the internal pull-ups and can be used as inputs. As inputs, Port 2
pins that are externally being pulled low will source current (IIL) because of the
internal pull-ups. Port 2 emits the high-order address byte during fetches from
external program memory and during accesses to external data memory that uses
16-bit addresses (MOVX @ DPTR). In this application, it uses strong internal pull-
ups when emitting 1s. During accesses to external data memory that uses 8-bit
addresses (MOVX @ RI), Port 2 emits the contents of the P2 Special Function
63
Register. Port 2 also receives the high-order address bits and some control signals
during Flash programming and verification.
Port 3Port 3
Port 3 is an 8-bit bi-directional I/O port with internal pull-ups. The Port 3
output buffers can sink/source four TTL inputs. When 1s are written to Port 3 pins
they are pulled high by the internal pull-ups and can be used as inputs. As inputs,
Port 3 pins that are externally being pulled low will source Current (IIL) because of
the pull-ups. Port 3 also serves the functions of various special features of the
AT89V51RD2 as listed:
P3.0 RXD (serial input port)
P3.1 TXD (serial output port)
P3.2 INT0 (external interrupt 0)
P3.3 INT1 (external interrupt 1)
P3.4 T0 (timer 0 external input)
P3.5 T1 (timer 1 external input)
P3.6 WR (external data memory write strobe)
P3.7 RD (external data memory read strobe)
Port 3 also receives some control signals for Flash programming and
verification.
RST –RST –
Reset input. A high on this pin for two machine cycles while the oscillator is
running resets the device.
ALE/ PROGALE/ PROG
Address Latch Enable output pulse for latching the low byte of the address
during accesses to external memory. This pin is also the program pulse input
(PROG) during Flash programming. In normal operation ALE is emitted at a
constant rate of 1/6 the oscillator frequency, and may be used for external timing or
clocking purposes. Note, however, that one ALE pulse is skipped during each
access to external Data Memory. If desired, ALE operation can be disabled by
setting bit 0 of SFR location 8EH. With the bit set, ALE is active only during a
64
MOVX or MOVC instruction. Otherwise, the pin is weakly pulled high. Setting the
ALE-disable bit has no effect if the microcontroller is in external execution mode.
PSENPSEN
Program Store Enable is the read strobe to external program memory. When
the 89V51RD2FA 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.
EA/VPP EA/VPP
External Access Enable. EA must be strapped to GND in order to enable the
device to fetch code from external program memory locations starting at 0000H up
to FFFFH. Note, however, that if lock bit 1 is programmed, EA will be internally
latched on reset. EA should be strapped to VCC for internal program executions.
This pin also receives the 12-volt programming enable voltage (VPP) during Flash
programming, for parts that require 12-volt VPP.
Oscillator and Clock Details:Oscillator and Clock Details:
Oscillator Characteristics:
XTAL1 and XTAL2 are the input and output, respectively, of an
inverting amplifier, which can be configured for use as an on-chip oscillator,
as shown in Figs 6.1 Either a quartz crystal or ceramic resonator may be
used. To drive the device from an external clock source, XTAL2 should be left
unconnected while XTAL1 is driven as shown in Figure 6.2. There are no
requirements on the duty cycle of the external clock signal, since the input to
the internal clocking circuitry is through a divide-by-two flip-flop, but minimum
and maximum voltage high and low time specifications must be observed.
65
Fig 6.1 Oscillator Connections Fig 6.2 External Clock Drive
Configuration
XTAL1
Input to the inverting oscillator amplifier and input to the internal clock
operating circuit.
XTAL2
Output from the inverting oscillator amplifier.
3.1.5 Transmission in 89V51RD2:3.1.5 Transmission in 89V51RD2:
89V51RD2 has a serial data communication circuit that uses register SBUF to
hold data. Register SCON controls data communication. Register PCON controls
data rates. Pins RxD (p3.0) and TxD(3.1) connect to serial data network. SBUF is
physically two registers, one is writing only i.e. to hold data to be transmitted out of
microcontroller via TxD. The other is read only and holds received data from an
external transmitting source via RxD.
Whenever a data byte is transmitted T1 flag is set and so program is
interrupted to transmit another byte of data. The main program is interrupted only
serial port interrupt is 1E SFR is enable.
The data transmission steps are:
Initially the T1 flag is reset.
Data to be transmitted must be written into SBUF.
As soon as data is transmitted the T1 flag is set and main program is
interrupted to execute ISR.
In the ISR T1 flag is reset .another data is written in SBUF register.
External Access Enable. EA must be strapped to GND in order to
enable the device to fetch code from external program memory locations
starting at 0000H up to FFFFH.
Note, however, that if lock bit 1 is programmed, EA will be internally
latched on reset. EA should be strapped to VCC for internal program
executions. This pin also receives the 12-volt programming enable voltage
(VPP) during Flash programming, for parts that require 12-volt VPP.
XTAL1:
66
Input to the inverting oscillator amplifier and input to the internal clock
operating circuit.
XTAL2:
Output from the inverting oscillator amplifier.
8051 Register Banks and Stack
RAM memory space allocation in the 8051
There are 128 bytes of RAM in the 8051. The 128 bytes of RAM inside
the 8051 are assigned addresses 00 to7FH. These 128 bytes are divided into
three different groups as follows:
1. A total of 32 bytes from locations 00 to 1FH hex are set aside for
register banks and the stack.
2. A total of 16 bytes from locations 20 to 2FH hex are set aside for
bit-addressable read/write memory.
3. A total of 80 bytes from locations 30H to 7FH are used for read and
write storage, or what is normally called Scratch pad. These 80
locations of RAM are widely used for the purpose of storing data
and parameters nu 8051 programmers.
67
Default register bank
Register bank 0; that is, RAM locations 0, 1,2,3,4,5,6, and 7 are
accessed with the names R0, R1, R2, R3, R4, R5, R6, and R7 when
programming the 8051.
FIG 8: RAM Allocation in the 8051
PSW Register (Program Status Word)
This is one of the most important SFRs. The Program Status Word (PSW)
contains several status bits that reflect the current state of the CPU. This
register contains: Carry bit, Auxiliary Carry, two register bank select bits,
Overflow flag, parity bit, and user-definable status flag. The ALU automatically
changes some of register’s bits, which is usually used in regulation of the
program performing.
P - Parity bit. If a number in accumulator is even then this bit will be
automatically set (1), otherwise it will be cleared (0). It is mainly used during
data transmission and receiving via serial communication.
68
OV Overflow occurs when the result of arithmetical operation is greater than
255 (decimal), so that it cannot be stored in one register. In that case, this bit
will be set (1). If there is no overflow, this bit will be cleared (0).
RS0, RS1 - Register bank select bits. These two bits are used to select one
of the four register banks in RAM. By writing zeroes and ones to these bits, a
group of registers R0-R7 is stored in one of four banks in RAM.
RS1 RS2 Space in RAM
0 0 Bank0 00h-07h
0 1 Bank1 08h-0Fh
1 0 Bank2 10h-17h
1 1 Bank3 18h-1Fh
F0 - Flag 0. This is a general-purpose bit available to the user.
AC - Auxiliary Carry Flag is used for BCD operations only.
CY - Carry Flag is the (ninth) auxiliary bit used for all arithmetical operations
and shift instructions.
DPTR Register (Data Pointer)
These registers are not true ones because they do not physically exist. They
consist of two separate registers: DPH (Data Pointer High) and (Data Pointer
Low). Their 16 bits are used for external memory addressing. They may be
handled as a 16-bit register or as two independent 8-bit registers. Besides,
the DPTR Register is usually used for storing data and intermediate results,
which have nothing to do with memory locations.
69
SP Register (Stack Pointer)
The stack is a section of RAM used by the CPU to store information
temporily. This information could be data or an address. The CPU needs this
storage area since there are only a limited number of registers.
How stacks are accessed in the 8051
If the stack is a section of RAM, there must be registers inside the CPU
to point to it. The register used to access the stack is called the SP (Stack
point) Register. The stack pointer in the 8051 is only 8 bits wide; which
means that it can take values of 00 to FFH. When the 8051 is powered up,
the SP register contains value 07. This means that RAM location 08 is the
first location used for the stack by the 8051. The storing of a CPU register in
the stack is called a PUSH, and pulling the contents off the stack back into a
CPU register is called a POP. In other words, a register is pushed onto the
stack to save it and popped off the stack to retrieve it. The job of the SP is
very critical when push and pop actions are performed.
Program counter:
The important register in the 8051 is the PC (Program counter). The
program counter points to the address of the next instruction to be executed.
As the CPU fetches the opcode from the program ROM, the program counter
is incremented to point to the next instruction. The program counter in the
8051 is 16bits wide. This means that the 8051 can access program
addresses 0000 to FFFFH, a total of 64k bytes of code. However, not all
70
members of the 8051 have the entire 64K bytes of on-chip ROM installed, as
we will see soon.
Serial Communication:
Serial data communication uses two methods, asynchronous and
synchronous. The synchronous method transfers a block of data at a time,
while the asynchronous method transfers a single byte at a time.
In data transmission if the data can be transmitted and received, it is a
duplex transmission. This is in contrast to simplex transmissions such as with
printers, in which the computer only sends data. Duplex transmissions can be
half or full duplex, depending on whether or not the data transfer can be
simultaneous. If data is transmitted one way at a time, it is referred to as half
duplex. If the data can go both ways at the same time, it is full duplex. Of
course, full duplex requires two wire conductors for the data lines, one for
transmission and one for reception, in order to transfer and receive data
simultaneously.
Asynchronous serial communication and data framing
The data coming in at the receiving end of the data line in a serial data
transfer is all 0s and 1s; it is difficult to make sense of the data unless the
sender and receiver agree on a set of rules, a protocol, on how the data is
packed, how many bits constitute a character, and when the data begins and
ends.
Start and stop bits
Asynchronous serial data communication is widely used for character-
oriented transmissions, while block-oriented data transfers use the
synchronous method. In the asynchronous method, each character is placed
between start and stop bits. This is called framing. In the data framing for
asynchronous communications, the data, such as ASCII characters, are
packed between a start bit and a stop bit. The start bit is always one bit, but
the stop bit can be one or two bits. The start bit is always a 0 (low) and the
stop bit (s) is 1 (high).
71
Data transfer rate
The rate of data transfer in serial data communication is stated in bps
(bits per second). Another widely used terminology for bps is baud rate.
However, the baud and bps rates are not necessarily equal. This is due to the
fact that baud rate is the modem terminology and is defined as the number of
signal changes per second. In modems a single change of signal, sometimes
transfers several bits of data. As far as the conductor wire is concerned, the
baud rate and bps are the same, and for this reason we use the bps and baud
interchangeably.
RS232 Standards
To allow compatibility among data communication equipment made by
various manufacturers, an interfacing standard called RS232 was set by the
Electronics Industries Association (EIA) in 1960. In 1963 it was modified and
called RS232A. RS232B AND RS232C were issued in 1965 and 1969,
respectively. Today, RS232 is the most widely used serial I/O interfacing
standard. This standard is used in PCs and numerous types of equipment.
However, since the standard was set long before the advert of the TTL logic
family, its input and output voltage levels are not TTL compatible. In RS232,
a 1 is represented by -3 to -25V, while a 0 bit is +3 to +25V, making -3 to +3
undefined. For this reason, to connect any RS232 to a micro controller
system we must use voltage converters such as MAX232 to convert the TTL
logic levels to the RS232 voltage levels, and vice versa. MAX232 IC chips
are commonly referred to as line drivers.
RS232 pins
RS232 cable, commonly referred to as the DB-25 connector. In
labeling, DB-25P refers to the plug connector (male) and DB-25S is for the
socket connector (female). Since not all the pins are used in PC cables, IBM
introduced the DB-9 Version of the serial I/O standard, which uses 9 pins
only, as shown in table.
(Out of computer and exposed end of cable)
72
Pin Functions:
Pi
n
Description
1 Data carrier detect (DCD)
2 Received data (RXD)
3 Transmitted data (TXD)
4 Data terminal ready(DTR)
5 Signal ground (GND)
6 Data set ready (DSR)
7 Request to send (RTS)
8 Clear to send (CTS)
9 Ring indicator (RI)
Note: DCD, DSR, RTS and CTS are active low pins.
The method used by RS-232 for communication allows for a simple
connection of three lines: Tx, Rx, and Ground. The three essential signals for
2-way RS-232
8051 connection to RS232
The RS232 standard is not TTL compatible; therefore, it requires a line
driver such as the MAX232 chip to convert RS232 voltage levels to TTL
levels, and vice versa. The interfacing of 8051 with RS232 connectors via the
MAX232 chip is the main topic.
The 8051 has two pins that are used specifically for transferring and
receiving data serially. These two pins are called TXD and RXD and a part of
the port 3 group (P3.0 and P3.1). pin 11 of the 8051 is assigned to TXD and
pin 10 is designated as RXD. These pins are TTL compatible; therefore, they
require a line driver to make them RS232 compatible. One such line driver is
the MAX232 chip.
Since the RS232 is not compatible with today’s microprocessors and
microcontrollers, we need a line driver (voltage converter) to convert the
RS232’s signals to TTL voltage levels that will be acceptable to the 8051’s
73
TXD and RXD pins. One example of such a converter is MAX232 from
Maxim Corp. The MAX232 converts from RS232 voltage levels to TTL
voltage levels, and vice versa.
Fig 11: Interfacing of MAX-232 to controller
Interrupts in the 8051:
In reality, only five interrupts are available to the user in the 8051, but many
manufacturers’ data sheets state that there are six interrupts since they
include reset .the six interrupts in the 8051 are allocated as above.
1. Reset. When the reset pin is activated, the 8051 jumps to address
location 0000.this is the power-up reset.
2. Two interrupts are set aside for the timers: one for Timer 0 and one for
Timer 1.Memory location 000BH and 001BH in the interrupt vector
table belong to Timer 0 and Timer 1, respectively.
3. Two interrupts are set aside for hardware external harder interrupts.
Pin number 12(P3.2) and 13(P3.3) in port 3 is for the external hardware
interrupts INT0 and INT1, respectively. These external interrupts are
also referred to as EX1 and EX2.Memory location 0003H and 0013H in
the interrupt vector table are assigned to INT0 and INT1, respectively.
4. Serial communication has a single interrupt that belongs to both
receive and transmit. The interrupt vector table location 0023H belongs
to this interrupt.
Interrupt Enable Register
D7 D6 D5 D4 D3 D2 D1 D0
74
EA -- ET2 ES ET1 EX1 ET0 EX0
EA IE.7 disables all interrupts. If EA=0, no interrupts is
acknowledged.
If EA=1, each interrupt source is individually enabled
disabled
By setting or clearing its enable bit.
-- IE.6 Not implemented, reserved for future use.*
ET2 IE.5 Enables or disables Timer 2 overflow or capture interrupt (8052
only).
ES IE.4 Enables or disables the serial ports interrupt.
ET1 IE.3 Enables or disables Timers 1 overflow interrupt
EX1 IE.2 Enables or disables external interrupt 1.
ET0 IE.1 Enables or disables Timer 0 overflow interrupt.
EX0 IE.0 Enables or disables external interrupt 0.
5.GSM Modem SIM300
75
MAX232 to RS232 DB9 Connection as a DCE
MAX232 Pin Nbr. MAX232 Pin Name Signal Voltage DB9 Pin
7 T2out CTS RS-232 7
8 R2in RTS RS-232 8
9 R2out RTS TTL n/a
10 T2in CTS TTL n/a
11 T1in TX TTL n/a
12 R1out RX TTL n/a
13 R1in TX RS-232 3
14 T1out RX RS-232 2
15 GND GND 0 5
77
MAX232(A) external Capacitors
Capacitor + Pin - Pin Remark
C1 1 3
C2 4 5
C3 2 16
C4 GND 6This looks non-intuitive, but because pin 6 is
on -10V, GND gets the + connector, and not the -
C5 16 GND
References/ bibliography/websites
used
Bibliography
The 8051 Micro controller and Embedded Systems
-Muhammad Ali MazidiJanice GillispieMazidi
The 8051 Micro controller Architecture,Programming & Applications
-Kenneth J.Ayala
Fundamentals of Micro processors and Micro computers
-B.Ram
78
Micro processor Architecture, Programming& Applications
-Ramesh S.Gaonkar
Electronic Components
-D.V.Prasad
Wireless Communications - Theodore S. Rappaport
Mobile Tele Communications - William C.Y. Lee
References on the Web:
www.national.com www.atmel.com www.microsoftsearch.com www.geocities.com http://tycho.usno.navy.mil/gpscurr.html
Annexure79
Applications
Using this technique we can take our car safe from theft.
If our vehicle is suppose to be stolen by any theft then within some minutes we can find it.
Rather than break & steering lock it is best way to stop engine remotely .
Future scope
In next some days we can use GPS system & finds exact location of vehicle.
80
We can also use GPRS system to implement this technique worldwide.
We can use DTMF technique along with GSM modem to secure our car.
We can also implement using thumb or fingerprint base technology.
Abbreviations
ACC - AccumulatorB - B RegisterPSW - Program Status WordSP - Stack PointerDPTR - Data pointerDPL - Low byteDPH - High byteP0 - Port 0P1 - Port 1P2 - Port 2P3 - Port 3IE - Interrupt Enable controlIP - Interrupt Priority controlTMOD - Timer/Counter Mode controlTCON - Timer/Counter controlT2CON - Timer/counter 2 controlT2MOD - Timer/counter mode2 controlTH0 - Timer/counter 0high byteTL0 - Timer/counter 0 low byteTH1 - Timer/counter 1 high byteTL1 - Timer/counter 1 low byteTH2 - Timer/counter 2 high byteTL2 - Timer/counter 2 low byteRCAP2H - T/C 2 capture register high byteRCAP2L - T/C 2 capture register low byteSCON - Serial controlSBUF - Serial data bufferPCON - Power controlGSM -Global System for Mobile CommunicationsPCB - Printed circuit BoardSFR - Special function registersWAAS - Wide Area Augmentation SystemLCD - Liquid Crystal Display
81