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

Medir el voltaje de una pila con Arduino

Medir el voltaje de una pila con Arduino

| Actualizado:
Comentarios: 1

Es habitual que tengamos por casa un montón de pilas que, en ocasiones, no sabemos si están cargadas o se han gastado. Vamos a realizar un medidor de carga utilizando la placa de Arduino. El máximo que podemos medir es…

Servomotores con Arduino, servo SG90
Uso de servomotores con Arduino. Servo SG90

Uso de servomotores con Arduino. Servo SG90

| Actualizado:
Comentarios: 0

En este tutorial se explicará el funcionamiento y características de un servomotor, Servo SG90, así como la conexión con la placa Arduino y su utilización Contenido 1 Librería servo de Arduino 2 Esquema para su montaje 3 Código para girar…

Salidas analógicas en Arduino
Salidas analógicas en Arduino. Intensidad lumínica.

Salidas analógicas en Arduino. Intensidad lumínica.

| Actualizado:
Comentarios: 0

El objetivo de este proyecto es regular la intensidad de un led usando las salidas que soportan PWM y que corresponden a los pines digitales con el símbolo "~". En primer lugar, cambiaremos la intensidad de un solo led. Seguidamente,…

Sensor ultrasónico HC-SR04 y Arduino

Sensor ultrasónico HC-SR04 y Arduino

| Actualizado:
Comentarios: 0

El sensor HC-SR04 es un sensor de distancia de baja precisión basado en ultrasonidos. Se puede utilizar en multitud de proyectos, como sistema de detección de obstáculos para vehiculos o robots, sensores de presencia, etc. Contenido 1 ¿Cómo funciona el…

Comentarios - 0

Deja un comentario

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