miércoles, 6 de julio de 2016

Robot Miniskybot 2.0 controlado a través de Bluetooth


Hoy os voy a enseñar a controlar, a través de Bluetooth, el “Robot Miniskybot 2.0” que construimos en un POST anterior. Para ello utilizaremos una aplicación, para Smartphones con Sistema Operativo Android, llamada ”Wise HC-06 Carrinho Bluetooth”, mediante la cual, enviaremos una cadena de caracteres única a través de Bluetooth, cada vez que pulsemos cualquiera de las flechas de control de las que dispone la aplicación, a un módulo HC-06 que tendremos conectado a nuestro Arduino, para que este decodifique las cadenas enviando las ordenes de movimiento a los dos servos de rotación continua  del “Robot Miniskybot 2.0", que son los encargados de generar el movimiento.

Aplicación para Android “Wise HC-06 Carrinho Bluetooth”


La aplicación para Android “Wise HC-06 Carrinho Bluetooth” la podemos obtener directamente desde la “Play Store” de nuestro Smartphone Android o instalarla a través de nuestro PC en este enlace.  

Como de momento no se ha trabajado nunca con dispositivos Bluetooth en este BLOG, nos vamos a parar un poco para poder comprender este tipo de comunicación y en concreto describir el funcionamiento del módulo Bluetooth HC-06, que tan comúnmente se va a utilizar junto con nuestro Arduino, puesto que es inevitable utilizar un módulo Bluetooth HC-06 o HC-05 como puerta de enlace entre los dispositivos Bluetooth, tales como Smartphones o PC´s, y nuestro Arduino, ya que por sí solo no es capaz de comunicarse con este tipo de tecnología.

Bluetooth es una especificación industrial para Redes Inalámbricas de Área Personal (WPAN) que posibilita la transmisión de voz y datos entre diferentes dispositivos mediante un enlace por radiofrecuencia en la banda ISM de los 2,4 GHz. Los principales objetivos que se pretenden conseguir con esta norma son:

·         Facilitar las comunicaciones entre equipos móviles.

·         Eliminar los cables y conectores entre éstos.

·         Ofrecer la posibilidad de crear pequeñas redes inalámbricas.

·         Facilitar la sincronización de datos entre equipos personales.

Los dispositivos que con mayor frecuencia utilizan esta tecnología pertenecen a sectores de las telecomunicaciones y la informática personal, como PDA, teléfonos móviles, computadoras portátiles, ordenadores personales, impresoras, cámaras digitales y en nuestro caso el módulo Bluetooth HC-06 que vamos a interconectar con nuestro Arduino.

Logotipo del dispositivo Bluetooth
 
El módulo de Bluetooth HC-06 se trata de un dispositivo relativamente económico y que habitualmente se vende en un formato que permite insertarlo en un protoboard y cablearlo directamente a nuestro Arduino, incluso sin realizar soldaduras. Algunas de las características más importantes de este dispositivo se describen a continuación:

·         Compatible con el protocolo Bluetooth V2.0.

·         Voltaje de alimentación: 3.3VDC – 6VDC.

·         Voltaje de operación: 3.3VDC.

·         Baud rate ajustable: 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200.

·         Trabaja exclusivamente en modo esclavo, es decir, solo recibe datos.

·         Corriente de operación: < 40 mA

·         Corriente modo sleep: < 1mA


Módulo Bluetooth HC-06

Podemos cambiar las configuraciones de  velocidad de transmisión de datos, el código de emparejamiento, el nombre, etc. mediante un protocolo denominado comandos AT. Para poder hacerlo es necesario que el HC-06 no este emparejado ni siendo usado por ningún dispositivo aunque no es el propósito de este POST, sino que simplemente utilizaremos los valores por defecto que el módulo trae programados, aunque es posible que hayan sido manipulados y tengamos que recurrir a los comandos AT.

·         Nombre por defeco: “linvor” o “HC-06”.

·         Código de emparejamiento por defecto: 1234.

·         La velocidad por defecto (BAUD RATE): 9600. 

Para conectar el módulo Bluetooth HC-06 con la aplicación de Android, lo primero que tendremos que hacer es encender el Bluetooth de nuestro Smartphone y cerciorarnos de que el módulo Bluetooth HC-06 esté correctamente alimentado (+5V y GND) y conectado a nuestro Arduino de la siguiente manera:

·         Pin TX del módulo Bluetooth HC-06  à Pin digital 10 de Arduino.

·         Pin RX del módulo Bluetooth HC-06  à Pin digital 11 de Arduino.

Posteriormente tendremos que vincular el módulo Bluetooth HC-06 con nuestro Smartphone como si de cualquier otro dispositivo Bluetooth se tratara, es decir, una vez encontrado el módulo Bluetooth HC-06 (con nombre  linvor” o “HC-06” si no lo hemos modificado mediante comandos AT), tendremos que ingresar el código de emparejamiento (1234 si no la hemos modificado mediante comandos AT). Por último, abriremos la aplicación y pulsaremos sobre el icono del Bluetooth para que nos muestre la lista de dispositivos vinculados a nuestro Smartphone, donde tenemos que seleccionar la conexión con nombre “HC-06” para conectarnos al módulo Bluetooth HC-06. Solo tendremos que fijarnos que si hemos realizado la conexión Bluetooth correctamente, el LED de conexión del módulo Bluetooth HC-06 dejará de parpadear para finalmente quedarse encendido todo el tiempo y de esta manera sabremos que todo está ya listo para que comience a moverse el “Robot Miniskybot 2.0” en distintas direcciones, cada vez que pulsemos sobre las diferentes flechas de la aplicación. 

Para la programación del robot he tenido en cuenta los cinco estados siguientes:

          Avance: Recibe la cadena “F1S0à Flecha arriba de la aplicación.

          Retroceso: Recibe la cadena “T1S0à Flecha abajo de la aplicación (si el robot está parado).

          Paro: Recibe la cadena “T1S0à Flecha abajo de la aplicación (si el robot está moviéndose).

          Derecha: Recibe la cadena “D1S0à Flecha derecha de la aplicación.

          Izquierda: Recibe la cadena “E1S0à Flecha izquierda de la aplicación. 

Al pulsar cada una de las flechas de la aplicación, el robot se moverá en una dirección concreta,  a excepción de la flecha hacia abajo, puesto que si el robot está en movimiento, al pulsarla el robot se para, y si el robot está parado, al pulsarla se moverá marcha atrás (retroceso). El tratamiento de las cadenas de caracteres que recibe nuestro Arduino a través de Bluetooth se realiza dentro del programa mediante sentencias “if”, además de incluir múltiples comentarios que nos aclaran el funcionamiento de todo el sistema.   

Por último y antes de que se me olvide, tengo que darle las gracias a “Adriano Moutinho” por haber creado una aplicación tan simple y funcional, y a vosotros deciros que es muy importante dejar votos positivos en las aplicaciones gratuitas que os descarguéis, para que los desarrolladores obtengan algún tipo de beneficio con su trabajo, aunque solo sea el del reconocimiento del mérito personal.



Lista de Materiales:

 
·         Arduino UNO Rev.3.

·         Cable USB tipo A-B.

·         Módulo Bluetooth HC-06 (Esclavo).

·         2 Servos de rotación continua (SM-S4306R).

·         Portapilas 6xAAA con conector Jack macho de 2,1mm.

·         6 pilas recargables AAA de 1000mAh con cargador.

·         Robot Miniskybot 2.0:
o   Chasis y dos ruedas impresos en plástico ABS.
o   4 tornillos de  M3x10mm  y 4 tuercas M3.
o   Canica de 16mm de diámetro.
o   2 Juntas tóricas de 50mm de diámetro y 3 mm de grosor.

·         Gomas elásticas para la sujeción de los elementos.

·         Smartphone con S.O Android.

·         Aplicación “Wise HC-06 Carrinho Bluetooth” (Play Store).

·         Protoboard.

·         Cables de conexión.

  
Código del programa: