Hello,
I’ve developed a BLE peripheral product using Simblee (nRF51822 revision 3), now discontinued. We’ve decided to switch to Laird’s BL651 module and implement the app using nRF5 SDK 15.3.0. I’m new to nRF5 SDK and low-level access to BLE. I would appreciate some initial guidance.
Simblee allowed BLE peripheral development using the Arduino IDE and insulated developers from a lot of the complexities of BLE. I wrote code like this:
Setup …
SimbleeBLE.customUUID = "2220"; SimbleeBLE.txPowerLevel = +4; SimbleeBLE.deviceName = peripheralName; SimbleeBLE.advertisementData = advData; SimbleeBLE.advertisementInterval = 500; SimbleeBLE.begin();
To send data to the connected iOS app (BLE central):
SimbleeBLE.send(message, sizeof(message));
Interrupt routine for receiving data from the iOS app:
void SimbleeBLE_onReceive(char *data, int len)
{
...
}
The peripheral monitors a single GPIO pin and uses GPIOTE, PPI and timers for timing-critical code, which the Simblee library exposed. And we use OTA DFU to push out BLE peripheral app updates via our iOS app.
Simblee has a single service (0x2220) with a send (write) characteristic (0x2222), a receive (read, notify) characteristic (0x2221) and a disconnect (write) characteristic (0x2223). Seems pretty simple.
I have the nRF52 dev kit (which has an nRF52832, but can emulate the nRF52810, which is on Laird's BL651) and I have some of the Nordic examples working (using Segger Embedded Studio on macOS).
I would appreciate some initial guidance. Is the Nordic UART Service appropriate? Would the ble_peripheral/ble_app_uart SDK example be a reasonable starting point? What to focus my learning on? Security is not important, nor is power efficiency (we run on AA batteries and the product is used, on average, 20 hours per month). I would like the app to use the same service and characteristic UUIDs so that it will function with our current BLE central iOS app.
I appreciate any guidance. Many thanks,
Tim