RobotBase con Arduino (BT) es un completo kit para construir una sencilla plataforma motriz, basada en Arduino UNO, con motores DC, driver de motores de alta eficiencia, conversor DC/DC para la alimentación y módulo de comunicaciones Bluetooth. Este montaje lo podrás controlar, vía Bluetooth, con una aplicación para tu smartphone o tablet Android.
Antes de empezar
Montar RobotBase con Arduino (BT) es una enriquecedora experiencia educativa que te permitirá entrar en el mundo de la robótica de la mano de la electrónica, mecánica y programación.
Importante: para montar este kit se requiere de unos conocimientos técnicos mínimos y de habilidades relacionadas con el manejo de ciertas herramientas. Si no estas seguro de poder hacerlo, pide ayuda. El correcto funcionamiento del robot depende de que seamos capaces de realizar todas estas labores con precisión. Este kit no es un juguete, es un material educativo que no está indicado para menores de 10 años y aún así, siempre bajo la supervisión de un adulto.
Herramientas.
Para realizar el montaje de este robot vamos a necesitar las siguientes herramientas
- Alicate de corte pequeño
- Alicate de puntas planas
- Alicate pelacables
- Destornillador de estrella con punta PH1
- Destornillador plano pequeño (2.5mm)
- Soldador de 30-40W (mejor si tiene control de temperatura)
- Estaño para soldar. Importante, que sea de buena calidad
Contenido del kit RobotBase con Arduino (BT)
El kit del RobotBase con Arduino (BT) consta de los siguientes elementos:
- Chasis de metacrilato transparente cortado por láser
- Placa controladora Arduino UNO Rev.3 (original)
- Motores y ruedas
- Cables de conexiones
- Conversor DC/DC
- Bluetooth HC-05
- Micro Shield controladora de motores DRV8835 de Pololu
- Interruptor
- Punteras
- Clavija de alimentación para la placa Arduino UNO
- Elementos mecánicos
- Tuercas y tornillos de M3
- Separadores hexagonales
- Rueda loca
Montaje del RobotBase con Arduino (BT)
Para comenzar con el ensamblado del robot vamos a soldar los cables que alimentan los motores y también los pines y clemas de la micro shield DRV8835 que van a hacer posible la conexión de la misma a la placa Arduino UNO, los motores y la entrada de alimentación.
Para conectar los motores necesitamos cuatro trozos de cable de unos 15cm. de longitud, a los que pelaremos 5mm. en cada extremo.
Los cables del motor los soldamos en los terminales de los mismos y una vez hecho esto, pasamos el cable por debajo de la abrazadera de plástico de sujeción del propio motor. Hay que repetir esta operación en ambos motores.
En la micro shield soldamos las tiras de pines y las clemas de conexión tal y como se muestra en la siguiente imagen
A continuación vamos a retirar los plásticos de protección que traen todas las piezas de la estructura. Esto hay que hacerlo tanto en el chasis como en las cuatro piezas que sirven como soporte de los motores.
Ahora vamos a colocar los motores en la parte inferior del chasis, de forma similar a como se muestra en la siguiente foto. Para sujetar los motores usaremos los soportes de plástico y cuatro tornillos de M3x25 con sus respectivas tuercas.
Situados los motores podemos atornillar el porta-pilas en la parte superior del chasis. Para ello usaremos dos tornillos de M3x10 con sus tuercas que fijaremos en dos de las ranuras horizontales, quedando las cabezas de los tornillos en el interior del porta-pilas y las tuercas en la parte inferior del chasis. Los tornillos se colocarán en los agujeros exteriores del porta-pilas y en las ranuras horizontales del chasis:
También en la parte superior del chasis, colocaremos el interruptor en el agujero rectangular que hay entre los dos motores y justo delante del portapilas. Tendremos que ejercer un poco de presión para que quede bien encajado.
Después del interruptor llega el turno de colocar la placa Arduino UNO con tres separadores. En primer lugar se fijan los separadores al chasis con tres tornillos de M3x10.
Una vez fijados los separadores se coloca la placa Arduino UNO encima de ellos y se atornillan otros tres tornillos de M3x10, tal y como se muestra en la siguiente foto.
Antes de continuar veamos una imagen de la colocación de todos los componentes posicionados hasta el momento vistos desde la parte inferior del chasis del robot:
Llegados a este punto comenzaremos con el cableado del robot. A continuación se muestra el esquema general de las conexiones que vamos a realizar.
El conversor DC/DC será el encargado de proporcionar una tensión estable de 7.5V con independencia del estado de las pilas. Lo colocaremos a la derecha de la placa Arduino UNO, tal y como se muestra en la siguiente imagen. Toma esta referencia para calcular la longitud de los cables.
La micro shield de control de motores se conecta justo encima de la placa Arduino Uno.
Importante: dado que alimentaremos directamente la micro shield de control de motores, no hay que conectar el puente (VOUT) en esta placa.
Una vez soldados los cables siguiendo el esquema mostrado anteriormente, fijaremos de manera permanente el conversor DC/DC utilizando cinta de doble cara. El resultado obtenido será similar al que se muestra en la siguiente imagen.
Tal y como hemos comentado anteriormente, el conversor DC/DC nos proporcionará los 7,5V para alimentar la placa Arduino a partir de la tensión de la batería (6V nominales). De esta manera nos aseguramos que la placa Arduino esté alimentada de forma óptima con independencia del estado de carga de las baterías o de los picos de consumo de los motores.
No podemos alimentar directamente la placa Arduino UNO con las baterías ya que 6V es una tensión insuficiente para alimentar una placa Arduino UNO. Ten en cuenta que aunque la placa Arduino UNO funciona internamente con 5V, después del conector de alimentación hay un diodo de protección y después un regulador serie. Entre ambos la caída de tensión puede superar los 2V, luego hay que alimentar con una tensión un poco superior a 7V para asegurarnos un correcto funcionamiento.
Importante: Antes de conectar la alimentación a la placa Arduino UNO, ajustaremos la salida del conversor DC/DC con la ayuda de un destornillador plano y un voltímetro. Para ello colocaremos las cuatro pilas de tipo AA, pondremos el interruptor en la posición de encendido y ajustaremos el potenciómetro (de color azul) en el conversor DC/DC hasta conseguir una lectura de 7,5V en el voltímetro.
En el siguiente paso actuaremos de forma similar a como hicimos con el conversor DC/DC, pero en este caso con el Bluetooth:
- Colocamos el módulo Bluetooth a la izquierda de la placa Arduino UNO para determinar la longitud de los cables.
- Conectamos los cables macho hembra entre el módulo Bluetooth y las señales de Rx y Tx de la placa Arduino UNO, tal y como se indica en el esquema.
- Conectamos los cables de alimentación al módulo Bluetooth y quitamos los conectores del otro extremo para poder soldarlos a la entrada del conversor DC/DC.
¡Ya has terminado el montaje eléctrico del Robot! Ahora solo resta ensamblar las ruedas en los motores y colocar la rueda loca utilizando cuatro tornillos de M3x8 con sus tuercas:
Podemos mejorar el aspecto del robot, usando algún tipo de abrazadera de nylon para agrupar y recoger los cables.
Este será el aspecto del robot una vez terminado el montaje.
Arduino Control Car
Arduino Control Car es una aplicación para Android que nos permite manejar a distancia dispositivos móviles basados en Arduino mediante una conexión Bluetooth. Este programa nos presenta un interface de usuario con seis botones que envían los siguientes códigos cada vez que se pulsan:
- Flecha Arriba = Carácter ‘a’
- Flecha Izquierda = Carácter ‘b’
- Botón Cuadrado = Carácter ‘c’
- Flecha Derecha = Carácter ‘d’
- Flecha Abajo = Carácter ‘e’
- Botón ON = Carácter ‘f’
- Botón OFF = Carácter ‘g
Botón Bluetooth = Es para seleccionar el Modulo Bluetooth a que se va a conectar (El modulo bluetooth debe estar previamente sincronizado con su teléfono Android
Ejemplo de programa de control para la placa Arduino UNO
A continuación se muestra un ejemplo de programa que procesa los comandos enviados por la aplicación Arduino Control Car mediante una conexión Bluetooth.
Importante: para descargar el programa a la placa Arduino UNO quita los dos cables de RX y TX del módulo bluetooth y conecta un cable USB entre la placa Arduino UNO y el ordenador
/* Este ejemplo permite controlar el robot de forma remota con un smartphone o una tablet con Android utilizando
la aplicación "Arduino Control Car"
https://play.google.com/store/apps/details? id=appinventor.ai_el_profe_garcia.Arduino_Control_Car&hl=es
En función del movimiento que se seleccione en la aplicación, se entra en un caso de la máquina de estados, lo que lleva a diferentes movimientos del robot. 30 de diciembre de 2015 http://www.complubot.com */
#define M1_DIR 7 //Pin de Arduino que controla la dirección del motor (DIGITAL)
#define M1_PWM 9 //Pin de Arduino que controla la velocidad (PWM)
#define M2_DIR 8 //Pin de Arduino que controla la dirección del motor (DIGITAL)
#define M2_PWM 10 //Pin de Arduino que controla la velocidad (PWM)
char estado = 'c'; // Estado con el que se inicia el robot: parado
char anterior; // Variable para coservar el estado anterior de la máquina de estados
char memo; // Variable para memorizar el último estado diferente
void setup() {
//Declaración como salida de todos los pines que se
//necesitan para controlar los motores del robot
pinMode(M1_DIR, OUTPUT); pinMode(M1_PWM, OUTPUT);
pinMode(M2_DIR, OUTPUT); pinMode(M2_PWM, OUTPUT);
Serial.begin(9600);
// Inicia el puerto serial para comunicación con el Bluetooth
}
void loop() {
if (Serial.available() > 0) // lee el bluetooth y almacena el carácter en "estado"
{
// Almacenamiento del último estado utilizado
// Adquisición del nuevo estado
// Memorización del último estado diferente utilizado
anterior = estado;
estado = Serial.read();
if (estado != anterior) {
memo = anterior; }
}
switch (estado) {
case 'a': // Botón desplazar al Frente // Los dos motores avanzan hacia delante
digitalWrite(M1_DIR, LOW);
analogWrite(M1_PWM, 255);
digitalWrite(M2_DIR, HIGH);
analogWrite(M2_PWM, 255);
break;
case 'b': // Botón IZQ // Realiza giro
digitalWrite(M1_DIR, LOW); //Motor uno avanza
analogWrite(M1_PWM, 255);
digitalWrite(M2_DIR, LOW); //Motor dos retrocede
analogWrite(M2_PWM, 255);
delay (100);
estado = memo;
break;
case 'c': // Botón Parar // Los dos motores se detienen
digitalWrite(M1_DIR, LOW);
analogWrite(M1_PWM, 0);
digitalWrite(M2_DIR, LOW);
analogWrite(M2_PWM, 0);
break;
case 'd': // Botón DCHA // Realiza giro
digitalWrite(M1_DIR, HIGH); //Motor uno retrocede
analogWrite(M1_PWM, 255);
digitalWrite(M2_DIR, HIGH); //Motor dos avanza
analogWrite(M2_PWM, 255);
delay (100);
estado = memo;
break;
case 'e': // Botón Reversa //Los dos motores retroceden
digitalWrite(M1_DIR, HIGH);
analogWrite(M1_PWM, 255);
digitalWrite(M2_DIR, LOW);
analogWrite(M2_PWM, 255);
break;
case 'g': //A la espera, no hace nada
break;
}
}