1. El Octavo Bit
  2. / Arduino
  3. / Proyectos para Arduino
  4. / Robot Arduino controlado por bluetooth, con 4 ruedas

Robot Arduino controlado por bluetooth, con 4 ruedas

| Actualizado:
Comentarios: 0

Robot Arduino controlado por bluetooth, con 4 ruedas
Robot Arduino controlado por bluetooth, con 4 ruedas

En un artículo anterior construimos un robot arduino controlado por bluetooth con dos ruedas y el módulo controlador L298N, en este caso utilizaremos el controlador de motor L293D que permite la conexión de 4 motores reductores.

Es interesante que antes de comenzar a realizarlo se vea:

Material necesario:

  • Placa Arduino
  • Chasis para el coche 4WD, podemos comprarlo o prepararlo nosotros mismos con una tabla.
  • 4 ruedas
  • Módulo controlador de motores L293D
  • Módulo bluetooth HC-06 Baterías, en este caso utilizaremos una pila de 9V para alimentar la placa y una batería de LIPO para alimentar el controlador L293D
  • Cables Tornillos y tuercas
  • Soldador, tendremos que soldar dos pines del controlador para poder conectar el módulo HC-06

Esquema:

El módulo bluetooth tiene 4 pines. Conectamos el RX con el pin digital 1 y el TX con el pin digital 0, ambos debemos soldarlos a la placa del controlador. VCC es el cable de alimentación (rojo) y GND (negro) el de tierra, para ellos utilizaremos la parte de conexión para servos.

Esquema para conexión de Arduino con el módulo controlador L293D y bluetooth para hacer un robot

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.

Soldar los cables a los motores.
Conectamos los cables a los motores.

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 4 tuercas de extensión.
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.

Placa de Arduino atornillada en la parte superior del chasis
Chasis superior con la placa Arduino atornillada

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

Chasis superior atornillado a la parte inferior
Chaiss terminado de montar

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 Arduino.

Colocar el controlador L293D sobre la placa Arduino
Controlador de motor L293D sobre la placa 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.

Se conectan los cables de los motores al controlador
Conectar los cables al controlador

Paso 7. Conectamos el módulo bluetooth HC-06. 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.

Conectamos el módulo bluetooth
Conectar el módulo bluetooth.

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

Robot Arduino casi terminado

Paso 9. Para la alimentación de los motores utilizaremos una batería LIPO, por lo que podemos 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 alimenta a partir de la placa Arduino ya que los servos se alimentan directamente de la placa Arduino.

Quitamos el jumper para poder utilizar una batería para alimentar los motores
Eliminar el jumper para utilizar una fuente externa de alimentación.

Para la conexión de la batería hemos preparado un cable con terminales XT60 macho, para poder unir la batería a los terminales del controlador

Cable que hemos preparado para conectar la batería de LIPO
Bateria LIPO con terminal XT60 y cable preparado con terminal XT60 Macho

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) al de alimentación.

Conexión de los cables de la batería al controlador
En este caso el blanco es el de tierra y el amarillo es el de alimentación

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

Conectar el coche al PC para subir el programa
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() {
  Motor1.run(RELEASE);
  Motor2.run(RELEASE);
  Motor3.run(RELEASE);
  Motor4.run(RELEASE);
}

void loop() {
  // velocidad maxima es 255
  
  // 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);

  // Hacia delante
  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);
  
  // 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);
  
  // 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 controller que podemos conseguir en Google Play. (Hay un tutorial explicando el funcionamiento del módulo HC-06 y la instalación de la aplicación)

#include "AFMotor.h"
AF_DCMotor Motor1(1);
AF_DCMotor Motor2(2);
AF_DCMotor Motor3(3);
AF_DCMotor Motor4(4);

void setup() {
  Serial.begin(9600);
  Motor1.run(RELEASE);
  Motor2.run(RELEASE);
  Motor3.run(RELEASE);
  Motor4.run(RELEASE);
}

void loop() {
   if (Serial.available()){
    char dato=Serial.read();
    Serial.print("Dato recibido: ");
    Serial.println(dato);
    switch(dato){
      case 'a':
        adelante();
        break;
      case 'r':
        retroceder();
        break;
      case 'd':
        derecha();
        break;
      case 'i':
        izquierda();
        break;
      case 'p':
        para();
        break;
    }    
  }
}

  // velocidad maxima es 255
  // 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);
  }

  // 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);
  }
  // izquierda
  void 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);
  }
  // derecha
  void 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);
  }
  // parar
  void para(){
    Motor1.setSpeed(0);
    Motor1.run(RELEASE); 
    Motor2.setSpeed(0);
    Motor2.run(RELEASE);
    Motor3.setSpeed(0);
    Motor3.run(RELEASE);
    Motor4.setSpeed(0);
    Motor4.run(RELEASE);
  }

Recordad que el módulo bluetooth lo tenemos desconectado; ahora tenemos que subir el programa.

Volvemos a conectar el módulo bluetooth TH-06
Volver a conectar el módulo blutooh

Una vez subido el programa, desconectamos el cable USB. Volvemos a conectar el módulo bluetooth, colocamos la batería de 9V para alimentar Arduino y nos aseguramos de que la batería de alimentación del controlador está bien puesta.

Conectamos la batería de Arduino y del controlador y vinculamos el teléfono con el robot

Vinculamos nuestro móvil con el coche y configuramos los botones, «a» hacia delante, «r» retroceder, «d» derecha, «i» izquierda y «p» paro. Ya podemos probar el funcionamiento de nuestro coche.

Artículos que te pueden interesar

Joystick analógico y Arduino
¿Cómo utilizar un joystick analógico con Arduino?

¿Cómo utilizar un joystick analógico con Arduino?

| Actualizado:
Comentarios: 0

En este post veremos la conexión de un joystick a la placa Arduino. Primero se comprobara hacia donde se mueve sacando los datos por el serial monitor y en un segundo proyecto, según el movimiento del joystick encenderá un led.…

Medir la inclinación con Arduino
Medir la inclinación con Arduino y el sensor SW-520D

Medir la inclinación con Arduino y el sensor SW-520D

| Actualizado:
Comentarios: 0

Realizamos un ejemplo básico, donde se puede apreciar que la lectura hecha por el sensor se recibe en un pin de entrada digital de la placa (hemos usado el nº 7). Material necesario: Arduino Uno o similar. Protoboard. Cables Sensor…

Control Remoto en Arduino
Control Remoto en Arduino con la librería IRremote

Control Remoto en Arduino con la librería IRremote

| Actualizado:
Comentarios: 0

¿Qué te parece utilizar un mando para apagar o encender la luz? En este post vamos a utilizar un mando a distancia y un sensor infrarrojo con el que encender o apagar un led. Son elementos que podrás aplicar en…

Módulo bluetooth HC-06 con Arduino
Tutorial básico de uso del módulo bluetooth HC-06 en Arduino

Tutorial básico de uso del módulo bluetooth HC-06 en Arduino

| Actualizado:
Comentarios: 0

El objetivo de este tutorial es poder añadir un módulo bluetooth a nuestra placa de Arduino y poder comunicarnos con un teléfono móvil Android a través de una aplicación. Primero veremos cómo conectarlo al móvil y después, cómo configurar el…

Comentarios - 0

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *