

Como hacer un manos libres bluetooth con identificación de llamada.
Escrito por blogElectronica en BluetoothHoy vamos a ver cómo hacer un sencillo manos libres bluetooth. En este artículo no voy a entrar en la parte de audio, sino que me voy a centrar en la parte display, es decir, que cuando nos entre una llamada en nuestro teléfono móvil podamos mostrar en un display externo, conectado vía bluetooth con el móvil, el número llamante o, en el caso que tengamos en la agenda de nuestro teléfono móvil ese número de teléfono asociado con el nombre de una persona, pues que nos aparezca también en el display el nombre de dicha persona.
Para ello voy a usar un módulo bluetooth de Bluegiga que cuenta con el firmware iWrap en su versión v4, y que me soluciona totalmente la vida para llevar a cabo de manera rápida y efectiva la aplicación. Realmente para lo que voy a hacer podemos coger cualquiera de los módulos WT12, WT11, WT41 o WT32. Funcionará con cualquiera, aunque si más adelante quisiera audio, yo me decantaría por el WT32, basado en el Bluecore5 de CSR, más indicado para aplicaciones multimedia (audio stereo).
Bueno, pues vamos a suponer que nuestro “indicador bluetooth de llamada entrante” cuenta principalmente con un micro (uno simple, con dos uarts), un display y un módulo bluetooth WT12 de Bluegiga. Tanto el display como el WT12 los tendremos conectados al micro mediante una uart.
Configuración del WT12
Lo primero que hay que hacer es configurar desde nuestro micro el módulo bluetooth WT12. Para ello desde la uart del micro conectado al módulo de Bluegiga enviaremos los comandos:
SET PROFILE HFP ON
SET PROFILE PBAP ON
RESET
Con ello activamos en el módulo WT12 los perfiles bluetooth HFP (Hands Free Profile) y el PBAP (Phone Book Access Profile, para controlar la agenda del teléfono móvil). Esto es necesario hacerlo sólo una vez, pues una vez hecho ya queda residente en la memoria NO volátil del WT12.
Asociación / conexión bluetooth.
Ahora lo que vamos a hacer es conectar el módulo bluetooth con nuestro teléfono móvil. Seguramente lo normal sería coger nuestro teléfono móvil, buscar en la sección bluetooth el módulo WT12 y pulsar “conectar”. Esto funciona (lo he probado) pero yo lo quiero hacer al revés, quiero seleccionar en mi display bluetooth mi teléfono móvil y hacer la conexión desde el display bluetooth hacia el teléfono móvil.
Para ello, desde el micro se envía al módulo WT12 el comando:
En mi caso, mi teléfono móvil tiene la MAC 78:47:1d:ab:78:e1 y tiene asociado mi nombre, “josegg”. Llegados a este punto en el display conectado al micro mostraríamos una lista de los nombres encontrados para que el usuario seleccionara el que corresponde a su teléfono móvil. Una vez seleccionado el micro podría grabarlo en su memoria flash. Ahora que nuestro micro ya tiene la MAC bluetooth de nuestro teléfono móvil ya puede conectarse a él. De hecho podríamos hacer que siempre que se enciende el display éste intente, de forma periódica, conectarse al teléfono móvil, así siempre que estuvieramos cerca del display bluetooth, éste se conectaría al móvil.
Para que el micro pueda conectarse vía bluetooth al móvil debe enviar el siguiente comando al módulo bluetooth WT12:
CALL 1
HFP 0 RING
HFP 0 CALLERID “681319891″ “” 81
HFP 0 RING
HFP 0 CALLERID “681319891″ “” 81
No. Si quieres mostrar datos de la agenda del teléfono móvil necesitas establecer otra conexión bluetooth, usando el perfil PBAP, que te permitirá obtener los datos de la agenda del teléfono móvil. Para ello, de forma análoga a lo que hemos hecho con el perfil HFP, desde el micro enviamos el siguiente comando al módulo bluetooth WT12:
Recomiendo la lectura del comando PBAP en el manual del iWrap, ya que incluye muchísima combinatoria. En el caso anterior no enviaría una especie de XML con los datos de la agenda. Usando estos datos, cuando entre una llamada y tengamos el número de teléfono, podremos buscar el nombre asociado a dicho número y mostrarlo en el display. Como véis es una aplicación supersencilla de hacer con módulos de Bluegiga (con lo que tienen iWrap).
¿Aplicaciones?
Pues las aplicaciones son evidentes. Añadiendo el audio (gestionando unos pocos comandos más del iWrap que veremos otro día) tendremos un completo manos libres bluetooth válido para cualquier aplicación. Sin audio, como hemos visto hoy, pues tenemos un simple indicador de llamadas bluetooth. A mi, por ejemplo, que de tanto en tanto hago excursiones en buggy y no oigo nada más que el motor, mi chica me riñe muchas veces porque no le cojo el móvil (ya que físicamente no lo oigo). Con un indicador como este en el salpicadero sí vería cuando entra una llamada. Igual me monto uno en el buggy para que me pueda localizar fácilmente … Mmmmm, aunque pensándolo un poco más … mejor no
Otro día vengo con más. Salu2!!!
Post relacionados:
- Como hacer un equipo GSM manos libres bluetooth con audio PCM Aprovechando que he tenido que probar el interfaz PCM de...
- Utilizando el AS como concentrador bluetooth. En el último post hablamos de los modulitos WT12 y WT11 de...
- Nuevo módulo bluetooth WT41 de Bluegiga. Hace ya tiempo hablé de los módulos WT11 y WT12 de...
- Gateway Bluetooth-GPRS Desde hace ya un tiempo quería escribir un post acerca...
- Nuevo módulo bluetooth de bluegiga WT32 Hoy día 19 de Septiembre Bluegiga, fabricante finlandés de módulos...
Etiquetas: bluetooth
muy buen artículo como siempre. una pregunta, indicas que la agenda puede descargarse mediante pbap y luego asi buscar el numero de telefono que llama para averiguar si está el nombre de quien llama. Si el micro es pequeño en memoria y la agenda es muy grande es complicado descargarla.
¿no hay una función en los bluegiga que permita enviar como parametro el número de telefono y que devuelva el nombre si existe????
muchas gracias.
Hola Jose Luis,
me alegra que te guste el post. Respecto a lo que dices, no, no es posible hacer lo que indicas mediante protocolo PBAP (no tienes un motor de BBDD en el lado del teléfono que te ejecute consultas tipo SQL sobre la agenda).
Si tienes problemas de memoria, lo que puedes hacer es ir descargando por partes la agenda, no tienes por qué descargarla toda de golpe. U otra forma, quizás la más rápida y eficiente en cuanto a memoria, es descargarla toda e ir procesando los datos en tiempo real según entran por la uart del micro.
Salu2!!!