entrada-POST

En esta entrada del curso de programación con Protocoder vamos a aprender cómo controlar mediante la voz un Printbot.

Para controlar el Printbot, en este caso el PrintBot Evolution, utilizaremos un “sketch” de Arduino que, entre otras cosas, controlará el movimiento, y un programa de Protocoder en el que utilizaremos el control por voz.

Código Arduino

El código Arduino se ha explicado en esta entrada por si quieres volver a recordarlo. No se necesita realizar ninguna modificación. Crearemos el código de Protocoder para que funcione con ese código Arduino.

EVO-ILU
Para que el PrintBot entre en los diferentes modos, tanto de movimiento automático como manual, el código Arduino espera recibir ciertas palabras clave:

  • Movimiento manual: avanzar, retroceder, izquierda, derecha y 180
  • Movimiento automático: obstáculos, siguelíneas y sigueluz

En la función writeData determinamos qué palabra se ha leído a través de la conexión Bluetooth y determinamos cuáles serán las funciones a realizar:

Código Protocoder

Voice-Control
En Protocoder vamos a crear una interfaz que conecte por Bluetooth y envíe cadenas de caracteres a la placa Zum o Arduino con módulo Bluetooth. Para crear la interfaz, utilizaremos la cabecera que venimos utilizando en los programas de Protocoder:

Para controlar la conexión Bluetooth utilizaremos un botón para conectar y otro para desconectar.

boton1

Al pulsar sobre connect, aparecerá un diálogo donde podremos escoger el dispositivo al que conectarnos, que previamente se ha emparejado a través de los ajustes Bluetooth de Android.

Al pulsar sobre Disconnect, se cerrará la conexión y cambiaremos el valor de la variable btStatus a false, que utilizamos para conocer el estado de la conexión Bluetooth desde otras partes del programa.

Además, utilizamos la función send para enviar cadenas de caracteres a través de Bluetooth:

La variable rightOrder la utilizamos para determinar si las ordenes que se han leído por los comandos de voz son correctas o no. En el caso de que sean correctas imprimirá en pantalla la orden que se ha dicho. En el caso de que sean incorrectas se mostrará un mensaje de error.

Para utilizar el control por voz, creamos un botón en el que incluiremos la función y creamos dos variables str, a la que asignaremos el texto a enviar por Bluetooth, y rightOrder.

boton2

En primer lugar se comprueba que hayamos conectado a Bluetooth con la orden if(btStatus). Si se ha conectado, se iniciará el reconocimiento por voz con la función media.voiceRecognition(function (text){ });. Cuando se haya detectado alguna palabra, se comparará con las ordenes preestablecidas, se asignará la palabra clave a enviar a la variable str y asignaremos el valor true a la variable rightOrder. Si rightOrder tiene el valor true se modificará el texto de pantalla por la orden a enviar y se enviará a través de la función send().

Para continuar, generamos la variable de texto que utilizaremos para mostrar por pantalla el texto que se ha reconocido mediante comandos de voz y cambiamos su tamaño a 40:

boton3

Para finalizar, creamos un botón de parada para mayor seguridad, aunque también es posible parar el PrintBot mediante comandos de voz:

boton4

¡Hasta la próxima!