- 2 – Guía de montaje
- 5 – LEGO compatible
- 6 – Ampliaciones
1 – Características del robot
RoboBase V2 es un robot educativo para montar 100% Arduino Compatible. Este robot se basa en una placa controladora Compluino UNO R3, que proporciona una mejor conectividad que la placa Arduino UNO original.
La estructura del robot es una clásica plataforma diferencial, constituida por dos ruedas motrices y un punto pivotante (bola loca). En este robot las ruedas son manejadas por sendos motores de corriente continua con una reductora de 48:1 en cada uno de ellos. Dado que la placa Arduino no es capaz de proporcionar señales de potencia, necesitamos un driver de control de motores para poder fijar la velocidad y el sentido de giro de cada uno de ellos. El driver de motores utilizado en este robot es un módulo basado en el DRV8835, que se caracteriza por su gran eficiencia y rendimiento proporcionado por la tecnología MOSFET.
2 – Guía de montaje
2.1 – Antes de empezar con la construcción del robot
Montar RoboBase V2 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)
- Soladador de 30-40W (mejor si tiene control de temperatura)
- Estaño para soldar. Importante, que sea de buena calidad
2.2 – Contenido del kit RoboBase V2
Dentro del kit RoboBase V2, puedes encontrar los siguientes componentes, todos ellos necesarios para montar el robot.
- Una placa controladora Compluino UNO R3
- Dos planchas que contienen las piezas del chasis
- Dos motores de corriente continua de doble eje
- Un driver de motores de doble canal DRV8835
- Un interruptor
- Dos sensores de contacto (finales de carrera), que funcionan como bumpers
- Un sensor de ultrasonidos HC-SR04
- Un módulo Bluetooth HC-05
- Un portapilas 5 x AA
- Un conector jack de alimentación 5,5 x 2,1
- Dos ruedas para motor con eje en D
- Una rueda loca
- Siete cables macho-macho
- Veinte cables macho-hembra
- Dos gomas elásticas
- Un conjunto de tornillería para RoboBase V2
- Un destornillador con puntas intercambiables
- Una caja de plástico contenera
2.3 – El chasis del robot
El chasis del robot RoboBase V2 está realizado en DM de 3mm cortado por láser. Dentro del kit encontrarás dos piezas de DM, una de ellas es la base principal (derecha en la foto) y la otra es un conjunto de elementos donde está el piso superior y las piezas adicionales para realizar el montaje.
El chasis principal ya viene listo para usar, pero tendrás que destroquelar las piezas de la otra para poder realizar el montaje del robot. Para hacer esto presiona con los dedos en el centro de cada pieza hasta que se desprenda. Si queda alguna rebaba en las piezas, la puedes eliminar con una pequeña lima o con unos alicates de corte.
2.4 – Montaje del portapilas
Vamos a comenzar el montaje atornillando el portapilas de 5 x AA en el chasis principal, mediante el uso de dos tornillos de M2,5 x 8 y dos tuercas de M2,5
Coloca el portapilas sobre el chasis fijándote en el grabado del chasis (positivo y negativo de las pilas) y fíjalo con los tornillos y tuercas, colocando la cabeza de los tornillos en el portapilas y las tuercas en la parte inferior del chasis.
2.5 – Los motores del robot
Antes de montar los motores, hay que soldar los cables de conexión, así que necesitamos los dos motores amarillos y cuatro cables macho – macho.
Suelda cada cable en un terminal del motor, tal y como se muestra en la imagen, cruzando los cables por debajo de la brida de plástico del motor. Si esta soldadura te da problemas, prueba a lijar un poco (con lija muy fina) los terminales metálicos de los cables que van al motor.
Una vez solados los cables en los motores, ya podemos fijarlos en el chasis, para ello necesitamos las cuatro piezas de DM en forma de «T» y los cuatro conjuntos de tronillos más largos.
Ahora solo tienes que atornillarlos tal y como se muestra en la siguiente imagen.
Ten en cuanta que las arandelas que hay en cada tornillo, hay que colocarlas en la parte interior, justo antes de la tuerca.
Antes de apretar los tornillos del todo, presionamos el cuerpo del motor contra el chasis, de forma que no quede espacio entre ellos. Una vez que esté así, ya puedes apretar los tornillos y las tuercas.
2.6 – Los bumpers (finales de carrera)
El robot RoboBase V2 dispone de dos bumpers para la detección de obstáculos. El elemento sensor es un interruptor del tipo «final de carrera», que tienes que sujetar con cuatro conjuntos de tornillos de M2 x 12.
Coloca los tornillos y los finales de carrera tal y como se muestra en la siguiente imagen, con los finales de carrera en la parte inferior del chasis y la cabeza del tornillo en el lado del interruptor. La arandela y la tuerca se colocan en el otro lado del chasis. No aprietes mucho los tornillos por ahora, más adelante tendrás que ajustar bien la posición cuando coloques los brazos mecánicos de los bumpers.
Separa cuatro cables macho – hembra, que son los que usaremos para conectar los finales de carrera a la controladora Compluino UNO.
Corta el conector macho de los cuatro cables, pélalo unos tres milímetros y suéldalo a los finales de carrera, tal y como se muestra en la siguiente imagen.
2.7 – La rueda loca
Seguimos en la parte inferior del chasis, ahora para montar la rueda loca. Aunque ésta viene con dos suplementos, no es necesario montar ninguno de ellos.
Atornilla la bola loca desde la parte inferior del chasis.
De forma que las tuercas queden en la parte superior del chasis principal del robot.
2.8 – El sensor de distancia por ultrasonidos (HC-SR04)
Ahora es el turno de montar el sensor de distancias por ultrasonidos HC-SR04. En primer lugar tienes que montar la base de soporte del sensor.
Tienes que fijar en el chasis del robot mediante cola blanca (rápida) o termocola.
Además del sensor necesitas cuatro cables hembra – hembra y una de los dos gomas elásticas.
Ancla el sensor en su soporte con una de las gomas.
Y conecta los cables en los terminales del Sensor HC-SR04, de forma que pasen a la parte inferior del chasis por los agujeros.
Usa otra de las gomas para guiar los cables por la parte inferior del chasis, tal y como se muestra en la siguiente foto.
2.9 – Prolongando las conexiones
Los cables de los finales de carrera y del sensor de distancia HC-SR04 que hemos colocado, no llegan hasta donde tiene que ir colocada la placa controladora Compluino UNO, así que los vamos a prolongar mediante el uso de otros cables macho hembra de los mismos colores que los que hemos colocado.
La técnica que usaremos para unir los cables es poco habitual, lo normal sería usar conectores macho y hembra, pero nosotros uniremos dos conectores macho y macho. ¿Cómo se hace esto, lo vemos en la siguiente imagen.
Los cables rojos muestran la situación inicial de dos cables con terminales macho que queremos unir, Para ello doblamos un par de veces uno de los terminales hasta que se rompa, tal y como se muestra en el cable de color verde. Si nos fijamos la sección del terminal macho tiene forma de «C», lo que tenemos que hacer es encajar una «C» con otra, de esta forma el pin entra sin dificultad formando una unión muy estable, como la que muestra el cable de color marrón.
Esta forma de realizar uniones es más segura que con una conexión macho y hembra tradicional, y asegura que los cables no se puedan desconectar con facilidad (vibraciones del robot). En la siguiente imagen se muestra como quedan todas las conexiones prolongadas.
2.10 – El piso superior
Vamos a continuar con el montaje del piso superior del robot. Para ello usaremos los separadores de 30 mm con sus respectivos tornillos de M3 x 6.
Monta los tres separadores en el piso inferior del robot.
De manera que los tornillos queden en la parte inferior del chasis.
Ahora vamos a continuar con la pieza de DM que proporciona el piso superior del robot.
2.11 – El interruptor de encendido
La puesta en marcha del robot se realiza mediante un interruptor de encendido que se coloca en el piso superior del robot. Este interruptor tiene que estar en la posición de apagado (O) cuando programamos el robot y en la posición de encendido (I), para que el robot pueda moverse.
En este punto del montaje necesitamos el interruptor de encendido y un cable macho – macho de color rojo (el color del cable es indiferente desde el punto de vista eléctrico, pero ayuda a localizar e identificar el tipo de cada conexión).
Encajamos el interruptor en el pieza de DM del piso superior y soldamos el cable rojo del portapilas en uno de los contactos y el cable rojo macho – macho en el otro. Si la soldadura de este último cable te da problemas, prueba a lijar un poco (con lija muy fina) el terminal metálico del cable, antes de soldarlo.
Sacamos el otro extremo del cable rojo que hemos soldado por el agujero pasa-cables de la base de madera y giramos ésta de forma que veamos su parte superior.
2.12 – El conector de alimentación
En este robot alimentamos la placa controladora Compluino UNO por el jack de entrada de alimentación. Este es el punto más seguro paar alimentar cualquier placa del tipo Arduino UNO ya que así usamos todos los elementos de protección eléctrica que hay en la placa.
Para hacer esto necesitamos el jack de alimentación de 5,5 x 2,1 (es el que viene en el kit) y dos cables macho – macho, uno rojo y otro negro.
En el jack de alimentación tienes que soldar tres cables: el de color rojo que viene del interruptor y los dos cables macho – macho rojo y negro.
La forma correcta de hacer esto es soldar juntos los dos cables rojos en el la patilla del terminal central del jack y el negro en terminal más grande de dicho conector.
2.13 – El sistema de alimentación
Para alimentar el robot tienes que usar 5 pilas alcalinas del tipo AA. Este robot no está diseñado para usar elementos recargables de este tamaño. Tienes una explicación completa en el apartado donde se habla sobre las Consideraciones sobre el sistema de alimentación del robot
Este es el momento del montaje ideal para poner las pilas en el robot (asegurate primero que el interruptor está en la posición de apagado). Si prefieres seguir con el montaje para poner las pilas mas tarde, solo tendrás que quitar los tres tornillos del robot para acceder a esta zona del robot con facilidad.
2.14 – Los anclajes del piso superior
Para sujetar la placa Compluino UNO en el piso superior, usaremos cuatro separadores de nailon y cuatro tornillos de M3 x 6, tal y como se muestra en la figura de la izquierda.
Igual en alguna ocasión has intentado fijar una placa tipo Arduino UNO mediante separadores y tornillos y te has encontrado ante la dificultad o mejor dicho, imposibilidad de poner tuercas o tronillos en algunos de los agujeros de la placa Arduino.
Esto no ocurre con el sistema de sujección de la placa Compluino UNO que usamos en este robot. Los separadores que hemos seleccionado se atornillan en la parte inferior , pero llevan un sistema tipo «ancla» en la parte superior. Como veremos más adelante este tipo de anclaje es ideal para este tipo de placas.
Ahora atornilla los separadores en el piso superior, tal y como se muestra en la siguiente imagen.
Para fijar el piso superior del robot, usa tres tornillos de M3 x 6 para fijarlos sobre la parte superior de los separadores metálicos que unen ambos pisos.
Bien, ya hemos terminado con la estructura del robot, vamos a continuar con el montaje del resto de los componentes.
2.15 – La placa Compluino UNO R3
Tal y como hemos comentado con anterioridad en esta guía de montaje, en este robot usaremos una placa Compluino UNO. Esta placa es 100% compatible con la Arduino UNO y además nos proporciona un sistema de conectividad mejorada que facilita mucho el conexionado de los distintos elementos eléctricos del robot.
A continuación se detallan los distintos elementos y conexiones de esta placa controladora.
El montaje de la placa en el robot es muy sencillo, solo tienes que hacer coincidir los agujeros de la Compluino UNO sobre los separadores de nilon y presionar ligeramente. Veras que la placa se fija con precisión.
Para desmontar la placa puedes usar un alicate de puntas planas con el que ir cerrando lijeramente el «ancla» de cada separador. De esta forma cada ancla se cierra, lo que te permite sacar la placa del separador.
2.16 – El driver de control de motores
El driver de motores es un módulo 2511 de Pololu. Este módulo usa un doble puente en H DRV8835 de Texas instruments. Si te fijas en el tamaño del circuito integrado es muy pequeño, sobre todo si lo comparamos con otros más habituales en este tipo de montajes como el L293D o el L298. El motivo es que estos usan tecnologia bipolar (muy poco eficiente), mientras que el DRV8835 usa tecnología MOSFET de gran eficiencia.
El módulo viene parcialmente montado, nuestro trabajo consite en soldar las clemas y los terminales de conexión. Antes de soldar los tres bloques de clemas de dos vías, ten la precaución de unirlas entre sí, tal y como se muestra en la siguiente fotografía.
En las siguientes imágenes se muestra la forma correcta de montaje de las clemas y de las tiras de conectores. Solo tienes que soldar los terminales que se muestran en las fotografías.
Conectar el driver de control de motores en la placa Compluino UNO es muy sencillo, solo hay que hacer coincidir los terminales del mismo nombre que aparecen en el driver y en la placa Compluino UNO.
2.17 – Conexiones de los motores y del sistema de alimentación
Cuando conectamos el driver de control de motores sobre la placa Compluino UNO se establecen las conexiones de control de dicho driver. Además hay que conectar la alimentación de potencia y las conexiones de cada motor, esto se hace en las clemas del propio driver.
Si has respetado el código de colores de los cables que hemos seguido en la guía, realizar el siguiente paso te resultará muy sencillo, solo tienes que conectar los cables en las clemas tal y como se muestra en la siguiente fotografía.
2.18 – Conexiones de los bumpers y del sensor de distancia
Los cables de los bumpers y del sensor de distancia por ultrasonidos también se conectan en la placa Compluino UNO, en concreto en la zona de las conexiones de las entradas y salidas digitales.
En esta zona todos los terminales de color rojo son positivos (5V), los de color negro son negativos (GND) y los de color amarillo corresponden a los pines de entrada y salida digital de la Compluino UNO.
Para ayudarte a la correcta conexión de estos cables, puedes guiarte de la siguiente tabla:
Pin de Compluino UNO | Color del cable | Función | |
Cualquiera de la fila de color negro | Gris | GND Bumper derecho | |
Cualquiera de la fila de color negro | Violeta | GND Bumper izquierdo | |
2 | Verde | Bumper derecho | |
3 | Azul | Bumper izquierdo | |
11 | Blanco | Echo del sensor de distancia | |
12 | Amarillo | Trig del sensor de distancia | |
Cualquiera de la fila de color rojo | Naranja | Vcc del sensor de distancia | |
Cualquiera de la fila de color negro | Negro | GND del sensor de distancia |
2.19 – Los brazos de los bumpers
En la parte inferior del robot hemos colocado los interruptores finales de carrera que nos ayudarán a la deteción de obstáculos con los que pueda chocar el robot. Pero estos interruptores no sobresalen del chasis del robót, así que de esta manera sera muy complicado que puedan funcionar. Para tener un buen sistema de deteción de obstáculos por contacto, vamos a colocar dos brazos articulados que cubran toda la parte forntal del robot.
Para su montaje necesitamos las dos piezas curvas de DM, los dos juegos de tronillos (color negro) con tuercas y arandelas y un fragmento de goma elástica de color negro.
Los brazos se sujetan en la parte inferior del chasis.
Con las cabezas de los tornillos abajo del todo y las tuercas (auto-frenables) en la parte superior del chasis.
Dentro de cada tornillo negro con tuerca autofrenable que hay en el kit, puedes encontrar tres arandelas. Coloca dos de ellas entre el brazo y el chasis y la tercera entre el chasis y la tuerca auto-frenable.
Aprieta el tornillo y la tuerca hasta que quede bloqueado el brazo. Después afloja poco a poco hasta que el brazo del bumper se pueda mover con facilidad. Este es el punto correcto de apriete.
Une las puntas de los brazos con el trozo de goma elástica, de forma que queden sobre los finales de carrera, pero sin actuar el interruptor de estos.
2.20 – Las ruedas
Este robot usa dos ruedas para moverse, dichas ruedas se conectan mediante presión al eje de salida de cada motor.
Para mejorar el movimiento de las rudas, deja entre 0,5mm y 1mm de separación entre la rueda y el punto de tope del eje de motor. Esto impidirá que la rueda pueda llegar a rozar, en algún momento, con las cabezas de los tornillos que sujetan los motores.
2.21 – Montaje final
Enhorabuena, ya has terminado de montar el robot en su versión básica, Antes de continuar con el montaje del módulo bluetooth, te recomendamos que lo pruebes con los programas de ejemplo.
2.22 – El módulo de comunicaciones Bluetooth
En el kit de RoboBase V2 se incluye un módulo de comunicaciones Bluetooth del tipo HC-05. Hay personas que piensan que el HC-06 es mejor que el HC-05, simplemente por que 6 es más que 5, pero es justamente al revés: el HC-05 es más completo por que puede funcionar como maestro y como esclavo, mientras que el HC-06 solo puede actuar como esclavo.
Para fijar el módulo HC-05 sobre el chasis puedes usar un trozo de cinta adhesiva de doble cara (mejor de capa gruesa). También puedes sujetarlo mediante unos puntos de termocola.
Usa los cables hembra – hembra para conectar el módulo HC-05 a la placa Compluino Uno según la siguiente tabla:
Compluino UNO | Color del cable | HC-05 | |
GND | Negro | GND | |
+5V | Blanco | 5V | |
RX | Gris | TX | |
TX | Violeta | RX |
Ya tines montado el robot para que pueda operar con el módulo de comunicaciones Bluetooth, eso si, recuerda que el módulo Blueetooth HC-05 se conecta a los pines 0 y 1 de la placa Compluino UNO. Estos son los mismos pines que usa el IDE de Arduino para comunicarse y descargar programas cuando conectamos el cable USB. Así que tendremos que desconectar el módulo HC-05 cuando queramos descargar un programa usando la conexión USB.
3 – Asignación de pines
Una vez montado el robot y realizadas las conexiones tal y como se indica en la guía de montaje, quedan establecida la siguiente asignación de pines entre la placa Compluino UNO y los distintos sensores y actuadores del robot.
Pin | Dispositivo | Color del cable | |
D0 | Transmisión de datos Bluetooth (*) | Blanco | |
D1 | Recepción de datos Bluetooth (*) | Gris | |
D2 | Bumper derecho | Verde | |
D3 | Bumper izquierdo | Azul | |
D7 | DIR M1 | Conexión directa al driver de motores | |
D8 | DIR M2 | Conexión directa al driver de motores | |
D9 | PWM Motor 1 (derecha) | Conexión directa al driver de motores | |
D10 | PWM Motor 2 (Izquierda) | Conexión directa al driver de motores | |
D12 | Echo del sensor de distancia | Blanco | |
D13 | Trig del sensor de distancia | Amarillo |
4 – Ejemplos de programación
IMPORTANTE:
- Este robot es 100% compatible con Arduino, para programarlo usa el IDE de Arduino que puedes decargar de este enlace. Dentro del IDE de Arduino seleccionar el tipo de placa Arduino/Genuido UNO, cuando esté conectado el robot al ordenador.
- En los siguientes ejemplos de programa el robot se moverá, en algunos de ellos incluso de forma rápida. Ten cuidado de que el robot no se caiga al suelo ya que si ocurre esto, se romperá.
- Para que el robot se mueva el interruptor de encendido tiene que estar en la posición ON.
En este ejemplo el robot realiza algunos movimientos básicos (Avance, retroceso y giros) a una velocidad determinada (la puedes cambiar). Dado que el robot está diseñado para llevar más peso que el propio, observarás que a velocidades altas el robot puede patinar, sobre todo si la superficie es dura. Puedes mejorar esto poniendo algo de peso en la parte trasera del robot.
Idea: Una forma de mejorar el agarre de las ruedas es recubrirlas con un trozo de globo o de un plástico similar, tal y como se muestra en la siguiente imagen.
/*
RoboBase V2
Movimientos básicos
11/2017
www.prueba.complubot.com
*/
#define DIR_DER 7 // Direción Motor 1 (derecha)
#define DIR_IZQ 8 // Direción Motor 2 (izquierda)
#define PWM_DER 9 // PWM Motor 1 (derecha)
#define PWM_IZQ 10 // PWM Motor 2 (izquierda)
#define AVANZA LOW
#define RETROCEDE HIGH
#define PARA LOW
#define VELOCIDAD 150 // 255 representa al 100% de la velocidad del robot
void setup()
{
// Configura pines control de los motores
pinMode(DIR_DER, OUTPUT);
pinMode(DIR_IZQ, OUTPUT);
pinMode(PWM_DER, OUTPUT);
pinMode(PWM_IZQ, OUTPUT);
// Robot para
digitalWrite(PWM_DER, PARA);
digitalWrite(PWM_IZQ, PARA);
}
void loop()
{
// Robot Avanza
digitalWrite(DIR_DER,AVANZA);
digitalWrite(DIR_IZQ,AVANZA);
analogWrite(PWM_DER, VELOCIDAD);
analogWrite(PWM_IZQ, VELOCIDAD);
delay(2000);
// Robot para
digitalWrite(PWM_DER, PARA);
digitalWrite(PWM_IZQ, PARA);
delay(1000);
// Robot rerocede
digitalWrite(DIR_DER,RETROCEDE);
digitalWrite(DIR_IZQ,RETROCEDE);
analogWrite(PWM_DER, VELOCIDAD);
analogWrite(PWM_IZQ, VELOCIDAD);
delay(2000);
// Robot para
digitalWrite(PWM_DER, PARA);
digitalWrite(PWM_IZQ, PARA);
delay(1000);
// Robot gira derecha
digitalWrite(DIR_DER,RETROCEDE);
digitalWrite(DIR_IZQ,AVANZA);
analogWrite(PWM_DER, VELOCIDAD);
analogWrite(PWM_IZQ, VELOCIDAD);
delay(2000);
// Robot para
digitalWrite(PWM_DER, PARA);
digitalWrite(PWM_IZQ, PARA);
delay(1000);
// Robot gira izquierda
digitalWrite(DIR_DER,AVANZA);
digitalWrite(DIR_IZQ,RETROCEDE);
analogWrite(PWM_DER, VELOCIDAD);
analogWrite(PWM_IZQ, VELOCIDAD);
delay(2000);
// Robot para
digitalWrite(PWM_DER, PARA);
digitalWrite(PWM_IZQ, PARA);
delay(1000);
}
Movimiento con detección de obstáculos
/*
RoboBase V2
Movimiento con detección de obstáculos
11/2017
www.prueba.complubot.com
*/
#define DIR_DER 7 // Direción Motor 1 (derecha)
#define DIR_IZQ 8 // Direción Motor 2 (izquierda)
#define PWM_DER 9 // PWM Motor 1 (derecha)
#define PWM_IZQ 10 // PWM Motor 2 (izquierda)
#define BUMP_DER 2 // Bumper lado derecho del robot
#define BUMP_IZQ 3 // Bumper lado izquierdo del robot
#define AVANZA LOW
#define RETROCEDE HIGH
#define PARA LOW
#define DETECTA LOW
#define VELOCIDAD 150 // 255 representa al 100% de la velocidad del robot
void setup()
{
// Configura pines control de los motores
pinMode(DIR_DER, OUTPUT);
pinMode(DIR_IZQ, OUTPUT);
pinMode(PWM_DER, OUTPUT);
pinMode(PWM_IZQ, OUTPUT);
// Configura pines de los bumpers
pinMode(BUMP_DER, INPUT_PULLUP);
pinMode(BUMP_IZQ, INPUT_PULLUP);
// Robot para
digitalWrite(PWM_DER, PARA);
digitalWrite(PWM_IZQ, PARA);
}
void loop()
{
// Robot Avanza
digitalWrite(DIR_DER, AVANZA);
digitalWrite(DIR_IZQ, AVANZA);
analogWrite(PWM_DER, VELOCIDAD);
analogWrite(PWM_IZQ, VELOCIDAD);
if (digitalRead(BUMP_DER) == DETECTA)
{
// Robot rerocede
digitalWrite(DIR_DER, RETROCEDE);
digitalWrite(DIR_IZQ, RETROCEDE);
analogWrite(PWM_DER, VELOCIDAD);
analogWrite(PWM_IZQ, VELOCIDAD);
delay(1000);
// Robot gira izquierda
digitalWrite(DIR_DER, AVANZA);
digitalWrite(DIR_IZQ, RETROCEDE);
analogWrite(PWM_DER, VELOCIDAD);
analogWrite(PWM_IZQ, VELOCIDAD);
delay(1000);
}
if (digitalRead(BUMP_IZQ) == DETECTA)
{
// Robot rerocede
digitalWrite(DIR_DER, RETROCEDE);
digitalWrite(DIR_IZQ, RETROCEDE);
analogWrite(PWM_DER, VELOCIDAD);
analogWrite(PWM_IZQ, VELOCIDAD);
delay(1000);
// Robot gira derecha
digitalWrite(DIR_DER, RETROCEDE);
digitalWrite(DIR_IZQ, AVANZA);
analogWrite(PWM_DER, VELOCIDAD);
analogWrite(PWM_IZQ, VELOCIDAD);
delay(1000);
}
}
Mantiene distancia mediante sensor de ultrasonidos
/*
RoboBase V2
Mantiene la distancia con un obstáculo mediante el uso del
sensor de ultrasonidos.
11/2017
www.prueba.complubot.com
*/
#define DIR_DER 7 // Direción Motor 1 (derecha)
#define DIR_IZQ 8 // Direción Motor 2 (izquierda)
#define PWM_DER 9 // PWM Motor 1 (derecha)
#define PWM_IZQ 10 // PWM Motor 2 (izquierda)
#define TRIG 13 // Pin Trig del sensor de distancia por ultrasonidos
#define ECHO 12 // Pin Echo del sensor de distancia por ultrasonidos
#define AVANZA LOW
#define RETROCEDE HIGH
#define PARA LOW
#define DETECTA LOW
#define POSICION 20 // 20 cm
#define VELOCIDAD 80 // 255 representa al 100% de la velocidad del robot
int distancia, velocidad;
void setup()
{
// Configura pines control de los motores
pinMode(DIR_DER, OUTPUT);
pinMode(DIR_IZQ, OUTPUT);
pinMode(PWM_DER, OUTPUT);
pinMode(PWM_IZQ, OUTPUT);
// Configura los pines del sensor de distancia por ultrasonidos
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
// Robot para
digitalWrite(PWM_DER, PARA);
digitalWrite(PWM_IZQ, PARA);
}
void loop()
{
// Mide la distancia entre el robot y un obstáculo
digitalWrite(TRIG, LOW);
delayMicroseconds(10);
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
distancia = pulseIn(ECHO, HIGH) / 58;
if (distancia > POSICION)
{
// Robot Avanza
digitalWrite(DIR_DER, AVANZA);
digitalWrite(DIR_IZQ, AVANZA);
analogWrite(PWM_DER, VELOCIDAD);
analogWrite(PWM_IZQ, VELOCIDAD);
}
else
{
// Robot rerocede
digitalWrite(DIR_DER, RETROCEDE);
digitalWrite(DIR_IZQ, RETROCEDE);
analogWrite(PWM_DER, VELOCIDAD);
analogWrite(PWM_IZQ, VELOCIDAD);
}
}
Control de movimientos mediante Bluetooth
En este ejemplo vamos a controlar el movimiento del robot de forma remota mediante una conexión Bluetooth. Para ello usaremos el módulo HC-05 que se incluye en el kit, conectado según las instrucciones de la guía de montaje.
Importante, el módulo Blueetooth HC-05 se conecta a los pines 0 y 1 de la placa Compluino UNO. Estos son los mismos pines que usa el IDE de Arduino para comunicarse y descargar programas cuando conectamos el cable USB. Así que tendremos que desconectar el módulo HC-05 cuando queramos descargar un programa usando la conexión USB.
En el robot instalaremos un programa que interprete las órdenes que le llegan por el puerto serie mediante la conexión Bluetooth. Para generar dichas órdenes podemos usar un smartphone o una tablet mediante una aplicación genérica de comunicaciones BT, como Bluetooth Terminal HC-05. También puedes hacer una aplicación con alguna herramienta sencilla, como el App Inventor, para enviar los comandos desde el dispositivo.
El programa que se muestra a continuación implementa en el robot los siguientes comandos:
Comando (ASCII) | Función | |
A | Robot avanza | |
R | Robot retrocede | |
D | Robot gira a la derecha | |
I | Robot gira a la izquierda | |
P | Robot para |
/*
RoboBase V2
Control de movimientos mediante Bluetooth
10/2017
www.prueba.complubot.com
*/
#define DIR_DER 7 // Direción Motor 1 (derecha)
#define DIR_IZQ 8 // Direción Motor 2 (izquierda)
#define PWM_DER 9 // PWM Motor 1 (derecha)
#define PWM_IZQ 10 // PWM Motor 2 (izquierda)
#define AVANZA LOW
#define RETROCEDE HIGH
#define PARA LOW
#define VELOCIDAD 150 // 255 representa al 100% de la velocidad del robot
void setup()
{
// Configura pines control de los motores
pinMode(DIR_DER, OUTPUT);
pinMode(DIR_IZQ, OUTPUT);
pinMode(PWM_DER, OUTPUT);
pinMode(PWM_IZQ, OUTPUT);
Serial.begin(9600); // Velocidad de comunicación del puerto serie (comunicación Bluetooth)
// Robot para
digitalWrite(PWM_DER, PARA);
digitalWrite(PWM_IZQ, PARA);
}
void loop()
{
if (Serial.available() > 0)
{
switch (Serial.read())
{
case 'A': // Avanza
digitalWrite(DIR_DER, AVANZA);
digitalWrite(DIR_IZQ, AVANZA);
analogWrite(PWM_DER, VELOCIDAD);
analogWrite(PWM_IZQ, VELOCIDAD);
break;
case 'R': // Retrocede
digitalWrite(DIR_DER, RETROCEDE);
digitalWrite(DIR_IZQ, RETROCEDE);
analogWrite(PWM_DER, VELOCIDAD);
analogWrite(PWM_IZQ, VELOCIDAD);
break;
case 'D': // Gira derecha
digitalWrite(DIR_DER, RETROCEDE);
digitalWrite(DIR_IZQ, AVANZA);
analogWrite(PWM_DER, VELOCIDAD);
analogWrite(PWM_IZQ, VELOCIDAD);
break;
case 'I': // Gira izquierda
digitalWrite(DIR_DER, AVANZA);
digitalWrite(DIR_IZQ, RETROCEDE);
analogWrite(PWM_DER, VELOCIDAD);
analogWrite(PWM_IZQ, VELOCIDAD);
break;
case 'P': // Para
digitalWrite(PWM_DER, PARA);
digitalWrite(PWM_IZQ, PARA);
break;
}
}
}
5 – LEGO compatible
Las tiras de agujeros que hay a los lados del chasis del robot, permiten conectar piezas de LEGO de la serie Technic. De esta forma, puedes realizar montajes mecánicos que combinen la facilidad de uso de LEGO con la potencia de programación de Arduino.
Dado que el chasis es de madera, los agujeros de compatibilidad con LEGO pueden deformarse con el uso. Nuestro consejo es que pegues con algún tipo de adhesivo instantáneo una pieza a cada lado del robot. Esta te servirá de base para el resto de tus montajes.
6 – Ampliaciones
RoboBase V2 es un robot educativo que ofrece muchas posibilidades de ampliación, añadiendo distinto tipos de sensores y actuadores, como los que te proponemos a continuación.
Sensores reflexivos QTR 1A
Este tipo de sensor reflexivo se coloca, mediante un tornillo, en la parte inferior del robot. Con ellos podemos detectar distintos tipos de marcas sobre el suelo. La forma más sencilla de trabajar es sobre una superficie blanca (mesa) en la que podemos pegar trozos de cinta aislante de color negro. Sigue líneas, sumo, saca piezas… son algunos de los ejemplos de actividades que podemos realizar con este sensor.
Display OLED
Esta pantalla OLED tiene una resolución de 128 x 64 pixels. En ella puedes mostrar texto y gráficos mediante la librería para Arduino U8g2. Este módulo se conecta mediante un bus I2C directamente a la placa Compluino UNO.
7 – Consideraciones sobre el sistema de alimentación del robot
El sistema de alimentación de este robot está constituido por un portapilas de cinco pilas alcalinas del tipo AA, cada una de ellas proporciona un voltaje de 1,5V lo que nos resulta en una tensión de alimentación de 7,5V, que es justo el voltaje ideal para alimentar una placa Arduino.
Importante: este robot está diseñado para trabajar con pilas alcalinas AA y no puede funcionar adecuadamente con pilas recargables. El motivo es que estas últimas proporcionan un voltaje nominal de 1,2V lo que nos daría una tensión total de 6V, insuficiente para alimentar de forma correcta una placa Arduino. En ocasiones se propone alimentar la placa Arduino por el terminal VIN, esto presenta dos grandes problemas. En primer lugar aún así el voltaje que le llega al microcontrolador de la placa Arduino sigue en el límite de lo aceptable y, además, al alimentar una placa Arduino de esta forma, suprimimos el sistema de protección contra la inversión de polaridad, a riesgo de dañar de forma irreversible la propia placa Arduino.