Módulo Bluetooth para canal RFCOMM

Necesito encontrar un módulo Bluetooth 2.1 + EDR que permita que un uC se comunique directamente a través de un canal RFCOMM una vez que se haya establecido.

El problema es que solo puedo encontrar módulos que implementen la pila completa hasta el perfil de puerto serie (SPP), que no es compatible con el dispositivo que se emparejará con el módulo.

¿Alguien sabe de módulos que puedan hacer esto, cómo se llaman o qué/dónde buscar?

Editar: sé que es posible simplemente con el controlador bluetooth "en bruto", y luego hacer que el uC implemente la pila completa y se comunique usando la HCI. Pero buscando una solución más simple. Si este tipo de módulo no existe, me pregunto si hay alguna implementación de pila de Bluetooth que funcione bien en la familia ARM Cortex-M3.

Para aclarar, sé que mi comentario no es tan útil como podría ser, pero no he tenido tiempo de investigar realmente btstack, así que lo dejo allí como un camino potencial a seguir.

Respuestas (1)

He probado los módulos bluetooth Bluegiga con interfaz iwrap ascii y le permiten abrir conexiones rfcomm "en bruto".

El más básico es el WT12 que tiene las características de rfcomm que necesita. WT11i es una versión de largo alcance y WT41 es una versión de súper largo alcance. WT32 tiene funciones de audio más avanzadas, como A2DP.

Debe crear una cuenta en su techforum para obtener acceso a la última guía de usuario de iwrap> ( https://techforum.bluegiga.com/protectedstore/29110/8424/127/bluegiga_1698/193d9e1a2cdeccd840dd613f9f3262e5/iWRAP5_User_Guide.pdf )

El proceso es ligeramente diferente dependiendo de si está abriendo un canal rfcomm desde el módulo al dispositivo externo, o si el dispositivo externo está abriendo la conexión con usted.

Como probablemente sepa, al abrir una nueva conexión, la forma normal de descubrir qué canal RFCOMM debe usarse es verificar las entradas SDP para un servicio y el canal RFCOMM para él.

Sin embargo, con iwrap puede omitir el paso de descubrimiento de SDP si conoce el canal RFCOMM para llamar. Para abrir un canal rfcomm a otro dispositivo, el comando que debe dar es "CALL 00:07:80:80:52:27 1 RFCOMM". Para obtener más detalles, consulte la documentación del comando CALL.

Todavía puede realizar consultas SDP manuales para descubrir el canal rfcomm de cualquier servicio o incluso el canal l2cap para servicios que no usan rfcomm.

La comunicación a través de rfcomm puede estar en modo "transparente", en cuyo caso cada carta que envíe a través de UART se transmitirá a través de bluetooth. Alternativamente, puede usar un formato de paquete binario simple llamado marco mux. En cualquier caso, puede configurar pines gpio para alternar cuando tiene una conexión y cuando no la tiene e incluso usar autocall para hacer que la conexión rfcomm se abra automáticamente cuando inicie el módulo.

Si necesita que el dispositivo externo llame al módulo, el otro dispositivo también puede llamar directamente a los canales rfcomm. Hay un canal rfcomm entrante ya inicializado para el perfil SPP que tiene el número 1. Y no se asuste por la parte SPP en la llamada entrante, el SPP para el módulo solo significa que la entrada sdp correcta está registrada, pero cualquier dispositivo externo capaz de llamar a un canal rfcomm directamente (como otro módulo iwrap) puede llamar a rfcomm directamente sin leer las entradas de sdp.

Editar: Ah, y si está buscando una placa de conexión, aquí tiene una: http://www.inmojo.com/store/jeff-rowberg/item/wt12-bluetooth-breakout-board/ (aunque realmente no debería colocar cualquier PCB o metal frente a la antena como en ese diseño, el rango se verá afectado de acuerdo con las pautas de diseño de Bluegiga RF, pero no funcionará, por lo que funciona para las pruebas).