Está en la página 1de 18

ROBOT MÓVIL CONTROLADO POR BLUETOOTH

195441

En este tutorial construiremos un robot móvil controlado por Bluetooth desde nuestro celular
o smartphone a través de un aplicativo Android.

1. Materiales:

Empecemos describiendo los principales materiales:

Arduino

Podemos usar cualquiera de las placas Arduino, nosotros usaremos el Arduino Uno R3 por ser
uno de los más usados.

Módulo Bluetooth HC-06 o HC-05 

Este módulo nos sirve para que nuestro Arduino y el celular puedan comunicarse a través de
Bluetooth. Para esta aplicación podemos usar cualquiera de los dos módulos pues los
trabajaremos en modo esclavo.
Si usan un HC-06 estaría listo para usar, si usan un HC-05 deben verificar que esté configurado
como esclavo. La velocidad con la que vamos a trabajar es a 9600baudios, que es la velocidad
que viene por defecto tanto en el HC-06 como en el HC-05.

Nosotros usaremos el HC-06 con su configuración por defecto, si desean realizar


configuraciones adicionales puede consultar nuestros tutoriales:

1. Configuración del módulo Bluetooth HC-06 usando comandos AT

2. Configuración del módulo Bluetooth HC-05 usando comandos AT

Driver Puente H

El puente H es el que nos permite invertir el giro de un motor, necesitamos un puente H que
tenga dos canales para poder controlar dos motores.
 

Entre los puente H más comunes tenemos el L298N, L293D, TB6612FNG y el L9110S , Algunos


módulos aparte de los pines para controlar la dirección tienen un pin (Enable ) por donde
podemos enviar PWM y controlar la velocidad, pero para este tutorial podemos usar
cualquiera pues solo controlaremos dirección.

Motores con Llanta:

Básicamente  2 motores DC con caja reductora y su respectiva llanta, una velocidad promedio
puede ser 100RPM, pero dependerá de la velocidad que uno desee.

El voltaje dependerá de la batería, por ejemplo si tienen una batería de 6V o de 3.7V se puede
trabajar con el motor amarillo, si tienen una batería de 12V  o 9V pueden trabajar con los
micro motores, Si alimentamos un motor con un voltaje inferior al nominal, su velocidad
disminuye, en cambio sí alimentamos con un voltaje superior podemos malograr el motor, por
eso debemos de tener en cuenta las especificaciones técnicas del motor.

Batería

Esto tal vez sea lo más difícil de establecer, lo primero que hay que tener en cuenta es el
voltaje. Arduino trabaja con un  voltaje entre 6 y 12V, aparte de esto hay que tener en cuenta
el voltaje del motor. También hay que considerar la corriente y la capacidad, por ejemplo si
usamos una pila económica de 9V nos durará menos de un minuto, se recomienda que la
capacidad sea superior a 500mAH

A continuación mostramos las opciones que pueden usar dependiendo del motor que tengan:

Motor de  6V:

Opción 1: 4 pilas AA para los motores y una de 9V para el Arduino

Opción 2: 1 celda de litio (batería de celular) para los motores y una pila de 9V para el Arduino

Opción 2: Cualquier batería superior a 6V (de suficiente corriente) y un step down para bajar el
voltaje.

Motor de 12V:

Opción 1: Pila duracell 9V

Opción 2: batería lipo o litio de 2 o 3 celdas.

Opción 3: cualquier Batería de 12V  (de suficiente corriente)

Opción 4: 1 celda de litio (batería de celular) o batería de 3.7V y un step Up para aumentar el
voltaje.

Independiente del valor del voltaje de la batería podemos usar conversores DC-DC para
aumentar (step up) o reducir (step down) el voltaje.

Chasis y rueda loca 

Esto dependerá del diseño de cada uno, pueden hacerlo, o comprar uno hecho. El chasis
básicamente es en donde se va a poner los dos motores con llanta y los demás componentes,
adicionalmente se necesita una rueda giratoria o una ballcaster, que será el tercer punto de
apoyo junto a las otras dos llantas.
Otros accesorios:

Adicionalmente podemos necesitamos un protoboard, cables DuPont Macho-Macho y


Hembra-Macho y cablecillo para soldar los motores.

2. Ensamblando la parte mecánica de nuestro Robot Móvil:

Existen varios diseños en internet que nos pueden ayudar, así como existen plataformas
comerciales. Esto dependerá de cada uno,

Para nuestro tutorial usaremos la locomoción diferencial, que utiliza dos ruedas principales
que dan la tracción y por diferencia de velocidad en estas podremos realizar giros. Usaremos
esta configuración por ser fácil de implantar, a diferencia de la configuración Ackerman (la que
usan los vehículo motorizados) que es más complicado de implementar la parte mecánica.

La principal diferencia entre estas dos configuraciones es en el giro del robot, en la


configuración diferencial tenemos que invertir el giro en uno de los motores o simplemente
disminuir la velocidad, en cambio en la configuración Ackerman necesitamos de un
servomotor para girar las llantas delanteras.
Como indicamos nosotros vamos a trabajar en la configuración diferencial y adicionalmente a
las dos llantas principales necesitamos una o dos ruedas giratorias que nos servirán de apoyo,
esta rueda lo podemos poner adelante y/o atrás.

3. Conexiones eléctricas:
A continuación mostramos dos posibles conexiones dependiendo del tipo de motor que
tengan.

3.1 Para motores DC de 3-6VDC

Para este caso si necesitamos usar una sola batería, es mejor usar un step down y no alimentar
los motores con los 5V del Arduino, pues sobrecalentaríamos el regulador interno que tiene.
La betería tiene que ser superior a 6V para que pueda trabajar nuestro Arduino pero se
recomienda que tampoco sea superior a los 12V, adicionalmente la batería debe tener
suficiente corriente para que pueda alimentar los dos motores, de lo contrario nuestro
Arduino se va a estar reseteando cuando empiecen a funcionar los motores.

Antes de instalar el step down hay que regular al voltaje que deseamos, puede ser 6v, 5V, 3v,
etc, variando este voltaje también estamos modificando la velocidad de los motores.

3.2 Para motores DC de 12V DC


 

De esta forma el voltaje que ingresa a los motores es el mismo que el de la batería.
Dependiendo del tipo de motor puedes usar la batería que más se adecue a tu necesidad,
teniendo en cuenta que tenga la suficiente corriente y duración.

Las conexión son similares para otros tipos de Drivers Puente H, pueden revisar
nuestro tutorial de uso del L298N en caso estén usando ese módulo.

4. Programación de  nuestro Robot Móvil

Para que tengan una mayor comprensión trabajaremos el programa en dos etapas:

4.1. Test de movimientos

En este primer ejemplo probaremos los diferentes movimientos del robot, lo realizaremos aun
sin conexión Bluetooth para poder entender mejor el programa.

Para poder programar necesitamos desconectar el módulo Bluetooth, podemos desconectar


todo el módulo o simplemente dejar libre el RX (pin 0) del Arduino

El código es el siguiente:
 

//Pines de conexión del driver

int Pin_Motor_Der_A = 8;

int Pin_Motor_Der_B = 9;
Como se observa la programación es fácil, se ha programado cada movimiento del robot en
funciones separadas, las cuales llamamos desde el void loop(),

Para probar los movimientos hay que ir probando cada función y ver si nuestro robot se mueva
de la misma manera como se lo ha programado, por ejemplo así como está el código, después
de encender o resetear el Arduino debe moverse hacia delante por 2 segundos, seguidamente
debe girar a la derecha por dos segundos más y lego repetir la secuencia, si el robot gira en
dirección equivocada, entonces debemos de cambiar la polaridad de motor que gira en sentido
erróneo.
Podemos ir probando los movimientos de forma individual reprogramando cada vez para
cambiar el movimiento o programar todos a la vez con pausas entre movimientos, eso
dependerá de cada uno, después de estar seguros que nuestro robot funciona correctamente
pasamos a implementar la comunicación Bluetooth.

4.2. Robot Móvil controlado por Bluetooth

Para controlar el Robot usaremos una aplicación en nuestro celular, para esto debemos de
instalar en nuestro celular la siguiente aplicacion.

Naylamp Car: Instalar desde Google Play

La aplicación consta de 4 botones una para cada dirección, al presionar el botón para mover
adelante, la aplicación envía por Bluetooth el carácter ‘a’ y lo sigue enviando constantemente
mientras se tenga presionado. De igual manera para los otros botones, la aplicación envía ‘r’
para retroceso, ‘i’ para izquierda y ‘d’  para mover a la derecha.
Nuestro  Arduino debe de leer estos 4 caracteres y realizar el movimiento, además al no tener
un botón stop, nuestro Arduino deberá detener de forma automática los movimientos cuando
no se tenga presionado ningún botón.

Antes de cargar el programa a nuestro Arduino debemos de desconectar los cables de nuestro
Bluetooth y después de terminado la carga podemos volverlo a conectarlo.

El  código que debemos de cargar a nuestro Arduino es el siguiente:

//Pines de conexión del driver

int Pin_Motor_Der_A = 8;

int Pin_Motor_Der_B = 9;

int Pin_Motor_Izq_A = 10;

int Pin_Motor_Izq_B = 11;

int tiempo=0;
Como se observa al código del primer ejemplo solo le hemos agregado la parte de la
comunicación serial, en donde leemos el dato y comparamos para ver si es el carácter
correspondiente para realizar su respectivo movimiento, adicionalmente si durante 100
milisegundos no llega ningún dato detenemos el robot, y tan pronto le llega uno de los datos
reiniciamos la cuenta de los 100ms.

Una vez que tengan todo listo, tan solo hay que abrir la App, conectarnos a nuestro modulo
Bluetooth y empezar a mover nuestro robot con los botones.

PRODUCTOS RELACIONADOS COSTOS

Vista Rápida

En stock

Arduboard Uno R3

SKU: 000008

S/ 80,00
Vista Rápida

En stock

Driver Puente H L298N 2A

SKU: 000011

S/ 15,00
Vista Rápida

Agotado

Módulo Bluetooth HC06

SKU: 000024

S/ 25,00

Vista Rápida

En stock

Micromotor DC N20 12V/300RPM

SKU: 000131

S/ 20,00
La Nueva Red Neuronal

Entrada: Entrada: Salida: Salida: Salida: Salida:


Sensor Posición Motor Motor Motor Motor
Distancia Obstáculo 1 2 3 4

-1 0 1 0 0 1

-1 1 1 0 0 1

-1 -1 1 0 0 1

0 -1 1 0 1 0

0 1 0 1 0 1

0 0 1 0 0 1

1 1 0 1 1 0

1 -1 0 1 1 0

1 0 0 1 1 0
Siendo el valor de los motores 1 y 0:

Acción Motor 1 Motor 2 Motor 3 Motor 4

Avanzar 1 0 0 1

Retroceder 0 1 1 0

Giro Derecha 0 1 0 1

Giro Izquierda 1 0 1 0
El CARRO Arduino
En mi caso es un coche Arduino Elegoo Uno V3 de 4 motores. Si eres Maker, te resultará fácil
construir el tuyo o puede que ya tengas uno en casa para programarlo. El coche puede ser
cualquier otro, de hecho podría ser de 2 motores y modificando apenas la red funcionaría. En
caso de querer construirlo tu mismo explicaré brevemente los requer
Necesitaremos:

 Una placa Arduino Uno y una placa de expansión de IO

 o puede ser una placa Arduino Mega

 El controlador de motor L298N

 4 motores DC (o podrían ser 2) y sus ruedas

 Servo Motor SG90

 Sensor Ultrasónico

 Baterias para alimentar los motores (y la placa obviamente!)

 Chasis para el coche

 Cables!

Circuito del coche

No entraré en detalle, ya que va más allá de este tutorial (si a


muchos lectores les interesa, podría ampliar el artículo en el futuro)
pero básicamente tenemos el siguiente circuito (ignorar el
bluetooth y los sensores infrarrojos):
Mejoras a Futuro
Tengamos en cuenta que estamos teniendo como entradas los datos proporcionados por un
sólo sensor de distancia y un servo motor que nos indica si está a izquierda o derecha.
Podríamos tener más sensores de distancia, infrarrojos, medir velocidad, luz, sonido… en fin. Si
tuviéramos que programar “manualmente” ese algoritmo, tendría una complejidad enorme y
sería muy difícil de mantener o modificar. En cambio, hacer que una red neuronal aprenda
sería muy sencillo. Tan sólo agregaríamos features (columnas) a nuestro código  y volveríamos
a entrenar nuevamente la red. Voila!. Copiar y pegar los pesos obtenidos en Arduino, y nuestro
coche tendría la inteligencia de manejarse por sí mismo nuevamente.

Conclusión

Aplicamos Machine Learning y sus redes neuronales a un objeto del mundo real y vimos cómo
funciona, haciendo que el coche evite obstáculos y tome las decisiones por sí mismo, sin
haberle dado instrucciones ni código explícito.

También podría gustarte