hello
I am a newbee in BLE dev.
I try to connect the sensor to the Adafruit board thrut BLE.
The sensor is Sensor it is saw on nrf connect iOS as
I mod the HRM central code to match with the CSC Here my code I send to the board with Arduino ide
#include <bluefruit.h>
BLEClientService hrms(UUID16_SVC_HEART_RATE);
BLEClientCharacteristic hrmc(UUID16_CHR_HEART_RATE_MEASUREMENT);
BLEClientCharacteristic bslc(UUID16_CHR_BODY_SENSOR_LOCATION);
void setup()
{
Serial.begin(115200);
while ( !Serial ) delay(10); // for nrf52840 with native usb
Serial.println("Bluefruit52 Central Custom HRM Example");
Serial.println("--------------------------------------\n");
Bluefruit.begin(0, 1);
Bluefruit.setName("Bluefruit52 Central");
hrms.begin();
bslc.begin();
hrmc.setNotifyCallback(hrm_notify_callback);
hrmc.begin();
Bluefruit.setConnLedInterval(250);
Bluefruit.Central.setDisconnectCallback(disconnect_callback);
Bluefruit.Central.setConnectCallback(connect_callback);
Bluefruit.Scanner.setRxCallback(scan_callback);
Bluefruit.Scanner.restartOnDisconnect(true);
Bluefruit.Scanner.setInterval(160, 80); // in unit of 0.625 ms
Bluefruit.Scanner.filterUuid(hrms.uuid);
Bluefruit.Scanner.useActiveScan(false);
Bluefruit.Scanner.start(0); // // 0 = Don't stop scanning after n seconds
}
void loop()
{
// do nothing
}
void scan_callback(ble_gap_evt_adv_report_t* report)
{
Bluefruit.Central.connect(report);
}
void connect_callback(uint16_t conn_handle)
{
Serial.println("Connected");
Serial.print("Discovering HRM Service ... ");
if ( !hrms.discover(conn_handle) )
{
Serial.println("Found NONE");
// disconnect since we couldn't find HRM service
Bluefruit.disconnect(conn_handle);
return;
}
Serial.println("Found it");
Serial.print("Discovering Measurement characteristic ... ");
if ( !hrmc.discover() )
{
Serial.println("not found !!!");
Serial.println("Measurement characteristic is mandatory but not found");
Bluefruit.disconnect(conn_handle);
return;
}
Serial.println("Found it");
Serial.print("Discovering Body Sensor Location characteristic ... ");
if ( bslc.discover() )
{
Serial.println("Found it");
const char* body_str[] = { "Other", "Chest", "Wrist", "Finger", "Hand", "Ear Lobe", "Foot" };
uint8_t loc_value = bslc.read8();
Serial.print("Body Location Sensor: ");
Serial.println(body_str[loc_value]);
}else
{
Serial.println("Found NONE");
}
if ( hrmc.enableNotify() )
{
Serial.println("Ready to receive HRM Measurement value");
}else
{
Serial.println("Couldn't enable notify for HRM Measurement. Increase DEBUG LEVEL for troubleshooting");
}
}
void disconnect_callback(uint16_t conn_handle, uint8_t reason)
{
(void) conn_handle;
(void) reason;
Serial.println("Disconnected");
}
void hrm_notify_callback(BLEClientCharacteristic* chr, uint8_t* data, uint16_t len)
{
Serial.print("HRM Measurement: ");
if ( data[0] & bit(0) )
{
uint16_t value;
memcpy(&value, data+1, 2);
Serial.println(value);
}
else
{
Serial.println(data[1]);
}
}
the only respond I have is
Bluefruit52 Central Custom CSC Example --------------------------------------
I don't receive any data in the serial monitor.
is someone could help me ?
regards