Publicidad

viernes, 2 de diciembre de 2016

Programación inalámbrica de Arduino por Bluetooth

En este artículo vamos a enseñarte como puedes realizar la programación inalámbrica de Arduino por Bluetooth, es decir, como puedes cargar tus sketch a la placa ¡Sin cables!. Esto puede ser útil si requieres que tu arduino se encuentre lejos de tu lugar de trabajo (escondido en un gabinete, por ejemplo), en campo: para actualizar el firmware de placas que no son fácilmente accesibles, o simplemente no te agrada tener una gran cantidad de cables en tu área de trabajo.
Hay que aclarar que la programación inalámbrica de arduino por bluetooth tiene sus pros y contras, ya que la velocidad de carga del sketch será mucho menor, sin embargo, para realizar pruebas de programas pequeños (led blink, por ejemplo) o para realizar alguna actualización esporádica de firmware, puede resultar la solución ideal.
Para esta experiencia estaremos usando uno de nuestros módulos bluetooth HC-05, ya que este módulo se comercializa con un PCB que expone el pin “Status”. Este pin puede configurarse para cambiar a estado bajo cuando abrimos la conexión al puerto serie bluetooth, lo cual nos proporciona la forma ideal de activar el reset (y comenzar el funcionamiento del bootloader) del arduino.
En la foto de portada observamos el circuito que utilizaremos armado sobre un protoboard, pero que podemos armar de forma más definitiva usando un proto shield.

Configurando el módulo HC-05 para la Programación inalámbrica de Arduino por Bluetooth

Antes de que el HC-05 funcione como un programador, debemos configurar el módulo para que se comporte como lo esperamos. Debemos asegurarnos que el módulo tenga los siguientes parámetros ajustados:
  • En el caso de Arduino UNO con Optiboot: UART configurada a 115200 baudios, 8 bits, 1 bit de parada, sin paridad
  • En el caso de Arduino Duemilanove / Decimilia: UART configurada a 56700 baudios, 8 bits, 1 bit de parada, sin paridad
  • Configurar la polaridad del pin de state para la polaridad adecuada
Ya explicamos en otra entrada el funcionamiento del módulo bluetooth HC-05 y como entrar al modo de configuración. Por lo que solamente dejamos la secuencia de comandos que debemos introducir para poner a funcionar el módulo como “Programador Inalámbrico” para tu arduino. Si hay dudas, te recomendamos revisar nuestra otra entrada que aborda con más profundidad el tema de la configuración del bluetooth HC-05.
Los comandos a enviar al HC-05 para configurarlo son los siguientes:
Linea por linea lo que hacemos es lo siguiente:
  1. Restaurar la configuración de fabrica
  2. Configurar en modo esclavo (puente serial transparente desde la PC)
  3. Configurar la polaridad del pin 32 (etiquetado como State en nuestros módulos) del módulo HC-05 para que vaya a estado bajo cuando un dispositivo se conecte al módulo
  4. Configurar el baudrate a la velocidad del bootloader
  5. Salir del modo de configuración e iniciar la operación normal del módulo HC-05
Si eres curioso, puedes consultar la hoja de datos del bluetooth HC-05 para ver los detalles de cada comando utilizado.
En esta foto podemos ver que un adaptador USB a TTL puede ser de gran ayuda para configurar el módulo bluetooth HC-05, conectándolo al puerto USB de la computadora.

Conexión del Bluetooth HC-05 para la Programación inalámbrica de Arduino por Bluetooth

Conectaremos los pines TX y RX del bluetooth a los pines RX y TX del arduino respectivamente (van cruzados). El pin status del bluetooth pasará a funcionar como reset y debemos conectarlo al pin “reset” del arduino a través de un capacitor cerámico de 100 nF. Las resistencias que se muestran en el circuito son para reducir el voltaje del pin TX (salida de 5 volts) de arduino a algo cercano a 3.3 Volts, que es el nivel lógico que admite el módulo bluetooth. Las conexiones van como se muestra en la siguiente imagen:Circuito para la programación inalámbrica de Arduino por Bluetooth
Una vez que tengamos armado el circuito puede verse de la siguiente manera en un protoboard.
programacion_inalambrica_de_arduino_por_bluetooth_01
En este momento ya tenemos el hardware listo para intentar realizar la programación de Arduino por Bluetooth. Por lo que podemos abrir nuestro IDE y realizar el proceso de forma habitual, veremos que es muy similar a lo que haríamos para cargar un sketch mediante un cable USB. Cabe destacar que cada vez que un dispositivo bluetooth se enlace con el módulo se va a producir el reset del arduino, dado que el pin de “Status” cambiará a estado bajo. Hay que considerar esto, si deseamos que, por ejemplo, se conserve el estado de las salidas digitales (se pierde en el reset).

Programación inalámbrica de Arduino por Bluetooth

Una vez que ya tenemos el módulo bluetooth configurado y el circuito montado, podemos intentar la programación inalámbrica de Arduino por Bluetooth por primera vez. En este punto vamos a asumir que ya tenemos el módulo HC-05 emparejado con nuestra PC y tenemos el puerto serie sobre bluetooth mostrándose correctamente en nuestro administrador de dispositivos, la forma de hacer esto varía de acuerdo al sistema operativo y no lo vamos a incluir aquí. Pero debemos revisar que en el administrador de dispositivos de windows se muestre correctamente los puertos serie virtuales de bluetooth, como se muestra a continuación:
programacion_inalambrica_de_arduino_por_bluetooth_00
Abrimos el IDE de arduino como es habitual y seleccionamos el nuevo puerto serie que se creo cuando emparejamos el bluetooth con la PC.
programacion_inalambrica_de_arduino_por_bluetooth_01
Abrimos el sketch de “LedBlink” que se encuentra en la carpeta de ejemplos y presionamos el botón “Cargar” para comenzar la descarga del programa a la tarjeta arduino.
programacion_inalambrica_de_arduino_por_bluetooth_02
La carga del programa debería transcurrir de forma normal, hasta que se comience a ejecutar el código cargado en el arduino. Si hay errores puede deberse a que conectamos alguna de las señales incorrectamente o que no configuramos correctamente la polaridad del pin “state”.
NOTA: Si por algún motivo el sketch no se puede grabar en el arduino, hay que experimentar con el valor del capacitor, normalmente es buena idea aumentar su valor hasta garantizar que el arduino se resetea de manera correcta al abrir el puerto serie sobre bluetooth. Los valores recomendamos son de 100 nF a 1 uF.

Conclusiones

  • La Programación inalámbrica de Arduino por Bluetooth es una buena alternativa cuando no tenemos a la mano la tarjeta para conectarla al puerto USB de la computadora
  • Podemos convertir cualquier arduino en una placa inalámbrica, capaz de ser programada a distancia mediante bluetooth. Incluso podemos utilizar solamente el ATMEGA328 con el módulo bluetooth dentro de algún desarrollo.
  • El baudrate esta fijo en 115200 baudios, por que es la velocidad de descarga para optiboot (bootloader de arduino UNO).
  • Cualquier sketch que desee transmitir información a la PC mediante bluetooth (por ejemplo con Serial.write()), debe hacerlo utilizando la velocidad de 115200 baudios, ya que el bluetooth permanecerá configurado de esa forma.
  • La carga de los sketch puede durar más si se usa bluetooth, al parecer se debe a la sobrecarga de los protocolos involucrados en la transmisión inalámbrica.
  • Recordemos que cada vez que nos conectemos con un dispositivo bluetooth al arduino, este se va a reiniciar.

No hay comentarios.:

Publicar un comentario

Publicidad