carro controlado con modulo bluetooth HC 05 y L298N 

PROYECTOS » CARRO DOS LLANTAS L298N 

Pasos para su montaje

Paso 1. Montamos los 2 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 L298N, que es perfecto para conectar los 2 motores y el módulo de bluetooth. Lo colocamos sobre la placa no.

Controlador de motor L298N al 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 moto

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 L298N utilizaremos la alimentación de 6 voltios y 12 o 9 voltios respectivamente .donde el de 12 voltios lo obtenemos con una fuente de alimentación de 12V:

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 negro es el de tierra y el rojo 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.

Paso 10. 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:

luego de haber compilado nuestro trabajo copiamos la dirección para poder pegar en nuestro proteus

primero que todo realizamos el proyecto en proteus:

luego de haber realizado el código pasamos a nuestro proteus:

realizamos nuestro proteus colocando todo los componentes a utilizar

construimos nuestro proyecto en proteus

vemos el funcionamiento:

primero damos clip en la tarjeta del Arduino y ponemos editar propiedades o simplemente damos doble clip y donde dice program file: colocamos la dirección y luego aceptar.

psdta: ayi en la imagen esta señalada en donde debemos pegar la dirección copiada de nuestro código.

vemos como funciona :)

código de proteus:

//motor 1 

int in1 = 13;

int in2 = 12;

int pwmMotor1 = 6;

//motor 2

int in3 = 10;

int in4 = 11;

int pwmMotor2 = 5;

#define LEDS_DELANTE 4

#define LEDS_ATRAS 7

#define buzzer 9 // pin altavoz


int leer = 0;

int velocidad=255;

//Funciones


void setup() {


  Serial.begin(9600);

  pinMode(in3, OUTPUT);

  pinMode(in4, OUTPUT);

  pinMode(pwmMotor1, OUTPUT);

  

  pinMode(in2, OUTPUT);

  pinMode(in1, OUTPUT);

  pinMode(pwmMotor2, OUTPUT);

  


  pinMode(LEDS_DELANTE, OUTPUT);

  pinMode(LEDS_ATRAS, OUTPUT);

  pinMode(buzzer, OUTPUT);


  digitalWrite(in3, LOW);

  digitalWrite(in4, LOW);

  analogWrite(pwmMotor2, 0);

  

  digitalWrite(in2, LOW);

  digitalWrite(in1, LOW);

  analogWrite(pwmMotor1, 0);

  


  pinMode(LEDS_DELANTE, LOW);

  pinMode(LEDS_ATRAS, LOW); 


}

void loop() 

{

  

  if(Serial.available()>0){

    leer = Serial.read();

    switch(leer){

      case 'w':

        adelante();

        Serial.println("Adelante");

        break;

      case 's':

        reversa();

        Serial.println("Reversa");

        break;

      case 'a':

        izquierda();

        Serial.println("Izquierda");

        break;

      case 'd':

        derecha();

        Serial.println("Derecha");

        break;

        case 'c':

        adelanteizquierda();

        Serial.println("AdelanteIzquierda");

        break;

      case 'f':

        adelantederecha();

        Serial.println("Adelante Derecha");

        break;

      case 'e':

        detener();

        Serial.println("Detener");

        break;

        

        case 't':

        claxon();

        Serial.println("Claxon");

        break;

        case 'r':

        apagarclaxon();

        Serial.println("Apagar Claxon");

        break;

        case 'l':

        prenderfocos();

        Serial.println("Prender Focos");

        break;     

        case 'o':

        apagarfocos();

        Serial.println("Apagar Focos");

        break;

    }

}

}


void adelante(){

 

  digitalWrite(in3,HIGH);

  digitalWrite(in4, LOW);

  analogWrite(pwmMotor2, velocidad);

  

  digitalWrite(in1, LOW);

  digitalWrite(in2, HIGH);

  analogWrite(pwmMotor1, velocidad);


}

void reversa(){

  digitalWrite(in3, LOW);

  digitalWrite(in4, HIGH);

  analogWrite(pwmMotor2, velocidad); 

  

  digitalWrite(in1, HIGH);

  digitalWrite(in2, LOW);

  analogWrite(pwmMotor1, velocidad);


}

void derecha(){

  digitalWrite(in3, LOW);

  digitalWrite(in4, LOW);

  analogWrite(pwmMotor2, 0);

  

  digitalWrite(in1, LOW);

  digitalWrite(in2, HIGH);

  analogWrite(pwmMotor1, velocidad);

}


void izquierda(){

  digitalWrite(in3,HIGH);

  digitalWrite(in4, LOW);

  analogWrite(pwmMotor2,velocidad);

  

  digitalWrite(in2, LOW);

  digitalWrite(in1, LOW);

  analogWrite(pwmMotor1, 0);

}

// ADELANTE E IZQUIERDA

void adelanteizquierda(){        

digitalWrite(in3, HIGH);

digitalWrite(in4, LOW);

analogWrite(pwmMotor2,velocidad);

        

digitalWrite(in1, HIGH);

digitalWrite(in2, LOW);

analogWrite(pwmMotor1,velocidad-50);//ponemos el misma potencia pero quitamos 50        

void adelantederecha(){

        // ADELANTE Y DERECHA

digitalWrite(in3, LOW);

digitalWrite(in4, HIGH);

analogWrite(pwmMotor2,velocidad-50);//ponemos el misma potencia pero qui

        

digitalWrite(in1, LOW);

digitalWrite(in2, HIGH);

analogWrite(pwmMotor1,velocidad);

      }

void detener(){

  digitalWrite(in3, LOW);

  digitalWrite(in4, LOW);

  analogWrite(pwmMotor2, 0);

  

  digitalWrite(in2, LOW);

  digitalWrite(in1, LOW);

  analogWrite(pwmMotor1, 0);

}

void claxon(){

 

  digitalWrite(buzzer, HIGH);

  tone(buzzer,980); // tone (PIN DEL ZUMBADOR, FREQÜÉNCIA); 

}

void apagarclaxon(){

digitalWrite(buzzer, LOW); 

noTone(buzzer); 

}

void prenderfocos(){

digitalWrite(LEDS_DELANTE, HIGH);//prender focos de adelante y atras

digitalWrite(LEDS_ATRAS, HIGH);

}

void apagarfocos(){

 

digitalWrite(LEDS_DELANTE, LOW);//prender focos de adelante y atras

digitalWrite(LEDS_ATRAS, LOW);

}

link de descarga de código y proteus:

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 <SoftwareSerial.h>

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

//motor 1 

int in1 = 13;

int in2 = 12;

int pwmMotor1 = 6;

//motor 2

int in4 = 11;

int in3 = 10;

int pwmMotor2 = 5;

#define LEDS_DELANTE 4

#define LEDS_ATRAS 7

#define buzzer 9 // pin altavoz


int leer = 0;

int velocidad=255;

//Funciones


void setup() {


  WMBT.begin(38400);// modulo bluetooth cunado esta disponible

  Serial.begin(9600);

  pinMode(in3, OUTPUT);

  pinMode(in4, OUTPUT);

  pinMode(pwmMotor2, OUTPUT);

  

  pinMode(in2, OUTPUT);

  pinMode(in1, OUTPUT);

  pinMode(pwmMotor1, OUTPUT);

  


  pinMode(LEDS_DELANTE, OUTPUT);

  pinMode(LEDS_ATRAS, OUTPUT);

  pinMode(buzzer, OUTPUT);


  digitalWrite(in3, LOW);

  digitalWrite(in4, LOW);

  analogWrite(pwmMotor2, 255);

  

  digitalWrite(in2, LOW);

  digitalWrite(in1, LOW);

  analogWrite(pwmMotor1, 255);

  


  pinMode(LEDS_DELANTE, LOW);

  pinMode(LEDS_ATRAS, LOW); 


}


void loop() 

{

  if (WMBT.available()){     

    leer = WMBT.read();

    switch(leer){

      case 'w':

        adelante();

        WMBT.println("Adelante");

        break;

      case 's':

        reversa();

        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;

        

        case 't':

        claxon();

        WMBT.println("Claxon");

        break;

        case 'r':

        apagarclaxon();

        WMBT.println("Apagar Claxon");

        break;   

        case 'l':

        prenderfocos();

        WMBT.println("Prender Focos");

        break;  

        case 'o':

        apagarfocos();

        WMBT.println("Apagar Focos");

        break;

    }

  }

}

void adelante(){

 

  digitalWrite(in3,HIGH);

  digitalWrite(in4, LOW);

  analogWrite(pwmMotor2, velocidad);

  

  digitalWrite(in1, LOW);

  digitalWrite(in2, HIGH);

  analogWrite(pwmMotor1, velocidad);


}

void reversa(){

  digitalWrite(in3, LOW);

  digitalWrite(in4, HIGH);

  analogWrite(pwmMotor2, velocidad); 

  

  digitalWrite(in1, HIGH);

  digitalWrite(in2, LOW);

  analogWrite(pwmMotor1, velocidad);


}

void derecha(){

  digitalWrite(in3, LOW);

  digitalWrite(in4, LOW);

  analogWrite(pwmMotor2, 0);

  

  digitalWrite(in1, LOW);

  digitalWrite(in2, HIGH);

  analogWrite(pwmMotor1, velocidad);

}


void izquierda(){

  digitalWrite(in3,HIGH);

  digitalWrite(in4, LOW);

  analogWrite(pwmMotor2,velocidad);

  

  digitalWrite(in2, LOW);

  digitalWrite(in1, LOW);

  analogWrite(pwmMotor1, 0);

}

// ADELANTE E IZQUIERDA

void adelanteizquierda(){        

digitalWrite(in3, HIGH);

digitalWrite(in4, LOW);

analogWrite(pwmMotor2,velocidad);

        

digitalWrite(in1, HIGH);

digitalWrite(in2, LOW);

analogWrite(pwmMotor1,velocidad-50);//ponemos el misma potencia pero quitamos 50        

void adelantederecha(){

        // ADELANTE Y DERECHA

digitalWrite(in3, LOW);

digitalWrite(in4, HIGH);

analogWrite(pwmMotor2,velocidad-50);//ponemos el misma potencia pero qui

        

digitalWrite(in1, LOW);

digitalWrite(in2, HIGH);

analogWrite(pwmMotor1,velocidad);

      }

void detener(){

  digitalWrite(in3, LOW);

  digitalWrite(in4, LOW);

  analogWrite(pwmMotor2, 0);

  

  digitalWrite(in2, LOW);

  digitalWrite(in1, LOW);

  analogWrite(pwmMotor1, 0);

}

void claxon(){

 

  digitalWrite(buzzer, HIGH);

  tone(buzzer,980); // tone (PIN DEL ZUMBADOR, FREQÜÉNCIA); 

}

void apagarclaxon(){

digitalWrite(buzzer, LOW); 

noTone(buzzer); 

}

void prenderfocos(){

digitalWrite(LEDS_DELANTE, HIGH);//prender focos de adelante y atras

digitalWrite(LEDS_ATRAS, HIGH);

}

void apagarfocos(){

 

digitalWrite(LEDS_DELANTE, LOW);//prender focos de adelante y atras

digitalWrite(LEDS_ATRAS, LOW);

}