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);
}