martes, 11 de enero de 2011

Módulo Bluetooth... // Bluetooth module


A todos nos agrada la idea de comunicarnos con nuestro microcontrolador de forma inalámbrica y sin complicaciones.
Hasta ahora venía usando los típicos dispositivos 434MHz que dan bastante alcance, aunque hay que emplear algún tipo de cifrado de datos.
Hoy podemos utilizar módulos bluetooth ya ensamblados de bajo coste y sin complicaciones en su manejo.



En primer lugar, un poco de teoría.

Bluetooth es una especificación industrial para Redes Inalámbricas de Área Personal (WPANs) 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 y fijos.
  • Eliminar cables y conectores entre éstos.
  • Ofrecer la posibilidad de crear pequeñas redes inalámbricas y facilitar la sincronización de datos entre equipos personales.


Se denomina Bluetooth al protocolo de comunicaciones diseñado especialmente para dispositivos de bajo consumo, con una cobertura baja y basados en transceptores de bajo costo.
Gracias a este protocolo, los dispositivos que lo implementan pueden comunicarse entre ellos cuando se encuentran dentro de su alcance. Las comunicaciones se realizan por radiofrecuencia de forma que los dispositivos no tienen que estar alineados y pueden incluso estar en habitaciones separadas si la potencia de transmisión lo permite. Estos dispositivos se clasifican como "Clase 1", "Clase 2" o "Clase 3" en referencia a su potencia de transmisión, siendo totalmente compatibles los dispositivos de una clase con los de las otras.

Clase
Gama
DBm de
potencia
MW de
 potencia
Clase 3
1m fuera
0dBm
1mW
Clase 2
10 m al 
aire libre
4dBm
2,5 MW
Clase 1
100m al
 aire libre
20dBm
10mW
Fuente: Wikipedia

Mi módulo Bluetooth es de Calse 2 por lo que su alcance medio debe ser de unos 10 metros.
Otra cosa a tener en cuenta además de la Clase a la que pertenece, son los perfiles que soporta. Estos perfiles van a determinar el intercambio de datos entre los diferentes dispositivos Bluetooth. (Más información en wikipedia)
El módulo que poseo sólo contiene un perfil, que es más que suficiente para la mayoría de aplicaciones que yo le puedo dar al dispositivo. El perfil es el de puerto serie (SPP).



Ahora volviendo a las especificaciones del módulo.

El módulo bluetooth tiene unas medidas extremadamente pequeñas de 26.9x13mm y un grosor de 2.2mm es idóneo para utilizar en cualquier aplicación sin ocupar mucho espacio.
Está ensamblado con un chip CSR, BC417143 y una memoria flash de 8mbit para albergar el firmware.
Esa es la cuestión que me ha llevado a escribir esta entrada. Dado que la posibilidad de éste módulo no es más que la de interactuar con otro dispositivo host que lo controle. La idea reside en que gracias a modificaciones en el firmware podemos conseguir que éste módulo nos sirva para dispositivos que controlen a otros dispositivos como si fuesen maestros.
Es muy complicado encontrar por internet ciertos tipos de programas aunque con el paso del tiempo se logran encontrar pequeñas aplicaciones para llevar a cabo nuestras inquietudes.
Por la red existen diferentes versiones de este módulo, supuestamente uno mejora las características del otro aunque no puedo concretar en qué puntos.
Para manejar este módulo sólo nos podemos basar en comandos AT y resulta que el conjunto de comandos no es muy amplio; dado que sólo tenemos un perfil de uso.

Tras buscar un poco por internet, he dado con software para modificación de firmware  del módulo e incluso con un firmware adecuado para que sus funciones se incrementen.

Utilizando este esquema, se modifica el firmware del módulo, añadiendo así la posibilidad de utilizarlo como host de una aplicación.

La aplicación utilizada para éste propósito es BlueFlash, conectamos el módulo al puerto paralelo del ordenador mediante el esquema indicado arriba y procedemos a actualizar el firmware del módulo.


Pasos a seguir:

Antes de nada hay que obtener las PS-Keys para dejar nuestro módulo como único, es decir, guardar la MAC y números de serie para que después se diferencie de los demás. Esto es debido a que al copiar el firmware del dispositivo copiamos todos los datos entre ellos la MAC y va a ser necesario modificarlo después para que ésto no ocurra.

El programa PStools nos da acceso a todos los parámetros del mismo para modificarlos a nuestro antojo, al iniciar nos indica el modo en el que nos comunicamos con el dispositivo. La opción elegida es mediante SPI.


Cuando estamos conectados al módulo podemos observar todos sus parámetros mediante el programa así como una descripción de los valores por defecto y sus propiedades si queremos cambiarlos. El programa está muy conseguido y además es fácil de usar, eso sí, hay que saber un poquito acerca de Bluetooth.


Comentando un poco el programa por encima tiene opciones estándares de programación para establecer la velocidad de comunicación mediante UART, así como activar la opción de dormir en caso de no usarse y cosas similares. Todo ello en el menú Entry, en la opción canned operations.


Ahora trataremos como cambiar el firmware:


La comunicación se hace mediante SPI y utilizando el programa Blue Flash. A través de ese protocolo siempre podremos acceder a nuestro módulo para cargar firmware y modificar los parámetros de comunicación, como pueden ser los baudios de transmisión, la interface de comunicación, el nombre del dispositivo, la MAC,  y particularidades del bluetooth.


En la primera foto se observa el programa ya abierto, si bien podeis observar indica que el procesador está funcionando y tendremos que pulsar el boton Stop Processor para poder continuar.
Cuando el procesador se ha parado, nos aparecen datos del tipo de integrado que tiene y la capacidad de memoria que tiene asociada, en nuestro caso 128 sectores, 8megabits; en la parte superior indica el procesador que en nuestro caso es AMD compatible con BC4-EXT(coyote) y los numeros de identificación correspondientes.


Cuando el procesador está parado nos activa las opciones del programa para poder borrar el dispositivo descargar el firmware o subirle uno nuevo. Yo he realizado la descarga del software original (el que trae) para futuros usos, y he procedido a actualizar su firmware. La fecha del original databa del 2006 y el que he podido encontrar en la red es de 2009, puede que haya más modernos pero no accesibles y como el objetivo es hacerlo que funcione en modo maestro nos vale.


Al darle al botón download estamos introduciendo el nuevo firmware al dispositivo, y tras un cierto tiempo de espera nos indica que el proceso está terminado. Ha echado unos 10,77 segundos, no es mucho pero si tarda  un poco más no pasa nada, estará en torno al minuto el tiempo medio de programación.

Una vez realizado todo eso ya tenemos nuestro módulo en modo maestro, ¿¡parece fácil verdad!? Recordad que ahora es el momento de devolver al módulo su dirección MAC original que lo hace único, y para ello utilizamos nuevamente PSTOOLS y cargamos en él, el archivo de claves que guardamos anteriormente.

Ahora el modo de conexión cambia, e incluso hay que añadir conexiones que antes no se usaban. Principalmente para comunicarse necesita alimentación 3.3V y GND, después los canales de comunicación, por serie serían TX y RX. Ahora además hay que añadir el pin de reset, que hay que polarizarlo a nivel alto, y si queremos mandarle comando AT, tendremos que poner PIO(11) a nivel alto, dejándolo suelto o a nivel bajo para procedimientos normales (comunicación).


Fuentes:
  • http://endasmedia.ch
  • http://www.bluevox.com.cn/down/index.htm
  • http://nelsonchunglife.blogspot.com/2008/04/update-bt-firmware-if-your-bt-module-is.html

Enlaces:
  • BlueSuiteCasira 1.24: Este programa es imprescindible para realizar los pasos indicados en esta entrada, descárgalo desde aquí. Además encontraréis el firmware necesario para introducir en vuestro módulo bluetooth y algunos manuales.
  • BlueLab 4.1: Entorno de programación para tus BlueCore CSR. Incluye ejemplos y tutoriales.

Diseño:
  • zócalo de programación y pruebas. 
  • zócalo RS232.

9 comentarios:

  1. Hola, Q tal? acabo de comprar un par de estos modulos, la cuestion es podrias decirme sabes como utilizarlos para enviar una señal de audio y ademas datos uart entre un dispositivo a otro? Saludos espero tu respuesta

    ResponderEliminar
  2. Buenas noches Luis, acabo de ver tu commentario y la verdad que no puedo decirte que eso sea posible o por lo menos no con el firmware que tienen actualmente. Es cierto que tiene varios interfaces y que entre ellos uno serviría para audio pero el CSR BC4 no tiene capacidades multimedia en este módulo. Si he probado otro tipo de módulos en concreto con el BC5 y sí que se puede utilizar el audio en ellos. Aún no lo sé todo de estos módulos así que tampoco es una respuesta tajante, sólo puedo decirte que hasta lo que sé a día de hoy no se puede.

    Gracias por tu comentario en el blog y te animo a que me cuentes tus proyectos. Saludos.

    ResponderEliminar
  3. Muchas Gracias por responder, Mmm oye buscando modulos me tope con este http://dx.com/p/bluetooth-stereo-audio-diy-module-green-149089 Crees q sirva de manera practica para crear el receptor? Q me recomiendas para crear una interfaz de audio bluetooth? Saludos

    ResponderEliminar
  4. Si, ese módulo te puede venir bien, aunque para recomendarte algo me gustaría saber más acerca de lo que quieres hacer. Ése módulo te permite conectar tanto micrófono como altavoces y utilizar botones para controlar el dispositivo que envía la señal de música (protocolos A2DP y AVRCP) Pero hay dispositivos mucho más baratos que te permiten recibir la señal de música aunque prescinden del protocolo AVRCP. Por ponerte un ejemplo, si quieres ampliar las funciones de tu equipo de música HIFI, puedes añadir un pequeño módulo alimentado a 5V y conectar la señal desde un jack 3,5mm. Si quieres éste módulo después deberás amplificar la señal para atacar los altavoces, en fin todo es muy relativo y depende del objetivo que persigas y de lo complicado que te lo quieras montar.

    Si no quieres poner públicamente tu idea puedes escribirme al mail (curiosidadesford@gmail.com) y continuamos hablando por ese medio.

    Saludos.

    ResponderEliminar
  5. Hola, Muchas Gracias por el apoyo, Buenas noches..

    Mmm del proyecto tengo pensado crear un receptor y un transmisor de audio Bluetooth, Primero planteare el receptor, para el cual tengo pensado usar el modulo que te mostre (bc5), Mmm el cual estara dentro de una carcasa de plastico alimentado por una bateria de litio de 3.6v en la superficie de la carcasa los indicadores de estado y pulsadores para manejo del modulo, Las salidas de los altavoces conectadas a un mini amplificador de dos canales de 3watts y conectado a un conector jack 3.5mm estereo...
    Por favor dame ideas o q opinas? Saludos y de nuevo muchas Gracias con el apoyo

    ResponderEliminar
  6. A por cierto conoces algun esquema o modulo que tenga la cualidad de cargar las baterias de litio de 3.6v con una entrada de 5v?? saludos

    ResponderEliminar
  7. Muy buena idea, hay diversos aparatos comerciales con esa función; ¿sólo vas a integrar el módulo bluetooth con la batería o añades también el amplificador? ¿Alimentarás ambas cosas desde la misma tensión?

    Bueno, te iba a recomendar un módulo comercializado más baratito, que ya integra un conector jack, lo puedes comprar en ebay por unos 5€. Aún así viendo las características que le quieres dar a tu diseño, el módulo que me indicas está más completo. puedes colocar botones para controlar el equipo a distancia aunque sólo si lo deseas y además, ese en concreto no lo sé, pero hay módulos que ya integran el cargador para LIPO así que te ahorras elementos externos. Si aún así quieres esquemas para un cargador lipo, puedes mirar entre mis entradas del blog una batería que le hice a una cámara de fotos para prescindir de pilas.
    Me gustaría ver el datasheet de ese módulo para indicarte más cosillas sobre él.

    Saludos y espero que me comentes tus avances...

    ResponderEliminar
  8. Hola, Muchas Gracias por todo, y disculpa por no contestar antes, Estuve con algunos problemas de salud..
    Bueno volviendo al tema,
    Ya encargue el modulo para cargar las baterias lipo, solo estoy a la espera de la llegada para cambiar el amperaje de carga, En cuanto llegue te cuento, Por cierto no conoceras alguna web que venda portabaterias de litio Nokia BL-5C?

    En cuanto al modulo bluetooth para recibir audio, pare el proyecto puesto que no cuento con la informacion para escoger algun modulo especifico, espero tu ayuda en esto.

    Y ahora quiero formar ademas un puente de 2 modulos bluetooth serial espero crear un par de cajas ambas con modulos bluetooth "Hc-05" Me refiero algo como el siguiente mini esquema.
    Dispositivo serial > Modulo bt SLAVE/MASTER > Coneccion aerea < Modulo bt SLAVE/MASTER < dispositivo serial.
    la razon por la que deseo los modulos sean dobles es para cuando necesite utilizar alguno de ellos mediante la "Pc", Para ello necesito de nuevo tu ayuda, Si pudieras enviarme la lista completa de comandos AT y sus funciones? y las conecciones especificas para el modulo hc-06 y para el hc-05? para que funciona su coneccion key y que se hace con ella?
    Saludos en verdad espero tu respuesta, ya que no encuentro info por ningun lugar, Recomiendo ampliamente este sitio!
    Mi Email gr.r.r22@hotmail.com

    ResponderEliminar
  9. Hola, me podrías enviar el firmware del HC-05?
    Tengo un HC-06 y queria usarlo en modo master.
    email:ozopino@gmail.com

    Gracias

    ResponderEliminar