Does the Apollo3 mcu have the potential of creating AVRCP AND A2DP Protocols, is this something we must make or is it already provided?
I’ve looked at several of bluetooth documentation and saw there is a possibility of making new profiles and protocols, how would this be possible with the apollo3? Thanks in advance for a possible solution!
Those profiles are part of the classic bluetooth spec, AFAIK.
Apollo3 advertises ‘Bluetooth 5 Low Energy’ in the data sheet, so I suspect classic bluetooth is not supported. Generally Bluetooth Low Energy (BLE) has done away with most pre-defined profiles and instead opts to allow users to create their own.
Note: BLE is probably not suited to streaming audio because of the low data rates.
Oh man, that’s a bummer… Would this also mean it is too slow for Hands Free Protocol?
How fast does streaming audio have to be?I ask because I wonder if the device were taken off low energy, shouldn’t this allow BLE to run faster? Is BLE bottlenecked to a certain speed? I read that it goes up to 2.4 GHz in the specifications?
Lastly, Where can I find the process for creating my own, do I have to dig up bluetooth’s website?
BLE is a standard, so the maximum data rates are determined there - not by the microcontroller. The ‘Low Energy’ might be misleading but it does not have to do with the Apollo3 power saving modes.
I would suggest reading about BLE GATT and GAP - they are the fundamental backbones of BLE operations.
I’m pretty familiar with the BLE GATT and BLE GAP, so I can look into this.
As for the low energy, are you suggesting that all Low Energy devices cannot support this protocol, otherwise it would not be ‘Low Energy’?
Precisely - BLE is a separate branch of Bluetooth spec. The Bluetooth 5 spec includes old ‘Classic Bluetooth’ as well as this new ‘Low Energy’ bluetooth and even some other things. Apollo3 does not support classic bluetooth from what I can tell.
So if I wanted to get audio files into an edge, and play them through some sort of QWIIC connected speaker (or something else) , my options are limited to…
-
making a new protocol through BLE and somehow transferring very slowly audio files?
-
interfacing with a different board that sends audio files more easily and rapidly through a different protocol?
or 3. connecting an esp to the edge that can somehow transfer audio files through internet connectivity?
Any advice on which to pursue or any more examples?
Best regards,
Garzarobm
-
yes, you could pre-transfer the audio files and then play them in real time. Though the pre-transfer time would be fairly long I suspect
-
one such board is the RN-41. RN-41 can do up to 3 M bits per second - though I am unsure how fast the UART can go. Artemis UART can get up to 1M baud (which is about 0.8 M bits per second or 100 kB/s)
https://www.sparkfun.com/products/12580
https://cdn.sparkfun.com/datasheets/Wir … -41-DS.pdf
another option is the SGTL5000 - it is designed to handle audio profiles
Here’s a project using it:
https://github.com/chipperdoodles/audiopants
- WiFi would be the fastest transfer option. ESP is good for that. You will probably want the ESP to act as the controller and the Edge to act as a responder, though we don’t have official support for that in the Arduino core yet. It is possible via the Ambiq HAL
I’m going to try the third option, I’m pretty broke and I have previous experience and some code for the esp.
Thanks again for your advice, and I’ll let you know how it goes if you are interested!