I have 3 Atmel MCU based BLE scanners, each uses TI CC2540 based BLE module (PDF User Manual) chip to scan for the advertise packets (bluetooth Beacons) around. There are approx. 10 Beacons at a time around the scanner sending advertisiment packets every 100ms. The scanner needs only Minor, Major and the txPower of the each beacon.
The scanner sends an "AT+DISI" (start Beacon discovery s. User Manual) command over serial interface to the BLE Module and waits for the data response.
Everything works fine, but the time, until all data completely arrives takes around 5 seconds.
Since I want to scan for the Beacons one or two times a second, I need to improve the scanning time. Some possible options I thought about:
- connect 5 BLE modules to the microcontroller using serial port expander, successively send scan command with 1s time offset and at the same time collect data recieved so data arrives every second.
- Make use the 8051 MCU inside the CC2540, which may improve the speed, since no serial communication to external MCU is needed.
- Develop custom BLE profile, which has less payload and Beacon / scanner firmware that sends / listens on the constant frequency.
- Using another chip / technology
What is the best way to scan for a dozen of the BLE Beacons one-two times a second?
Related questions I read: