Bluetooth Controlled Anti Collision Car With Arduino

384

2

1

car can controlled by bluetooth and when there is an obstacle in front of it i will stop

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1:

For this project you will need:Arduino uno

boardL293D motor driver

HC-06/HC-05 Bluetooth module

HRS04 ULTRASONIC SENSOR
2x leds for lights
1x speaker/buzzer for horn sound

RC Car that can fit all the above !

Step 2:

in the above picture i donot included conections of ultrasonic sensor since i tried very hard to make the project how ever i can help you
in this you will controll car by bluetooth unly since i made by seeing this

http://www.ardumotive.com/bluetooth-rc-car.html

Step 3:

//L293 Connection
const int motorA1 = 5; // Pin 2 of L293 const int motorA2 = 6; // Pin 7 of L293 const int motorB1 = 10; // Pin 10 of L293 const int motorB2 = 9; // Pin 14 of L293 //Leds connected to Arduino UNO Pin 12 const int lights = 12; //Buzzer / Speaker to Arduino UNO Pin 3 const int buzzer = 3 ; //Bluetooth (HC-06 JY-MCU) State pin on pin 2 of Arduino const int BTState = 2; //Calculate Battery Level const float maxBattery = 8.0;// Change value to your max battery voltage level! int perVolt; // Percentage variable float voltage = 0.0; // Read battery voltage int level; // Use it to make a delay... without delay() function! long previousMillis = -1000*10;// -1000*10=-10sec. to read the first value. If you use 0 then you will take the first value after 10sec. long interval = 1000*10; // interval at which to read battery voltage, change it if you want! (10*1000=10sec) unsigned long currentMillis; //unsigned long currentMillis; //Useful Variables int i=0; int j=0; int state; int vSpeed=200; // Default speed, from 0 to 255

void setup() { // Set pins as outputs: pinMode(motorA1, OUTPUT); pinMode(motorA2, OUTPUT); pinMode(motorB1, OUTPUT); pinMode(motorB2, OUTPUT); pinMode(lights, OUTPUT); pinMode(BTState, INPUT); // Initialize serial communication at 9600 bits per second: Serial.begin(9600); } void loop() { //Stop car when connection lost or bluetooth disconnected // if(digitalRead(BTState)==LOW) { state='S'; }

//Save income data to variable 'state' if(Serial.available() > 0){ state = Serial.read(); } //Change speed if state is equal from 0 to 4. Values must be from 0 to 255 (PWM) if (state == '0'){ vSpeed=0;} else if (state == '1'){ vSpeed=100;} else if (state == '2'){ vSpeed=180;} else if (state == '3'){ vSpeed=200;} else if (state == '4'){ vSpeed=255;} /***********************Forward****************************/ //If state is equal with letter 'F', car will go forward! if (state == 'F') { analogWrite(motorA1, vSpeed); analogWrite(motorA2, 0); analogWrite(motorB1, 0); analogWrite(motorB2, 0); } /**********************Forward Left************************/ //If state is equal with letter 'G', car will go forward left else if (state == 'G') { analogWrite(motorA1, vSpeed); analogWrite(motorA2, 0); analogWrite(motorB1, 200); analogWrite(motorB2, 0); } /**********************Forward Right************************/ //If state is equal with letter 'I', car will go forward right else if (state == 'I') { analogWrite(motorA1, vSpeed); analogWrite(motorA2, 0); analogWrite(motorB1, 0); analogWrite(motorB2, 200); } /***********************Backward****************************/ //If state is equal with letter 'B', car will go backward else if (state == 'B') { analogWrite(motorA1, 0); analogWrite(motorA2, vSpeed); analogWrite(motorB1, 0); analogWrite(motorB2, 0); } /**********************Backward Left************************/ //If state is equal with letter 'H', car will go backward left else if (state == 'H') { analogWrite(motorA1, 0); analogWrite(motorA2, vSpeed); analogWrite(motorB1, 200); analogWrite(motorB2, 0); } /**********************Backward Right************************/ //If state is equal with letter 'J', car will go backward right else if (state == 'J') { analogWrite(motorA1, 0); analogWrite(motorA2, vSpeed); analogWrite(motorB1, 0); analogWrite(motorB2, 200); } /***************************Left*****************************/ //If state is equal with letter 'L', wheels will turn left else if (state == 'L') { analogWrite(motorA1, 0); analogWrite(motorA2, 0); analogWrite(motorB1, 200); analogWrite(motorB2, 0); } /***************************Right*****************************/ //If state is equal with letter 'R', wheels will turn right else if (state == 'R') { analogWrite(motorA1, 0); analogWrite(motorA2, 0); analogWrite(motorB1, 0); analogWrite(motorB2, 200); } /************************Lights*****************************/ //If state is equal with letter 'W', turn leds on or of off else if (state == 'W') { if (i==0){ digitalWrite(lights, HIGH); i=1; } else if (i==1){ digitalWrite(lights, LOW); i=0; } state='n'; } /**********************Horn sound***************************/ //If state is equal with letter 'V', play (or stop) horn sound else if (state == 'V'){ if (j==0){ tone(buzzer, 1000);//Speaker on j=1; } else if (j==1){ noTone(buzzer); //Speaker off j=0; } state='n'; } /************************Stop*****************************/ //If state is equal with letter 'S', stop the car else if (state == 'S'){ analogWrite(motorA1, 0); analogWrite(motorA2, 0); analogWrite(motorB1, 0); analogWrite(motorB2, 0); } /***********************Battery*****************************/ //Read battery voltage every 10sec. currentMillis = millis(); if(currentMillis - (previousMillis) > (interval)) { previousMillis = currentMillis; //Read voltage from analog pin A0 and make calibration: voltage = (analogRead(A0)*5.015 / 1024.0)*11.132; //Calculate percentage... perVolt = (voltage*100)/ maxBattery; if (perVolt<=75) { level=0; } else if (perVolt>75 && perVolt<=80) { level=1; } // Battery level else if (perVolt>80 && perVolt<=85) { level=2; } //Min ------------------------ Max else if (perVolt>85 && perVolt<=90) { level=3; } // | 0 | 1 | 2 | 3 | 4 | 5 | > else if (perVolt>90 && perVolt<=95) { level=4; } // ------------------------ else if (perVolt>95) { level=5; } Serial.println(level); } }