Tengo 3 escáneres BLE basados en Atmel MCU, cada uno utiliza el módulo BLE basado en CC2540 de TI ( Manual de usuario en PDF ) chip para buscar los paquetes de publicidad (balizas bluetooth) alrededor. Hay aprox. 10 balizas a la vez alrededor del escáner enviando paquetes de publicidad cada 100 ms. El escáner solo necesita Minor, Major y txPower de cada baliza.
El escáner envía un comando "AT + DISI" (inicio de Beacon discovery s. Manual del usuario) a través de la interfaz serial al módulo BLE y espera la respuesta de los datos.
Todo funciona bien, pero el tiempo, hasta que todos los datos llegan por completo, toma alrededor de 5 segundos.
Ya que quiero escanear los Beacons una o dos veces por segundo, necesito mejorar el tiempo de escaneo. Algunas posibles opciones que pensé:
- conecte 5 módulos BLE al microcontrolador usando el expansor de puerto serie, envíe sucesivamente el comando de escaneo con un tiempo de desplazamiento de 1s y al mismo tiempo recopile los datos recibidos, de modo que los datos llegan cada segundo.
- Haga uso de la MCU 8051 dentro del CC2540, que puede mejorar la velocidad, ya que no se necesita comunicación en serie con la MCU externa.
- Desarrolle el perfil BLE personalizado, que tiene menos carga útil y el firmware de Beacon / scanner que envía / escucha en la frecuencia constante.
- Usando otro chip / tecnología
¿Cuál es la mejor manera de escanear una docena de balizas BLE una o dos veces por segundo?
Preguntas relacionadas que leí:
- Cómo buscar todas las balizas disponibles con BLE - escenario similar, excepto que tengo 10 balizas a la vez y menos de un segundo para escanear.
- Ventana y intervalo de exploración BLE