carro controlado con modulo bluetooth HC-05 y L293 D

PROYECTOS » CARRO DOS LLANTAS L293D 

Pasos para su montaje

Paso 1. Montamos los 4 motores con los cables correspondientes. Para la unión de los cables utilizamos cinta aislante o los soldamos a los bornes metálicos. Podemos probar primero si los motores funcionan antes de colocar en el chasis.


Conectamos los cables a los motores, consejo: conectarlos todos de la misma forma.

Paso 2. Sujetarlos al chasis. Colocamos los motores usando las piezas que vienen para ello o podemos también pegar los motores al chasis con cola termofusible, una vez hecho esto, aprovechamos para colocar las tuercas de extensión que nos van a servir para ajustar la parte superior del chasis. Si optáis por pegar los motores, tened en cuenta que estén bien alineados, para no tener problemas con el movimento del coche.


Chasis con los 4 motores y las tuercas de extensión

Paso 3. Antes de colocar la parte superior del chasis, sujetamos con unos tornillos la placa de Arduino. Utilizamos los agujeros que lleva el chasis.

Chasis superior con la placa Arduino atornillada

Chasis terminado de montar.

Paso 4. Terminamos de montar el chasis. Colocamos la parte superior y atornillamos. 

Paso 5. Para controlar el robot necesitamos la placa Arduino y el controlador de los motores, utilizaremos el Shield controlador de motor L293D, que es perfecto para conectar los 4 motores y el módulo de bluetooth. Lo colocamos sobre la placa no.

Controlador de motor L293D sobre el Arduino

Paso 6. Conectamos los cables de los motores al controlador. Dependiendo de la conexión que hagamos el giro de las ruedas puede variar. Esto lo podemos controlar con la programación o cambiando los cables de la conexión para invertir el sentido de giro de los motores.

Conectar los cables al controlador

Paso 7. Conectamos el módulo bluetooth HC-05. Utilizamos los pines RX y TX, están cubiertos con el modulo Shield, por lo que soldamos dos cables a estos pines. Y para la alimentación del módulo utilizamos los pines de los servos.

Conectar el modulo bluetooth

Paso 8. Colocamos las ruedas. Si los cables de los motores chocan con las ruedas podemos sujetarlos con un poco de cinta aislante.

Paso 9. Para la alimentación tanto del Arduino como de L293D utilizaremos la alimentación de 12 voltios el cual se obtiene con una fuente de alimentación de 12V:

por lo que la alimentacion quedaria de la siguiente manera

OJO: Si para la alimentación de los motores utilizamos una batería 9 voltios y el arduino con una alimentación aparte también de 6 o 9 voltioslo que se aria es retirar el jumper regulador ya que los motores no se alimentarán a través de la placa Arduino. Retirar el jumper nos permite una alimentación externa de los motores. El módulo de bluetooth se alimentaria a partir de la placa Arduino ya que los servos se alimentan directamente de la placa Arduino.

Eliminar el jumper para utilizar una fuente externa de alimentación. Siempre y cuando su circuito fuera así:

si no asen esto dejen todo en su lugar :

Siguiendo el paso 09 :Unimos el cable que hemos preparado a los terminales del controlador del motor, el de tierra (negro) al GND y el de alimentación (rojo) ala fuente de alimentación de 12V En este caso el blanco es el de tierra y el amarillo es el de alimentación VCC 12 V.


Paso 10. Vamos con la programación. Para la conexión del módulo de bluetooth hemos utilizado los pines TX (cable blanco) y RX (cable marrón), son los pines de transmisión y recepción de datos que son los pines A4 y A5 respectivamente para Arduino. Son compartidos con el USB de Arduino, por lo que no podemos tener conectado el módulo bluetooth para subir el programa. Desconectamos el cable negro y rojo del módulo bluetooth y conectar el USB del PC.

Conectamos Arduino al PC y colocamos el coche sobre una caja para dejar que las ruedas giren libremente.

Probemos primero el giro de las ruedas:

 #include <AFMotor.h>

AF_DCMotor Motor1(1);

AF_DCMotor Motor2(2);

AF_DCMotor Motor3(3);

AF_DCMotor Motor4(4);

 void setup() {

  WMBT.begin(38400);

  Serial.begin(9600);

  Motor1.run(RELEASE);

  Motor2.run(RELEASE);

  Motor3.run(RELEASE);

  Motor4.run(RELEASE);

}

void loop() {

//ADELANTE

    Motor1.setSpeed(100);

    Motor1.run(FORWARD); 

    Motor2.setSpeed(100);

    Motor2.run(FORWARD);

    Motor3.setSpeed(100);

    Motor3.run(FORWARD);

    Motor4.setSpeed(100);

    Motor4.run(FORWARD);

delay(5000); 


    // retroceder

    Motor1.setSpeed(100);

    Motor1.run(BACKWARD); 

    Motor2.setSpeed(100);

    Motor2.run(BACKWARD);

    Motor3.setSpeed(100);

    Motor3.run(BACKWARD);

    Motor4.setSpeed(100);

    Motor4.run(BACKWARD);

delay(5000); 


  //derecha

    Motor1.setSpeed(100);

    Motor1.run(FORWARD); 

    Motor2.setSpeed(100);

    Motor2.run(FORWARD);

    Motor3.setSpeed(0);

    Motor3.run(RELEASE);

    Motor4.setSpeed(0);

    Motor4.run(RELEASE);

delay(5000); 


//izquierda

    Motor1.setSpeed(0);

    Motor1.run(RELEASE); 

    Motor2.setSpeed(0);

    Motor2.run(RELEASE);

    Motor3.setSpeed(100);

    Motor3.run(FORWARD);

    Motor4.setSpeed(100);

    Motor4.run(FORWARD);

delay(5000); 


  // adelante izquierda

    Motor1.setSpeed(100);

    Motor1.run(BACKWARD); 

    Motor2.setSpeed(100);

    Motor2.run(BACKWARD);

    Motor3.setSpeed(100);

    Motor3.run(FORWARD);

    Motor4.setSpeed(100);

    Motor4.run(FORWARD);

delay(5000); 


  //adelante derecha

    Motor1.setSpeed(100);

    Motor1.run(FORWARD); 

    Motor2.setSpeed(100);

    Motor2.run(FORWARD);

    Motor3.setSpeed(100);

    Motor3.run(BACKWARD);

    Motor4.setSpeed(100);

    Motor4.run(BACKWARD);

delay(5000); 

  }

Comprobamos que todas las ruedas giran en el sentido correcto, si no es así, cambiar los cables de los motores que correspondan.


Paso 11. Programar el módulo bluetooh.

Antes hay que instalar la aplicación bluetooth Serial Controller que podemos conseguir en google play.

primero realizamos el codigo en arduino

luego de aver realizado el codigo tenemos que verificar si compila nuestro programa para eso verificamos  aqui:

para realizarlo en físico luego de haber realizado y conectado todo tus componentes colocar en tu pc el Arduino y poner subir para que se pueda ver el funcionamiento:

luego de haber subido el trabajo te saldrá así:

Vinculamos nuestro móvil con el coche y configuramos los botones, «w» hacia delante, «s» retroceder, «d» derecha, «a» izquierda y «e» paro ,en la aplicación bluetooth Serial Controller. Ya podemos probar el funcionamiento de nuestro coche.


video de funcionamiento:

código para simulación real:

#include <AFMotor.h>

AF_DCMotor Motor1(1);

AF_DCMotor Motor2(2);

AF_DCMotor Motor3(3);

AF_DCMotor Motor4(4);

#include <SoftwareSerial.h>

SoftwareSerial WMBT(A4,A5); // RX, TX recorder que se cruzan

int leer = 0;

void setup() {

  WMBT.begin(38400);

  Serial.begin(9600);

  Motor1.run(RELEASE);

  Motor2.run(RELEASE);

  Motor3.run(RELEASE);

  Motor4.run(RELEASE);

}

void loop() {

  if (WMBT.available()){     

     leer = WMBT.read();

     switch(leer){

      case 'w':

        adelante();

        WMBT.println("Adelante");

        break;

      case 's':

        retroceder();

        WMBT.println("Reversa");

        break;

      case 'a':

        izquierda();

        WMBT.println("Izquierda");

        break;

      case 'd':

        derecha();

        WMBT.println("Derecha");

        break;

        case 'c':

        adelanteizquierda();

        WMBT.println("AdelanteIzquierda");

        break;

      case 'f':

        adelantederecha();

        WMBT.println("Adelante Derecha");

        break;

      case 'e':

        detener();

        WMBT.println("Detener");

        break;      

    }

  }

}

  // velocidad maxima es 255

  // Hacia delante

  void adelante(){

    Motor1.setSpeed(100);

    Motor1.run(FORWARD); 

    Motor2.setSpeed(100);

    Motor2.run(FORWARD);

    Motor3.setSpeed(100);

    Motor3.run(FORWARD);

    Motor4.setSpeed(100);

    Motor4.run(FORWARD);

  }

    // retroceder

  void retroceder(){

    Motor1.setSpeed(100);

    Motor1.run(BACKWARD); 

    Motor2.setSpeed(100);

    Motor2.run(BACKWARD);

    Motor3.setSpeed(100);

    Motor3.run(BACKWARD);

    Motor4.setSpeed(100);

    Motor4.run(BACKWARD);

  }

  //derecha

  void derecha(){

    Motor1.setSpeed(100);

    Motor1.run(FORWARD); 

    Motor2.setSpeed(100);

    Motor2.run(FORWARD);

    Motor3.setSpeed(0);

    Motor3.run(RELEASE);

    Motor4.setSpeed(0);

    Motor4.run(RELEASE);

}

//izquierda

void izquierda(){

    Motor1.setSpeed(0);

    Motor1.run(RELEASE); 

    Motor2.setSpeed(0);

    Motor2.run(RELEASE);

    Motor3.setSpeed(100);

    Motor3.run(FORWARD);

    Motor4.setSpeed(100);

    Motor4.run(FORWARD);

}

  // adelante izquierda

  void adelanteizquierda(){

    Motor1.setSpeed(100);

    Motor1.run(BACKWARD); 

    Motor2.setSpeed(100);

    Motor2.run(BACKWARD);

    Motor3.setSpeed(100);

    Motor3.run(FORWARD);

    Motor4.setSpeed(100);

    Motor4.run(FORWARD);

  }

  //adelante derecha

  void adelantederecha(){

    Motor1.setSpeed(100);

    Motor1.run(FORWARD); 

    Motor2.setSpeed(100);

    Motor2.run(FORWARD);

    Motor3.setSpeed(100);

    Motor3.run(BACKWARD);

    Motor4.setSpeed(100);

    Motor4.run(BACKWARD);

  }

  // parar

  void detener(){

    Motor1.setSpeed(0);

    Motor1.run(RELEASE); 

    Motor2.setSpeed(0);

    Motor2.run(RELEASE);

    Motor3.setSpeed(0);

    Motor3.run(RELEASE);

    Motor4.setSpeed(0);

    Motor4.run(RELEASE);

  }