In our previous tutorials, we have learned about How to interface GPS module with Computer, how to build a Arduino GPS Clock and how to Track vehicle using GSM and GPS. Here in this project, we are going to build a Arduino based vehicle accident alert system using GPS, GSM and accelerometer. Accelerometer detects the sudden change in the axes of vehicle and GSM module sends the alert message on your Mobile Phone with the location of the accident. Location of accident is sent in the form of Google Map link, derived from the latitude and longitude from GPS module. The Message also contains the speed of vehicle in knots. See the Demo Video at the end. This Vehicle Accident alert project can also be used as a Tracking System and much more, by just making few changes in hardware and software.

Components Required:

Arduino Uno

GSM Module (SIM900A)

GPS Module (SIM28ML)

Accelerometer (ADXL335)

16x2 LCD

Power Supply

Connecting Wires

10 K-POT

Breadboard or PCB

Power supply 12v 1amp

Before going into Project, we will discuss about GPS, GSM and Accelerometer.

GPS Module and Its Working:

GPS stands for Global Positioning System and used to detect the Latitude and Longitude of any location on the Earth, with exact UTC time (Universal Time Coordinated). GPS module is used to track the location of accident in our project. This device receives the coordinates from the satellite for each and every second, with time and date. We have previously extracted $GPGGA string in Vehicle Tracking System to find the Latitude and Longitude Coordinates.

GPS module sends the data related to tracking position in real time, and it sends so many data in NMEA format (see the screenshot below). NMEA format consists several sentences, in which we only need one sentence. This sentence starts from $GPGGA and contains the coordinates, time and other useful information. This GPGGA is referred to Global Positioning System Fix Data. Know more about NMEA sentences and reading GPS data here.

We can extract coordinate from $GPGGA string by counting the commas in the string. Suppose you find $GPGGA string and stores it in an array, then Latitude can be found after two commas and Longitude can be found after four commas. Now, this latitude and longitude can be put in other arrays.

GSM Module:

The SIM900 is a complete Quad-band GSM/GPRS Module which can be embedded easily used by customer or hobbyist. SIM900 GSM Module provides an industry-standard interface. SIM900 delivers GSM/GPRS 850/900/1800/1900MHz performance for voice, SMS, Data with low power consumption. It is easily available in the market.

SIM900 designed by using single-chip processor integrating AMR926EJ-S core

Quad - band GSM/GPRS module in small size.

GPRS Enabled

AT Command:

AT means ATTENTION. This command is used to control GSM module. There are some commands for calling and messaging that we have used in many of our previous GSM projects with Arduino. For testing GSM Module we used AT command. After receiving AT Command GSM Module respond with OK. It means GSM module is working fine. Below is some AT commands we used here in this project:

Circuit Explanation:

Circuit Connections of this Vehicle Accident Alert System Project is simple. Here Tx pin of GPS module is directly connected to digital pin number 10 of Arduino. By using Software Serial Library here, we have allowed serial communication on pin 10 and 11, and made them Rx and Tx respectively and left the Rx pin of GPS Module open. By default Pin 0 and 1 of Arduino are used for serial communication but by using the SoftwareSerial library, we can allow serial communication on other digital pins of the Arduino. 12 Volt supply is used to power the GPS Module.

GSM module’s Tx and Rx pins of are directly connected to pin D2 and D3 of Arduino. For GSM interfacing, here we have also used software serial library. GSM module is also powered by 12v supply. An optional LCD’s data pins D4, D5, D6, and D7 are connected to pin number 6, 7, 8, and 9 of Arduino. Command pin RS and EN of LCD are connected with pin number 4 and 5 of Arduino and RW pin is directly connected with ground. A Potentiometer is also used for setting contrast or brightness of LCD.

An Accelerometer is added in this system for detecting an accident and its x,y, and z-axis ADC output pins are directly connected to Arduino ADC pin A1, A2, and A3.

Working Explanation:

In this project, Arduino is used for controlling whole the process with a GPS Receiver and GSM module. GPS Receiver is used for detecting coordinates of the vehicle, GSM module is used for sending the alert SMS with the coordinates and the link to Google Map. Accelerometer namely ADXL335 is used for detecting accident or sudden change in any axis. And an optional 16x2 LCD is also used for displaying status messages or coordinates. We have used GPS Module SIM28ML and GSM Module SIM900A.

When we are ready with our hardware after programming, we can install it in our vehicle and power it up. Now whenever there is an accident, the car gets tilt and accelerometer changes his axis values. These values read by Arduino and checks if any change occurs in any axis. If any change occurs then Arduino reads coordinates by extracting $GPGGA String from GPS module data (GPS working explained above) and send SMS to the predefined number to the police or ambulance or family member with the location coordinates of accident place. The message also contains a Google Map link to the accident location, so that location can be easily tracked. When we receive the message then we only need to click the link and we will redirect to the Google map and then we can see the exact location of the vehicle. Speed of Vehicle, in knots (1.852 KPH), is also sent in the SMS and displayed on the LCD panel. Check the full Demo Video below the Project.

Here in this project, we can set the sensitivity of Accelerometer by putting min and max value in the code.

Here in the demo have used given values:

#define minVal -50
#define MaxVal 50

But for better results you can use 200 in place of 50, or can set according to your requirement.

Programming Explanation:

Complete Program has been given below in Code section; here we are explaining its various functions in brief.

First we have included all the required libraries or headers files and declared various variables for calculations and storing data temporary.

After this, we have created a function void initModule(String cmd, char *res, int t) to initialize the GSM module and checking its response using AT commands.

Accelerometer calibration process is also done in setup loop. In this, we have taken some samples and then find the average values for the x-axis, y-axis, and z-axis. And store them in a variable. Then we have used these sample values to read changes in accelerometer axis when vehicle gets tilt (accident).

After this, in the void loop() function, we have read accelerometer axis values and done a calculation to extract changes with the help of samples that are taken in Calibration. Now if any changes are more or less then defined level then Arduino sends a message to the predefined number.

Here we have also created some other function for various puposes like void gpsEvent() to get GPS coordinates, void coordinate2dec() for extracting coordinates from the GPS string and convert them into Decimal values, void show_coordinate() for displaying values over serial monitor and LCD, and finally the void Send() for sending alert SMS to the predefined number.

Complete code and demo video is given below, you can check all the functions in the code.

Hai bro,please help me for doing this project...... please send me the code and circuit diagram for the above project .....I had tried the above code several times but it is not showing the output....please help me,,,....it means a lot

Since, the signals are sending the information to cloud by that only you are receiving, messages, and also your signal is being on syncing with the cloud. So it may come under IOT. By sitting in home it self you are getting to know how the things may happened.

when i compile the code in arduino sketch it says .
C:\Users\foxcent12\Desktop\VEHICLE_ACCIDENT_ALERT\VEHICLE_ACCIDENT_ALERT.ino:26:12: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]