Home » Arduino » Robot diferencial BeetleBot

Login with your Social Account

Robot diferencial BeetleBot

  •  
  •  
  •  
  •  
  •  
  •  

BeetleBot es un robot diferencial casero basado en Arduino. Su funcionamiento será controlado a través de una conexión Bluetooth con un teléfono móvil. El robot está diseñado para funcionar en tres modos diferentes: dos aplicaciones autónomas y un modo de control remoto. Las tareas autónomas que realizará serán: Evitador de obstáculos y Seguidor de luz.

A continuación, se muestra una lista de los componentes necesarios para construir el robot:

  • Arduino Nano v3.x ATmega328 + I/O Shield
  • Sensor de ultrasonidos HC-SR04
  • Servomotor de rotación continua FS90R
  • 1 par de ruedas para servomotor FS90R
  • 2 ruedas locas
  • Módulo Bluetooth SPP-C
  • Altavoz pasivo (Buzzer)
  • 4 resistencias LDR
  • 2 piezas de madera contrachapada 15x15x3 mm
  • Batería tipo Power Bank, 5V, 2600 mAh

El primer paso es construir el chasis del robot. El material a utilizar será madera contrachapada de 3 mm de grosor, cortada a láser. El patrón que se ha utilizado es el siguiente. Las piezas pequeñas se colocan obre la pieza circular encajándolas en las muescas y, sobre ellas, la pieza semicircular. Todas ellas, unidas con cola caliente, forman una estructura rígida con forma de semiesfera.

 A contiuación se deben conectar todos los componentes electrónicos. El microcontrolador Arduino Nano será el cerebro del robot, el que controle todos los componentes, por lo que éstos deberán estar conectados a él. El esquema de conexiones a seguir es el siguiente:

Además, como alimentación de todo el sistema se conectará un PowerBank de 2600 mAh y 5 V al puerto Mini USB del Arduino Nano. No obstante, se puede usar una pila de petaca común de 9 V y conectarla al puerto de alimentación. Es importante tener en cuenta la corriente máxima que puede otorgar la batería, siendo conveniente que ofrezca al menos 500 mA, de lo contrario algunas aplicaciones podrían no funcionar correctamente.

 

Programación en Arduino

Para que el robot realice las funciones que queremos, hemos de programar la placa Arduino. La idea principal es que a partir de las órdenes que envíe el usuario por Bluetooth, el robot cambie su comportamiento. Para ello, la aplicación Android (que explicaremos después), para cada acción que queramos que realice (acelerar, frenar, activar, desactivar), enviará un caracter por Bluetooth que será el que reciba el Arduino. Entonces, el código de Arduino consistirá básicamente en leer un caracter recibido por Bluetooth y realizar una acción dependiendo de esa orden, y repetir este proceso continuamente. Las acciones que realice el robot dependerán del modo de funcionamiento.

  • Control remoto: Para realizar el control manual, la aplicación Android podrá enviar 5 órdenes diferentes: Adelante (a), Atrás (b), Izquierda (c), Derecha (d) y Stop (S). Para cada orden, simplemente se actualizará la velocidad de los servomotores izquierdo y derecho. A continuación se volverá a leer un caracter por Bluetooth, y así sucesivamente.
  • Evitador de obstáculos: Para esta aplicación, se hará uso del sensor de ultrasonidos para detectar obstáculos cercanos y esquivarlos para evitar choques. Para conseguirlo, primero se debe enviar un pulso de ultrasonidos y calcular el tiempo que tarda en rebotar en el objeto y la distancia a la que se encuentra. Hay funciones en Arduino que permiten esto de forma sencilla. A continuación, se realiza la conversión a centímetros. Entonces, cuando detecte objetos que se encuentren a entre 1 y 10 cm (una lectura de 0 podría significar que no hay obtáculos y la medida está fuera de rango) el robot hará marcha atrás y girará ligeramente a la derecha para esquivarlo. Si no detecta ningún objeto cercano, el robot avanzará en línea recta.
  • Seguidor de luz: En esta aplicación, el robot seguirá un haz de luz aplicado sobre él o, dicho de otra forma, irá en la dirección en la que detecte más luz. Esta luz se medirá mediante unas LDR (Light Dependent Resistor) que transformarán la luz en una diferencia de tensión que será leída por el conversor analógico digital del Arduino. Lo primero que debemos hacer es conectar y situar correctamente las LDR en el robot. Para que las LDR conviertan la luz en tensión, hemos de conectarlas formando un divisor de tensión:

Con la ayuda de un multímetro, medimos la resistencia de las LDR tanto con luz como conoscuridad. Con estos valores, de entre 1 kΩ con una linterna apuntando a ella y unos 5 kΩ con la luz apagada, aproximadamente, calculamos qué valor de resistencia necesitamos para obtener unos valores aceptables de tensión. Con una resistencia auxiliar de 4’7 kΩ, obtenemos una tensión a la entrada del Arduino de entre 2’42 y 4’12 V. Arduino convertirá esta tensión en un valor entero de 10 bits, es decir, entre 0 y 1024.

Sabiendo esto, programaremos el Arduino. Para ello, primero colocaremos las 4 LDR en la mitad frontal del robot, separadas unos centímetros entre ellas y apuntando ligeramente hacia arriba para captar mejor la luz. Hay tres trayectorias posibles a seguir: seguir recto, girar a izquierda y girar a derecha. Para saber cuál de estas trayectorias recibe más luz y, por tanto, es la que hay que seguir, sumaremos el valor entero que se recibe de cada par de LDR contiguas: la izquierda y centro-izquierda, la centro-izquierda y centro-derecha, y la centro-derecha y derecha. Como hemos calculado anteriormente, a más luz, más tensión y mayor será el valor entero que se lee. Por tanto, la suma más alta, es decir, el par de LDR que reciba más luz, indicará la dirección que hay que seguir. Finalmente, cambiaremos la velocidad de los motores en consecuencia.

 

Aplicación Android con App Inventor 2

Para poder controlar el movimiento del robot en cada uno de los modos de funcionamiento con el teléfono móvil vía bluetooth, se ha diseñado una aplicación de Android con App Inventor 2.

  • Pantalla inicial: La pantalla principal contiene tres botones en la parte superior, y cada uno de ellos nos lleva a su respectiva aplicación.

  • Seguidor de luz: En esta pantalla se puede observar que hay dos botones de control. El primer botón es el de encender y está presente en cada una de las pantallas de control. Al pulsar este botón nos aparece una lista de los dispositivos que están conectados vía bluetooth. Una vez elegido el robot, el botón pasa a ser de color verde. El siguiente botón es la imagen de la bombilla. Cuando lo pulsamos se enciende la bombilla y ponemos en marcha la aplicación autónoma del seguimiento de luz; si volvemos a tocarlo, ésta vuelve a apagarse y se detiene el robot.

  • Evitador de obstáculos: Como se puede observar, esta pantalla también contiene dos botones de control. El primer botón es de conectar y el segundo botón es la imagen. Al pulsar la imagen, aparece otra diferente y pone en marcha la aplicación autónoma de evitar los obstáculos. Si volvemos a tocarla, vuelve pasa a su forma inicial y se pone detiene la aplicación.

  • Control remoto: Al igual que en las anteriores, esta pantalla también contiene dos botones de control: el de conexión bluetooth y una imagen. Al pulsar la imagen, ésta cambia de color y se activa el control remoto. Controlar el robot es posible gracias al acelerómetro del teléfono móvil y, por lo tanto, se puede dirigir simplemente inclinando la pantalla del teléfono móvil en la dirección a la que queramos ir. Esta aplicación también muestra con la ayuda de una flecha en qué dirección se mueve el robot. Si volvemos a pulsar la imagen, vuelve a cambiar de color y se detiene el robot.

Cabe destacar que cada una de las pantallas de control contiene los tres botones que permiten cambiar de aplicación. Si pulsamos cualquiera de estos botones dentro de alguna aplicación, se desconecta el bluetooth para evitar fallos de conexión. Finalmente, si pulsamos el botón para ir atrás, volveremos a la pantalla de inicio.

 

 

Anexos:

Código de la programación en Arduino (.txt)

Archivos de proyecto de la aplicación Android (.aia y .apk)

Autores:

Sánchez Aduna, Alejandro

Villalba Duarte, Kevin Daniel

A %d blogueros les gusta esto: