cancel
Showing results for 
Search instead for 
Did you mean: 

Connect two STM32WB MCUs via BLE

MohammedBou45
Associate II

Hello everyone,
I’m working on a BLE project using two STM32WB55 boards.
My goal is to create a connection between them without using the ST BLE Toolbox App.
One board is configured as a Custom Server (Peripheral), and the other as a P2P Client (Central).

I want to ensure that I am properly connected to my server and receiving notifications.
But I am not sure about how using:

Start scanning

Identify the correct server

Connect

Discover services

Enable notifications

Receive data

 

 

Please without saying follow the P2p example, because I didn't catch it

1 ACCEPTED SOLUTION

Accepted Solutions
FilipKremen
ST Employee

Hello,

the characteristic property CHAR_PROP_NOTIFY needs to be enabled. Then if you press button 1, it sends the notification to the client via Custom_Switch_c_Send_Notification() function. (BLE_Custom example, custom_app.c)

Best regards,

Filip Kremen

 

View solution in original post

9 REPLIES 9
FilipKremen
ST Employee

Hello,

have you read this Wiki page?

It provides more information regarding P2P application. It's meant for WBA series, however the structure is similar to WB series.

STM32WBA Bluetooth® LE – Peer 2 Peer Applications - stm32mcu

I also recommend reading this document below.

Guidelines for Bluetooth® LE stack programming on STM32WB/STM32WBA MCUs - Programming manual

If you have any other question, please don't hesitate to ask.

 

Best regards,

Filip Kremen

My objective is to send some sensor data from an MCU to other one, so what is the best solution for me, and I didn't catch the BLE_p2pClient example, so if there is any other clear tutorial or reference to follow ? (I reached to send the data to ST Toolbox App) 

FilipKremen
ST Employee

Hello,

I recommend reading a readme file in the BLE_p2pClient example for overview.

Also, if you have a look at p2p_client_app.c file you can find there Button_Trigger_Received() function which writes to a characteristic on server side, and you can toggle LED based on this value. You can also add your own characteristic to the server for your own data. 

Section 7 in the document also provides additional information for building BLE application.

How to build wireless applications with STM32WB MCUs - Application note

Best regards,

Filip Kremen

After reading the BLE_p2pClient example, how can I modify the example to start the scanning without pressing the button B1? and how this scan is done exactly in software?

 

FilipKremen
ST Employee

Hello,

you could for example call UTIL_SEQ_SetTask(1 << CFG_TASK_START_SCAN_ID, CFG_SCH_PRIO_0) function at the end of APP_BLE_Init() or you could use a timerserver that would run the function above after certain interval.

Regarding the scan, the task CFG_TASK_START_SCAN_ID is registered in the sequencer and then it can be run with the function mentioned above. The scan starts with aci_gap_start_general_discovery_proc() command from Scan_request() function. I hope you can understand it better now, please don't hesitate to ask further.

 

Best regards,

Filip Kremen

Great, and how can the scanning detect the right server exactly? with the UUID ? 

FilipKremen
ST Employee

The found devices are returned via HCI_LE_ADVERTISING_REPORT_SUBEVT_CODE in app_ble.c file.

In the switch case (SVCCTL_App_Notification() function) you can see how the server is found according to

AD_TYPE_MANUFACTURER_SPECIFIC_DATA.

 

Best regards,

Filip Kremen

I appreciate really your time, I would a full guideline to receive some data from the server part to the client part, so exactly I need the code from the client part.

The function which I am using in custom_app.c file is myTask(void):

 

void myTask(void)

{

if( abs(prevCOPx + COPx) >= 5 || abs(prevCOPy + COPy) >= 5 ){

strcpy(NotifyCharData, message);

Custom_Mycharnotify_Send_Notification();

}

prevCOPx = COPx;

prevCOPy = COPy;

UTIL_SEQ_SetTask(1 << CFG_TASK_MY_TASK, CFG_SCH_PRIO_0);

}

 I want a way to how receive this notification on my other client MCU, thanks in advance.

FilipKremen
ST Employee

Hello,

the characteristic property CHAR_PROP_NOTIFY needs to be enabled. Then if you press button 1, it sends the notification to the client via Custom_Switch_c_Send_Notification() function. (BLE_Custom example, custom_app.c)

Best regards,

Filip Kremen