En la tercera actividad didáctica, aprenderemos a conectar nuestra placa Arduino por Bluetooth. Es decir, vamos a conectar y manejar nuestro coche robot con un dispositivo móvil mediante bluetooth. Para ello, conectaremos el módulo Bluetooth HC-05b que vimos en un post anterior, a una placa de Arduino UNO usando un protoboard y un circuito electrónico muy sencillo. Además, durante esta actividad, construiremos una aplicación móvil para poder comunicarnos de forma inalámbrica con el módulo Bluetooth HC-05. Para ello, aprenderemos a usar la plataforma de desarrollo de aplicaciones móviles APP Inventor, que también vimos en el apartado anterior. De esta manera, podemos enviar y recibir señales entre el circuito electrónico y la aplicación móvil.
Materiales necesarios
- 1 protoboard
- 1 placa de Arduino UNO (Pincha aquí para comprar)
- 1 cable USB con conectar macho B
- 1 módulo Bluetooth HC-05 (Pincha aquí para comprar)
- cables
Código fuente con Arduino para conectar por Bluetooth
En esta actividad didáctica, donde usaremos un módulo Bluetooth HC-05 para comunicarnos con una aplicación móvil y poder enviar y recibir señales, no crearemos ninguna librería. Esto es, porque las instrucciones que usaremos en nuestro sketch para poder comunicarnos con la aplicación móvil serán pocas y sencillas. Además, haremos uso de una librería standard que viene instalada en el IDE de Arduino, en este caso la librería SoftwareSerial.
Sketch de Arduino
Dicho esto, empezaremos creando un sketch con el IDE de Arduino siguiendo el Anexo 1, que mostraremos a continuación, y explicaremos más detalladamente:
Lo primero que hacemos, es incluir las librerías que usaremos en nuestro sketch de pruebas. En este caso,
Con el comando SoftwareSerial BT(7,6), estamos creando una variable de la librería que estamos usando para comunicarnos por bluetooth. En este caso SoftwareSerial.h. La estamos inicializando con los pines RX y TX del módulo Bluetooth HC-05, con los pines 6 y 7 de nuestra placa Arduino UNO.
Luego, tenemos el método void setup(). Este método siempre estará en todos nuestros sketchs de Arduino. Será donde inicialicemos las variables y demás de nuestro proyecto. Hemos marcado la frecuencia de nuestro proyecto a 9600, tanto para escribir a través del puerto serie de nuestra placa Arduino UNO como del módulo Bluetooth HC-05.
Por último, tenemos el método void loop(), el cual también estará presente en todos nuestros sketchs. Se ejecuta constantemente en bucle a la velocidad o frecuencia que hemos marcado anteriormente en el método setup. En nuestro sketch de test, hemos creado un bucle que lee desde teclado una letra y la envía al módulo Bluetooth HC-05. También lee desde el módulo Bluetooth HC-05 y la recibe nuestra placa Arduino UNO (en este caso, lo que haremos será mostrarla en el monitor Serial, como hemos visto anteriormente).
Como conectar Arduino por Bluetooth
Para realizar el diseño electrónico de la actividad didáctica, consistente en conectar nuestra placa Arduino por bluetooth con una aplicación móvil. De esta manera, podremos enviar y recibir señales con nuestro Arduino UNO mediante un módulo Bluetooth HC-05. Vamos a realizar lo siguiente. Lo primero que haremos será anclar el módulo Bluetooth HC-05 en la protoboard. En la siguiente imagen, podemos ver los pines que trae dicho módulo electrónico, y explicaremos como debemos conectarlo.
Pines y funcionalidad del módulo Bluetooth HC-05
Pasos para conectar los pines al módulo Bluetooth HC-05
Paso 1:
Teniendo en cuenta las especificaciones de este módulo electrónico, y las salidas que tiene de tierra GND y alimentación 5V, conectaremos los siguientes pines a las filas de la protoboard pintados para conectar salidas de polo negativo (-) GND y positivo (+) 5V.Paso 2:
Por último, y viendo la escasa complejidad de este módulo Bluetooth HC-05, conectaremos el resto de los pines de la siguiente manera:- – Conectar el pin RXD del módulo Bluetooth HC-05 al pin 6 de la placa Arduino UNO.
- – Conectar el pin TXD del módulo Bluetooth HC-05 al pin 7 de la placa Arduino UNO.
Una vez tengamos ya el circuito electrónico totalmente conectado y el sketch del código fuente cargado en la placa de Arduino UNO, ya podremos probar a enviar y recibir señales. Estableceremos comunicación entre nuestra placa Arduino UNO y la aplicación móvil que desarrollaremos con la plataforma para aplicaciones móviles APP Inventor en el apartado siguiente. Usaremos el módulo Bluetooth HC-05. Previamente, podremos ayudar el monitor serial para poder probar nuestro circuito, tal como hemos hecho en las actividades didácticas anteriores.
Circuito electrónico con Arduino UNO
Aplicación móvil con APP Inventor para conectar por Bluetooth
Para poder conectar y comunicarnos con el módulo Bluetooth HC-05, vamos a crear una aplicación móvil con la plataforma APP Inventor. Esta plataforma online gratuita fue creada con el propósito de aprender y crear aplicaciones móviles sin tener grandes conocimientos de programación. Ademas, podemos aprender de una forma muy intuitiva, pedagógica, sencilla y divertida.
Lo primero que debemos hacer, es crear una cuenta y familiarizarnos con el entorno, como podemos ver más abajo en el Anexo 4 sobre introducción y primero pasos en APP Inventor. Una vez que estemos dentro de la plataforma APP Inventor, vamos a crear un proyecto nuevo para la aplicación móvil que usaremos para comunicarnos con el módulo Bluetooth HC-05, lo podemos llamar Bluetooth_HC05_v1.
Interfaz del diseño con App Inventor
Para la parte de la interfaz del diseño de la aplicación usaremos diferentes layout. Si lo tenemos en lenguaje español se llama disposición, y lo usaremos para organizar los diferentes botones y componentes que necesitaremos. En nuestro diseño, crearemos los siguientes elementos:
- – Dentro de un layout que llamaremos Bluetooth HC-05, tendremos un elemento de tipo ListPicker. Lo usamos para mostrar los diferentes dispositivos bluetooth que detectamos (nos conectaremos al dispositivo Bluetooth HC-05 que detectemos). Además, un label para mostrar si estamos conectados o no. Y por último, un botón (en realidad es una imagen clickable) para desconectarnos del dispositivo Bluetooth (este se mostrará sólo cuando estemos conectados).
- – En otro layout que llamaremos Motores, tendremos cinco botones (en realidad es una imagen clickable). Los usaremos para controlar las acciones de los motores, es decir, ir hacia delante, hacia atrás, girar a la izquierda, girar a la derecha, y pararnos.
- – En el último layout, que llamaremos Luces, tendremos 4 botones (en realidad es una imagen clickable). Estos serán para realizar diferentes acciones y juego de luces con los leds. Esto es, uno será para apagarlas, otro para encenderlas, otro para encender las luces traseras, y el último para activar alguno de los juegos de luces que hemos implementado anteriormente en nuestra librería.
- – Además, es necesario añadir un elemento de conectividad para bluetooth.
Interfaz del diseño realizado con App Inventor
Programación visual con App Inventor
En cuanto a la programación visual con bloques, como podemos ver en la siguiente imagen, no es más que realizar ciertas acciones a eventos de los componentes que añadimos anteriormente en la parte de la interfaz del diseño.
Para empezar, creamos dos procedimientos que denominaremos Inicializar y Conectado. El primero establecerá los elementos anteriores de tal manera que mostrará el elemento ListPicker y ocultará el botón de desconectar. Además de ocultar también los layout con los botones para controlar los motores y las luces. Este procedimiento será el encargado de inicializar los elementos cuando estemos conectados a ningún dispositivo bluetooth. El segundo procedimiento establecerá los elementos para cuando estemos conectados a algún dispositivo bluetooth. Es decir, mostrar el botón de desconectar además de los layout con los botones para controlar los botones y las luces, y ocultará el elemento ListPicker.
También tendremos ciertas acciones sobre eventos del elemento que se encarga de buscar y conectar a dispositivos bluetooth, el elemento ListPicker junto al elemento bluetooth, tal como vemos en la imagen. Si el elemento bluetooth que hemos añadido en el interfaz del diseño se conecta a algún dispositivo bluetooth, se hará una llamada al procedimiento Conectar. Si se consigue conectar, hará una llamada al procedimiento Inicializar (también se hará una llamada a este procedimiento al inicializar la aplicación móvil).
Por último, estableceremos las acciones a realizar cuando pulsemos alguno de los diferentes botones. Tal que si pulsamos el botón desconectar, haremos una llamada al procedimiento Inicializar. Mientras si pulsamos cualquiera de los otros botones enviaremos un carácter al dispositivo bluetooth que estemos conectado (que en nuestro caso será a nuestra placa Arduino UNO mediante el módulo Bluetooth HC-05). Estos caracteres que enviamos a través de Bluetooth, serán importantes para establecer las diferentes acciones que realizará el coche robot, y que veremos en la siguiente y última actividad didáctica. De tal manera que si pulsamos el botón para:
- – Ir hacia adelante, enviaremos por bluetooth el carácter w.
- – Ir hacia atrás, enviremos por bluetooth el carácter x.
- – Girar a la izquierda, enviaremos por bluetooth el carácter a.
- – Girar a la derecha, enviaremos por bluetooth el carácter d.
- – Para parar los motores, enviaremos por bluetooth el carácter s.
- – Con la imagen de la bombilla apagada, enviaremos por bluetooth el carácter p.
- – El primero de los botones con la imagen de la bombilla encendida, enviaremos por bluetooth el carácter u.
- – El segundo de los botones con la imagen de la bombilla encendida, enviaremos por bluetooth el carácter i.
- – El tercero de los botones con la imagen de la bombilla encendida, enviaremos por bluetooth el carácter o.
Programación visual con bloques realizado con App Inventor