Siguiendo el tutorial de protocolos Bluetooth, ahora vamos a explicar en que consiste realmente un protocolo.
Como vimos en el post anterior, definiamos una interpretación para los mensajes que obteníamos a través de la aplicación Robopad++, pero esta manera de comunicarse con un dispositivo se puede realizar con cualquier otra aplicación que posea comunicación Bluetooth.
Esta vez vamos a utilizar una aplicacion una aplicación llamada ArduDroid. Esta aplicación está desarrollada para poder manipular los pines de nuestra placa de forma remota. También posee una función para enviar información de la placa a la aplicación. De esta manera podríamos crear una comunicación bidireccional de mensajerís. Como un wassapp pero utilizando tecnología Bluetooth.
Lo primero que deberemos hacer es observar qué mensajes nos proporciona la aplicación y saber interpretarlos.
El interfaz de la aplicación es el siguiente.
Como podremos observar es muy sencillo.
- Arriba del todo tenemos unos sliders para manejar las salidas analógicas de nuestra placa, asociados a los PWM de la placa. El PWM es un tipo de señal que interpreta una salida digital como si fuera analógia permitiendole poseer un rango de valores. Lo que tenemos que conocer de esto es que se asocian a los pines digitales 3,5,6,9,10,11, que son los pines que aparecen arriba.
- Despues tenemos botonoes desde el 2 al 13 y que se encargarán de encender o apagar el correspondiente pin.
- Y por último tenemos unos campos de escritura y lectura de texto, que se utilizarán para enviar mensajes a nuestra placa y si la placa nos envia un mensaje que nos devuelva un resultado.
Este es el funcionamiento que nosotros deberemos de programar en la placa según el protocolo especificado que veremos ahora. Pero se puede alterar el programa para cambiar el comportamiento de nuestro programa cuanto queramos. NO EXISTE UN ÚNICO MODO DE FUNCIONAMIENTO. Tenemos total libertad para asociar el click de un botón a cualquier acción. Todo depende de cómo lo programemos.
Si utilizamos el programa que vimos al principio de estos tutoriales o buscamos readBluetooth dentro de la sección Explora de Bitbloq, podremos observar los mensajes que obtenemos de la aplicación.
Para saber que significan todos estos numerajos y símbolos, debemos asociar el mensaje con las acciones.
Por ejemplo si hago click una vez sobre el botón 2, aparece el mensaje *10|02|3#. Su identificación es la siguiente. Para saber que se trata de un mensaje de esta aplicación, se identifica mediante un comienzo de texto con el símbolo * y sabremos que termina el mensaje cuando aparece el símbolo #. Y quizás lo más importante es la identificación de los separadores | para leer un número u otro.
El primer número; en este caso el 10; sirve para identificar la acción.
- 10 –> Apretar un botón
- 11 –> Mover un Slider
- 12 –> Mandar un mensaje
Una vez identificada la acción, el siguiente número nos especifica el PIN al que se asocia la acción. Es decir, si apretamos el botón 3, el PIN que queremos encender evidentemente será el número 3.
Y por último el valor que ha de tomar ese PIN. Aquí hay que tener en cuenta dos cosas:
- Al apretar un botón se determinan dos estados. ON y OFF que en este caso se asocian a 2 números. El número 3 significa ON y al presionar una segunda vez, aparece un valor 2 que quiere decir que esta apagado; osea en OFF.
- Al mover un slider, el número que aparece en tercer lugar es la posición a la que hemos movido el slider.
Los números en el envío de mensajes no significan nada, lo único que nos importa es el mensaje que aparece en cuarto lugar y se cierra con un símbolo #.
Bien, pues conociendo toda esta parafernalia, ya conocemos el protocolo de comunicación de esta aplicación con la placa Arduino. Ahora vamos a programar la placa para que nos responda correctamente a las acciones del usuario y bueno, no os asustéis, que lo explicaré paso por paso, pero primero echémosle un vistazo al completo.
En este ejercicio, hemos utilizado practicamente de todo y es una buena manera para repasar loc conceptos más avanzados de nuestro kit de robótica. Comunicación Bluetooth, Arrays, Funciones, variables locales y globales, funciones matemáticas, tratamiento de tipos de dato. Así que antes de ver la solución os animo a que lo hagáis por vuestra cuenta. 🙂