Error con Proyecto Carro manejado por Bluetooth y 3 variables.

Buen Día.

Estoy terminando un proyecto final pero no me ha podido quedar al 100% funcional y aun no se que podría estar haciendo mal. El material que utilizo es el siguiente:

Arduino Leonardo (DFROBOT)
Puente H L298N (5V-36mA control y 5V-2A operativo) (Puente H doble L298N — Talos Electronics)
x2 Motores con motoreductor a 5v -70mA c/u
Sensor HC-SR04
Modulo Bluetooth RS232 HS-05 (Módulo Bluetooth RS232 HC-05 — Talos Electronics)
1 pila de 5V 4.5mA
1 Pila de Nokia antiguo de 3.7V 30uA

(Control) Móvil MotoE 2daG

Teoricamente el carro debería de manejarse por medio del sensor Ultrasonico detectando un objeto a unrango de 10 cm deteniendo el carro, dar reversa y girar para seguir hasta encontrar otro objeto y repetir el bucle, los problemas son los siguientes:

  1. El sensor ultrasonico no detecta (aquí pudiera deberse al ampere que requiere ya que según el datasheet me pide 40mA y estos sumados a los 2 motores y al puente H me falta corriente pues según mis cálculos necesito al menos 2.18A de los cuales solo tengo 4.53mA) sin embargo los motores y puente H funcionan con la corriente suministrada, pudiera montar 2 fuentes independientes sin necesidad de conectarlas en serie? la cuestión es que ahora las fuentes las tengo en serie conectadas a el plug del arduino y a la entrada del puente H de aquí estas comparten tierra común y el arduino es realimentado con la fuente interna del puente H por el pin Vin. si no hago esto simplemente no funcionan los motores.

2.- cuando estoy en pruebas conecto una fuente directa de 5V 2A por el USB o PLUG del arduino este me jala bien, sin embargo cuando conecto el modulo bluetooth este no me realiza las funciones que le pido desde la app, ya configure el bluetooth quedando a 9600 bps y como esclavo y no queda cambie las velocidades y aun no puedo hacer que arranque desde el móvil.

Alguna idea de como pueda solucionar esto? he estado 4 días seguidos buscando solución pero quizá no estoy buscando correctamente y por eso no he dado con la solución. :confused:

Código del programa con Bluetooth.

//Motor Derecha
int vel_motor_der =13;
int d1 = 12;
int d2 = 11;
//Motor Izquierda
int vel_motor_izq = 10;
int i1 = 9;
int i2 = 8;
//Sensor
int trig = 2;
int echo = 3;
long tiempo, distancia;
int estado = 'g';

void setup() {
Serial.begin(9600); //38400, etc...
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
pinMode(i1, OUTPUT);
pinMode(i2, OUTPUT);
pinMode(d1, OUTPUT);
pinMode(d2, OUTPUT);
}

void loop() {
if(Serial.available()){
estado = Serial.read();
}
if(estado=='a'){ //DERECHO
analogWrite(vel_motor_izq, 200);
analogWrite(vel_motor_der, 200);
digitalWrite(i2, LOW);
digitalWrite(i1, HIGH);
digitalWrite(d2, LOW);
digitalWrite(d1, HIGH);
}
if(estado=='b'){ //GIRO A LA IZQUIERDA
analogWrite(vel_motor_izq, 200);
analogWrite(vel_motor_der, 200);
digitalWrite(i1, HIGH);
digitalWrite(i2, LOW);
digitalWrite(d1, LOW);
digitalWrite(d2, LOW);
}
if(estado=='c'){ //PARAR MOTORES
analogWrite(vel_motor_izq, 200);
analogWrite(vel_motor_der, 200);
digitalWrite(i1, LOW);
digitalWrite(i2, LOW);
digitalWrite(d1, LOW);
digitalWrite(d2, LOW);
}
if(estado=='d'){ //GIRO DERECHA
analogWrite(vel_motor_izq, 200);
analogWrite(vel_motor_der, 200);
digitalWrite(i1, LOW);
digitalWrite(i2, LOW);
digitalWrite(d1, HIGH);
digitalWrite(d2, LOW);
}
if(estado=='e'){ //REVERSA
analogWrite(vel_motor_izq, 200);
analogWrite(vel_motor_der, 200);
digitalWrite(i1, LOW);
digitalWrite(i2, HIGH);
digitalWrite(d1, LOW);
digitalWrite(d2, HIGH);
}
if(estado=='f'){ //AUTOMATICO
digitalWrite(trig, LOW);
delayMicroseconds(5);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
tiempo=pulseIn(echo, HIGH);
distancia=int(0.017*tiempo);
delay(10);

if(distancia<=15 && distancia >=8){
analogWrite(vel_motor_izq, 200); //PARO
analogWrite(vel_motor_der, 200);
digitalWrite(i1, LOW);
digitalWrite(i2, LOW);
digitalWrite(d1, LOW);
digitalWrite(d2, LOW);
delay(1000);

analogWrite(vel_motor_izq, 255); //REVERSA
analogWrite(vel_motor_der, 255);
digitalWrite(i1, LOW);
digitalWrite(i2, HIGH);
digitalWrite(d1, LOW);
digitalWrite(d2, HIGH);
delay(500);

analogWrite(vel_motor_izq, 200); //GIRO
analogWrite(vel_motor_der, 200);
digitalWrite(i1, HIGH);
digitalWrite(i2, LOW);
digitalWrite(d1, LOW);
digitalWrite(d2, LOW);
delay(1100);
}
else{
analogWrite(vel_motor_izq, 200);
analogWrite(vel_motor_der, 200);
digitalWrite(i1, HIGH);
digitalWrite(i2, LOW);
digitalWrite(d1, HIGH);
digitalWrite(d2, LOW);
}
}
if(estado=='g'){ //AUTOMATICO OFF
analogWrite(vel_motor_izq, 200);
analogWrite(vel_motor_der, 200);
digitalWrite(i1, LOW);
digitalWrite(i2, LOW);
digitalWrite(d1, LOW);
digitalWrite(d2, LOW);
}
}