Options To develop a comunication via BLE with private services.

Hello,

I'm currently trying to idealize a system where and arduino board communicates with a peripheral device that only supports BLE communication. The device in question is the MyoArmband, it's an EMG sensor that is able to detect EMG data from the forearm.

The main problem I'm currently facing is that the myo device uses a private(custom) profile with lot's of public and customs services. And from all the research i have done most o the more common peripheral don't have the ability to communicate with it. Luckily all the information about the Profile and services is available so i had no problems build the structure of the UUIDs needed but i'm not sure what devices should I use for the project.

I found About the CurieBLE library, and it looks like it should work, but it's made only for the Genuino 101 board, and if possible i would prefer a more cheaper option.
I also found the GitHub - sandeepmistry/arduino-BLEPeripheral: An Arduino library for creating custom BLE peripherals with Nordic Semiconductor's nRF8001 or nR51822. Project that is compatible with 2 BLE modules but i'm not sure if it works on my problem.

If anyone has some Ideas or insight i would love to read them.

Thanks,

Can you state your question more clearly?

jremington:
Can you state your question more clearly?

Sure, Sorry it wasn’t clear.

What i want to know what options do i have to connect with a BLE peripheral device. Bearing in mind that this device does not use simple public services or serial communication but a custom profile with custom services and UUIDs.

Is the CurieBLE library able to do this? Does it only work with the Genuino 101?

Have anyone used this other library (GitHub - sandeepmistry/arduino-BLEPeripheral: An Arduino library for creating custom BLE peripherals with Nordic Semiconductor's nRF8001 or nR51822.)? Is it able to connect to BLE peripherals with custom services?

Are there other options, libraries, modules that could solve my problem?

Post a link to the exact Bluetooth device in question. If the manufacturer's communications protocols are encrypted and trade secrets, you are probably out of luck.

You need a BLE device capable of BLE central mode. Phones, tablets, and laptops with BLE operate in central mode. A few years ago I used nodejs and noble running on a Linux box to communicate with nRF51 based BLE peripherals. If the ultimate goal is to get the data into a computer, this is probably your best option.

If you want to use BLE central mode on microcontroller programmed with the Arudino IDE, there are nRF52840 boards capable of central mode. I have no experience here but the examples look promising. Search for "arduino nrf52840". Arduino announced two BLE boards based on the nRF52840 but they are not shipping yet.

In either case, you will have to determine if the APIs are sufficient to talk to the armband.

The device in question is the MyoArmband

If you are referring to this device, it is out of production.

The raw data are available via an SDK for Windows and Mac, but again, obsolete.

jremington:
Post a link to the exact Bluetooth device in question. If the manufacturer's communications protocols are encrypted and trade secrets, you are probably out of luck.

Hello,
The company made the profile open at myo-bluetooth/myohw.h at master · thalmiclabs/myo-bluetooth · GitHub
so i had all information to reconstruct the UUIDs.
The problem is more on the module spectrum.

gbafamily:
You need a BLE device capable of BLE central mode. Phones, tablets, and laptops with BLE operate in central mode. A few years ago I used nodejs and noble running on a Linux box to communicate with nRF51 based BLE peripherals. If the ultimate goal is to get the data into a computer, this is probably your best option.

If you want to use BLE central mode on microcontroller programmed with the Arudino IDE, there are nRF52840 boards capable of central mode. I have no experience here but the examples look promising. Search for "arduino nrf52840". Arduino announced two BLE boards based on the nRF52840 but they are not shipping yet.

In either case, you will have to determine if the APIs are sufficient to talk to the armband.

Thanks for the insight!
My main problem is to communicate specifically with and arduino, with a computer or other microcontrolers capable of running Linux i'm pretty sure i wouldn't have a problem making it work.
But a second part of the project requires the use of a Arduino, i would prefer if i could make the communication work only with it without a middle man.

I will take a look on this nRF52840 boards and see how it works and if they are able to help me!

jremington:
If you are referring to this device, it is out of production.

The raw data are available via an SDK for Windows and Mac, but again, obsolete.

Hey,
You are right! it is this device. Indeed the company closed it's production a while back but made most of protocols and information public so people could continue to develop with it. It is a really useful device and capable of much.

Using the SDk i was able to communicate with it using a Pc pretty easily.
But my goal is to make it communicate with the Arduino directly without having a computer as a middle man in the communication.

As and update for anyone interested in the future:

I found that there are a lot of nrf52840 based boards online that are most likely capable of being a client and comunicate ,via private services, with a server BLE device (there is some from sparkfun and adafruit).
They are also able to be used in conjunction with and arduino via UART communication.

Also the arduino ones that were mentioned (What's new at Maker Faire Bay Area 2019 | Arduino Blog) but not yet shipped can also help.

As soon as I order some and try it i will post and update to confirm if it works

Thanks!