Gadget Renesas

Linking Ideas and Electronics

GR Atelier

Title:IoT based Vehicle Parameters Monitoring and Security System

Displayed Name:SRI ESHWAR COLLEGE OF ENGINEERING

IoT based Vehicle Parameters Monitoring and Security System

Concept / Overview
-->Vehicle Maintenance and security of vehicle is one of the major problem for a common man nowadays and alongside the thief's are getting intelligent too as "they can break any security system" easily and loot the vehicle.
-->As a common man one will not be satisfied on spending too much on Maintaining his vehicle and no one will his/her bike being looted
--> Here we provide "IoT BASED VEHICLE PARAMETERS MONITORING AND SECURITY SYSTEM" In this project we are implementing an easy way to monitor an individual’s vehicle’s parameters such as fuel level, Tyre pressure level, Engine oil level etc.., using IoT Technology.
-->IN addition to that the bike is secured by means of "DIGITAL LOCKS" and can be tracked using advanced GPS systems
####

Abstract

IoT is the internetworking of physical devices, vehicles, and other devices embedded with the electronics, software, sensors and network connectivity that enable to get data of those objects.

Confiscating details from their own vehicle without making any physical touch is a hardly possible one. Augmentation of Smartphone makes a large impact in society by diminishing their toil. A surge movement of applications in the Smartphone may cutback the human’s accent.

In India transportation is a booming field where the count of vehicles increasing day by day. Security and maintenance of those vehicles is a risky one. Monitoring vehicle parameters like fuel, engine oil, tyre pressure is an ideal to know without making any physical touch of the vehicle. Digital locking system is a much needed one in this digital domain. Tracking of our vehicle is also a vital one when your vehicle is not with you.

IoT based vehicle parameter monitoring system is a capable one which leads to monitor our vehicle’s parameters such as fuel level, tyre pressure, engine oil level through an Android App. It’s Smart RFID digital key secure your vehicle more than by accessing by keys. In this app we can save our vehicle documents, user driving license, insurance copy and other documents. Notification for engine oil, battery rejuvenation is also done. Message and shares location to trusted persons whenever ensue accidents.

####

Mission

As a footing for India’s digital India projects it is a layout for digitalizing the access of vehicles through the RFID and mobile application.

The RFID IGNITION CONTROL MODULE allows the user to turn ON/OFF the engine which leads to more security. Since the vehicle is digitally connected to the user through a mobile application it ensures a smarter way to monitor the vehicle from anywhere.

The parameters monitoring modules grant a way to automatically updating of the vehicle’s condition to the user through which the user can be never bothered about the health of the vehicle. The tracking module equipped in the vehicle allows the user to easily access the location of the vehicle by using the mobile application.

An easy way to inform the trusted persons whenever the user faces an accident by using the mobile application.

All these features help to increase the bonding of the vehicle and its user by frequent updating of the vehicle’s condition and tracking. It reduces the stress of the users about the vehicle and ensures protection of the vehicle.

####

Block Diagram

####

Flow Chart

####

Circuit Diagram

####

Circuit Description

The MCU(Renesas GR-Peach):

        The Micro controller used here is Renesas RZ/A1H (GR-Peach) which has

  • 8MB FLASH
  • 2xUSB Host/Device Interface, 1xEthernet
  • 5xSPI, 3xI2C, 8xUART, 7x12-bits ADC

 

Which provides High speed data processing with operating frequency of 400MHz and the USB host allows one to use endless devices with MCU .Here the MCU Processes the serial data and as well as analog data

Serial.0 is used to communicate with wifi module to provide internet to the vehicle as well as involves in data transmission

Serial.4 is used to communicate with GPS Module to receive the vehicle coordinates (lat, lon), Time(UTC),date,etc.,

Serial.5 is used to communicate with RFID reader to receive the Tag details and initialize the Ignition

Digital pins

D4 & D5 are used to turn on & off the Relay based on the Tag scanned and current vehicle’s power status

Analog Pin

A0 is used to Read the analog voltage received from Float sensor and it is processed to get the amount of fuel

A1 is used to read the analog voltage from temperature sensor (LM35) and the value is processed to get the temperature of vehicle’s engine

A2 is used to read the voltage received from the battery of vehicle and is processed to determine the vehicle’s Battery health and Level

A3 is used to read the analog data from the oil level sensor to determine the oils health

         All the above datas are processed and the resultant action is initiated by the Renesas Gr-Peach microcontroller as well as the Datas are stored inside the SD card in case of absence of internet connection For further processing. The Gr-Peach board operates in 3.3v which is highly reliable in modern era of technology.

The Rfid Reader works on tags has the operating frequency of 125kHz and it is Highly Precise and Accurate. The main aspect is that this has Tag reading capability up to 10cm which ensures perfect reading of cards

The GPS Module provide the coordinates of the vehicle as a serial data to the MCU for tracking it works on 8 satellites to provide exact location of vehicle

 

 

 

 

 

####

Source Code

Source code

 

#include "Arduino.h"
#include "string.h"
 #include "ctype.h"
 #define Fuel_pin A0
 #define Oil_temp A1
 #define Battery A2
 int byteGPS=-1;
 char linea[300] = "";
 char comandoGPR[7] = "$GPRMC";
 int cont=0,bien=0,conta=0,indices[13];
   char tagOk[] ="3A00118EB217";//These are the Authorized Tag's
char tag2Ok[]="48007F3CB4BF";
char inputTag[12];
int f=1,a,oil,val,b,x,connection,theft; 
String lat;
String lon;
String ssid="WIFI4";
String password="PROJRCT_2016";
String server="www.thingspeak.com";
String uri="api.thingspeak.com";
String api="APIKEY";
String num="user mobile number";
String data;
         void setup() {
         	for (int i=0;i<300;i++){       // Initialize a buffer for received data
     linea[i]=' ';}
Serial4.begin(9600);//Serial for GPS
Serial5.begin(9600);//Serial for RFID reader
Serial0.begin(115200);//Serial for Wifi Module
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
 digitalWrite(4,LOW);
       digitalWrite(5,LOW);
       x=0;
       theft=0;
}
void rfid(){
   if (Serial5.available()){  
  int count = 0; 
      while(Serial5.available() && count < 12) { 
         inputTag[count] = Serial5.read(); 
         Serial.print(inputTag[count]);
         count++; 
         delay(10);
         } 
   
       int compare = 1;
      int compare2 = 1; 
      compare = (strncmp(tagOk, inputTag,12)) ;
       compare2 = (strncmp(tag2Ok, inputTag,12)) ;// if both tags are equal strncmp returns a 0 
      if ((compare == 0)||(compare2 == 0)){ 
        f++;
         Serial.println( "   TAG OK  "); 
         if(f%2==0){
      digitalWrite(4,HIGH);
       digitalWrite(5,HIGH);
      }
      else{
        digitalWrite(4,LOW);
        digitalWrite(5,LOW);
        }}
else {Serial.println ("Unauthorized access");
      theft=1;
     }
    }
   }

void gps(){
if((Serial4.available())&&(f%2==0)){
 int k=0;
     byteGPS=Serial4.read();         // Read a byte of the serial port
   if (byteGPS == -1) {           // See if the port is empty yet
     delay(100); 
   } else {
     // note: there is a potential buffer overflow here!
     linea[conta]=byteGPS;        // If there is serial port data, it is put in the buffer
     conta++;                      
     //Serial.print(byteGPS); 
     if (byteGPS==13){            // If the received byte is = to 13, end of transmission
       // note: the actual end of transmission is  (i.e. 0x13 0x10)
       cont=0;
       bien=0;
       // The following for loop starts at 1, because this code is clowny and the first byte is the  (0x10) from the previous transmission.
       for (int i=1;i<7;i++){     // Verifies if the received command starts with $GPR
         if (linea[i]==comandoGPR[i-1]){
           bien++;
         }
       }
       if(bien==6){               // If yes, continue and process the data
         for (int i=0;i<300;i++){
           if (linea[i]==','){    // check for the position of the  "," separator
             // note: again, there is a potential buffer overflow here!
             indices[cont]=i;
             cont++;
           }
           if (linea[i]=='*'){    // ... and the "*"
             indices[12]=i;
             cont++;
           }
         }
         Serial.println("");      // ... and write to the serial port
         Serial.println("");
         Serial.println("---------------");
         for (int i=1;i<5;i++){
           switch(i){
             case 0 :Serial0.print("Time in UTC (HhMmSs): ");break;
             case 1 :Serial0.print("Status (A=OK,V=KO): ");break;
             case 2 :Serial.print("Latitude: ");break;
             case 3 :Serial.print("Direction (N/S): ");break;
             case 4 :{Serial.print("Longitude: ");k=0;break;}
             case 5 :Serial.print("Direction (E/W): ");break;
             case 6 :Serial.print("Velocity in knots: ");break;
             case 7 :Serial.print("Heading in degrees: ");break;
             case 8 :Serial.print("Date UTC (DdMmAa): ");break;
             case 9 :Serial.print("Magnetic degrees: ");break;
             case 10 :Serial.print("(E/W): ");break;
             case 11 :Serial.print("Mode: ");break;
             case 12 :Serial.print("Checksum: ");break;
           }
           for (int j=indices[i];j<(indices[i+1]-1);j++){
             Serial.print(linea[j+1]); 
             if(i==2){
             	lat[k]=linea[j+1];
             	k++;
             }
              if(i==4){
             	lon+=linea[j+1];
             	k++;    }
           }
           Serial.println("");
         }
         Serial.println("---------------");
       }
       conta=0;                    // Reset the buffer
       for (int i=0;i<300;i++){    //  
         linea[i]=' ';             }                 
     } 
}
}
}
void wifisend()
{
	if(x==0){
Serial0.println("AT+RST");//reset wifi module
delay(1000);
if(Serial0.find("OK") ) {Serial.println("Module Reset");
x++;
String cmd = "AT+CWJAP="" +ssid+"","" + password + """;
Serial0.println(cmd);
delay(4000);
if(Serial0.find("OK")) {
Serial.println("Connected!");
connection=1;}
else{connection=0;}
  	}
   	}
	if(theft==1){
		theft=0;
		String dat="/apps/thinghttp/send_request?api_key="+api+"&mob="+num+"&msg=Warning!! Unauthorized Access ";
		Serial0.println("AT+CIPSTART="TCP","" + server + "",80");//start a TCP connection
if(Serial0.find("OK")) {
Serial.println("TCP connection ready");
} delay(1000);
String postRequest ="GET " + uri + " HTTP/1.0\r\n" +"Host: " + server + "\r\n" +"Accept: *" + "/" + "*\r\n" +"Content-Length: " + dat.length() + "\r\n" +"Content-Type: application/x-www-form-urlencoded\r\n" +"\r\n" + dat;
String sendCmd = "AT+CIPSEND=";//determine the number of caracters to be sent.
Serial0.print(sendCmd);
Serial0.println(postRequest.length() );
delay(500);
if(Serial0.find(">")) { Serial.println("Sending.."); Serial0.print(postRequest);	}
	if(connection){
Serial0.println("AT+CIPSTART="TCP","" + server + "",80");//start a TCP connection
if(Serial0.find("OK")) {
Serial.println("TCP connection ready");
} delay(1000);
String postRequest ="GET " + uri + " HTTP/1.0\r\n" +"Host: " + server + "\r\n" +"Accept: *" + "/" + "*\r\n" +"Content-Length: " + data.length() + "\r\n" +"Content-Type: application/x-www-form-urlencoded\r\n" +"\r\n" + data;
String sendCmd = "AT+CIPSEND=";//determine the number of caracters to be sent.
Serial0.print(sendCmd);
Serial0.println(postRequest.length() );
delay(500);
if(Serial0.find(">")) { Serial.println("Sending.."); Serial0.print(postRequest);
if( Serial0.find("SEND OK")) { Serial.println("Packet sent");
while (Serial0.available()) {
String tmpResp = Serial0.readString();
Serial.println(tmpResp);
}
Serial0.println("AT+CIPCLOSE");// close the connection
             }
          }  
      }
    }
}
void loop() {
 if(f%2==0){
 a=analogRead(Fuel_pin);
val = analogRead(Oil_temp);
  oil = (5*val*100/1024)-18;//calculation of Temperature
 b=(675-a)/135; //calculation of fuel level
Serial.println("fuel=");
Serial.println(b);Serial.println("Litres");
if(oil<95){
Serial.println("oil Normal-(");
Serial.print(oil);
Serial.print(")");
delay(1000);}
else
{
Serial.println("oil at Critical");
delay(1000);
 }
}
data="/update?api_key="+api+"&field1="+b;
data+="&field2="+oil;
data+="&field4="+lat;
data+="&field5="+lon;
rfid();
delay(1000);
gps();
delay(1000);
wifisend();
delay(1000);
}


 

####

Working

IoT based Vehicle parameter monitoring system is powered by Renesas GR-PEACH board. The main Objective of the project is digitalizing the locking system of the vehicle by using RFID and Android App. This project contains the following modules.

 

 - Fuel level Monitoring Module

 - Battery level Monitoring Module

 - Engine oil monitoring Module

 - RFID ignition control Module

 - GPS tracking Module

 

Fuel level Monitoring Module:

In this module we are using the Float level sensor to detect the fuel level in the fuel tank. The float level works on the principle of buoyancy which states that “the buoyancy force action on the object is equal to the mass of the liquid displaced by the object.” As a result, floats ride on the liquid surface partially submerged and move the same distance the liquid level moves. When there is a change in the fuel level, variable resistance present in the float sensor varies accordingly. Thus fuel level is directly proportional to the resistance. Based on the variance in the resistance value the respective fuel level is obtained. These electrical data from the float level sensor is received by RENESAS GR-PEACH board and transmitted to the thingspeak platform. Then those data are transmitted to the mobile application.

 

 

 

 

 

 

 

 

Battery Level Monitoring Module:

        The condition and level of the battery is monitored by taking voltage reading from the battery frequently. This voltage value is read by the RENESAS GR-PEACH board and those values are sent to the Thingspeak platform. These data are then transmitted to the mobile application. Additional hardware requirement is not needed for this setup.

Engine oil monitoring Module:

       To monitor the condition of the engine oilLM35 is used. This LM35 takes the temperature in a regular interval from engine. The regular reports will be correlated with the standard temperature value of the engine. Whenever there is a disparity in these values there is change in the condition of the engine oil. Thus the engine oil is monitored regularly by this concept and the regular reports are sent to the mobile application from the RENESAS GR-PEACH board.

RFID ignition control Module:

        RFID is abbreviation of Radio Frequency Identification. RFID signifies to tiny electronic gadgets that comprise of a small chip and an antenna. This small chip is competent of accumulating approximately2000 bytes of data or information. RFID devices is used as a substitute of bar code or a magnetic strip which is noticed at the back of an ATM card or credit card, it gives a unique identification code to each item. And similar to the magnetic strip or bar code, RFID devices too have to be scanned to get the details.

 

 

 

 

 

 

 

Working of RFID

        When the RFID tag is shown to the RFIDEM 18MODULE the signal is sent to the RENESAS GR-PEACH board and it verifies the user. After verification the controller allows to turn ON the IGNITION. If there is an unauthorized access using an unregistered TAG a notification alert will be sent to the mobile application and also an sms will be sent to the user. By the same way when the authorized RFID tag is shown again, the controller verifies it and makes the IGNITIONSYSTEM to turn OFF.

GPS tracking Module:

        This module is enabled with GPS which allows the user to locate the vehicle when it is not with him/her. The GPS MODULE which is fixed in the vehicle sends the data to the RENESAS GR-PEACH board from which the details are fetched by the mobile application.

The Android Application:

       The user friendly android app enables the user to track, monitor, and set the critical levels to have an alarm for his/her convenience. The user can also set Alarm in the application if the fuel goes below a particular state and engine oil & temperature as well as the battery level. The application is integrated with Google maps in order to track the vehicle

The SMS Facility

      The user will receive SMS on unauthorized access and location of vehicle. These datas are sent to server and the User friendly android application receives the data from server and displays everything including Location

####

Demo Video

####

References

1.  "GPS Cycle Computer v3". Axivo Inc. 7 September 2008. Retrieved 22 April 2014.

2. Erjavec, Jack (2005). Automotive TechnologyISBN 1-4018-4831-1.

3.  Deeter. "Float Level Sensors". Retrieved 2009-05-05.

4.  "Real Time Location Systems" . clarinox. Retrieved2010-08-04.

5.  Weis, Stephen A. (2007), RFID (Radio Frequency Identification): Principles and Applications, MIT CSAIL

6.  "Cell phone bus tracking applications developed". Metro Magazine. April 2009. Retrieved 2009-11-26.

SRI ESHWAR COLLEGE OF ENGINEERING

3rd prize for GR Peach Design Contest 2016 in India 

share