martes, 8 de diciembre de 2015

VEHICULO ARDUINO CONTROLADO POR BLUETOOTH

Lista de componentes:



1.- Placa Protoboard

2.- Placa Arduino Uno
3.- Placa bluetooth HCO5 Ó HC06
4.- Chasis vehículo con dos motores
5.- Puente H conocido tambien como L293D
6.- Sensor ultrasonidos HC SR04



Cables de conexión y dos pilas de 9 V, una para el puente H y otra para el Arduino.







Conexión de la placa Bluetooth







Conexion entre la placa Arduino Uno y el puente H





Conexiones del puente H (L293N)



Programa Arduino (copiar todo el texto de color azul):



/* CONTROL VEHICULO DOS MOTORES POR BLUETOOTH

CON VARIACION DE VELOCIDAD
Germán Alonso

  ARDUINO   L293D(Puente H)        
 5          10
 6          15
 9          7
 10         2
 5V         1, 9, 16
 GND        4, 5, 12, 13

 El motor 1 se conecta a los pines 3 y 6 del Puente H
 El motor 2 se conecta a los pines 11 y 14 del Puente H

 La fuente de alimentación de los Motores se conecta a tierra y
 el positivo al pin 8 del puente H. 

 Conexión del Modulo Bluetooth HC-06 y el Arduino
 ARDUINO    Bluetooth HC-06 
 0 (RX)       TX
 1 (TX)       RX
 5V             VCC
 GND         GND
 !!Cuidado!! Las conexiones de TX y RX al modulo Bluetooth deben estar desconectadas
 en el momento que se realiza la carga del codigo (Sketch) al Arduino.

 Conexion Sensor Ultrasonido HC-SR04
 ARDUINO    Ultrasonido HC-SR04 
 2            Echo
 3            Trig
 5V         VCC
 GND     Gnd
 */
int izqA = 5; 
int izqB = 6; 
int derA = 9; 
int derB = 10; 
int vel = 75;            // Velocidad de los motores (entre 0-255)
int estado = 'g';         // inicia estado como detenido



int pecho = 2;            // define el pin 2 como (pecho) para el Ultrasonido

int ptrig = 3;            // define el pin 3 como (ptrig) para el Ultrasonido
int duracion, distancia;  // para Calcular distacia



void setup()  { 

  Serial.begin(9600);    // inicia el puerto serial para comunicacion con el Bluetooth
  pinMode(derA, OUTPUT);
  pinMode(derB, OUTPUT);
  pinMode(izqA, OUTPUT);
  pinMode(izqB, OUTPUT);
  
  pinMode(pecho, INPUT);   // define el pin 2 como entrada (pecho) 
  pinMode(ptrig,OUTPUT);   // define el pin 3 como salida  (ptrig) 
  pinMode(13,OUTPUT);
  pinMode(12,OUTPUT);
  pinMode(11,OUTPUT);



void loop()  { 




  if(Serial.available()>0){        // lee el bluetooth y almacena en estado

    estado = Serial.read();
  }
  
// Control de velocidad



  if(estado=='1'){          // Velocidad a 75 

vel=75; 
  }
  if(estado=='2'){          // Velocidad a 130 
vel=130; 
  }
  if(estado=='3'){          // Velocidad a 180 
vel=180; 
  }
  if(estado=='4'){          // Velocidad a 255 
vel=255; 
  }
  
//Controles de la marcha
    if(estado=='a'){     // Boton marcha al Frente
    analogWrite(derB, 0);     
    analogWrite(izqB, 0); 
    analogWrite(derA, vel);  
    analogWrite(izqA, vel);       
  }
  if(estado=='b'){          // Boton giro a la izquierda 
    analogWrite(derB, 0);     
    analogWrite(izqB, 0); 
    analogWrite(derA, 0);  
    analogWrite(izqA, vel);      
  }
  if(estado=='c'){         // Boton Parar
    analogWrite(derB, 0);     
    analogWrite(izqB, 0); 
    analogWrite(derA, 0);    
    analogWrite(izqA, 0); 
  }
  if(estado=='d'){          // Boton giro a la derecha
    analogWrite(derB, 0);     
    analogWrite(izqB, 0);
    analogWrite(izqA, 0);
    analogWrite(derA, vel);  
  } 



  if(estado=='e'){          // Boton marcha atras

    analogWrite(derA, 0);    
    analogWrite(izqA, 0);
    analogWrite(derB, vel);  
    analogWrite(izqB, vel);      
  }
  //Activación de marcha de forma autonoma y testeando la distancia para evitar obstaculos
  if (estado =='f'){          // Boton ON,  se mueve testeando la distancia 
  
     digitalWrite(ptrig, HIGH);   
     delay(0.01);
     digitalWrite(ptrig, LOW);
     
     duracion = pulseIn(pecho, HIGH);              // Lee el tiempo del Echo
     distancia = (duracion/2) / 29;            // calcula la distancia en centimetros
     delay(10); 
     
     if (distancia <= 15 && distancia >=2){    // si la distancia es menor de 15cm
        digitalWrite(13,HIGH);                 // Enciende LED ROJO
        
        analogWrite(derB, 0);                  // Parar los motores por 200 mili segundos
        analogWrite(izqB, 0); 
        analogWrite(derA, 0);    
        analogWrite(izqA, 0); 
        delay (200);
        
        analogWrite(derB, vel);               // Marcha atras durante 500 mili segundos
        analogWrite(izqB, vel); 
        delay(500);           
        
        analogWrite(derB, 0);                // Girar durante 1100 milisegundos   
        analogWrite(izqB, 0); 
        analogWrite(derA, 0);  
        analogWrite(izqA, vel);  
        delay(1100);
        
        digitalWrite(13,LOW);                //Apaga el LED ROJO
     }
     else{                   // Si no hay obstaculos se desplaza al frente  
         analogWrite(derB, 0);     
         analogWrite(izqB, 0); 
         analogWrite(derA, vel);  
         analogWrite(izqA, vel); 
     }
  }
  if(estado=='g'){          // Boton OFF, detiene los motores no hace nada 
     analogWrite(derB, 0);     
     analogWrite(izqB, 0); 
     analogWrite(derA, 0);    
     analogWrite(izqA, 0);
  }

}


Imagen del proyecto ya montado










Y por ultimo, para el control del vehículo, se debe utilizar mi aplicación gratuita: 


BLUETOOTH CONTROL 

Enlace a mi tienda en Google Play aqui



¿Te ha gustado este tutorial?
Colabora con nosotros y haz una donación:
DONAR