BLE example of a write characteristic to control a Led

Committer:
lmottola
Date:
Fri Nov 16 14:05:43 2018 +0000
Revision:
72:0ec27f82fe6d
Parent:
44:df8adb3bc797
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 2:864ddfb70a9c 1 To help you create your own BLE services, we have created this service template.
mbed_official 2:864ddfb70a9c 2 The LED example demonstrates the use of a read-write characteristic to control a
mbed_official 2:864ddfb70a9c 3 LED through a phone app.
mbed_official 2:864ddfb70a9c 4
mbed_official 2:864ddfb70a9c 5 The template covers:
mbed_official 2:864ddfb70a9c 6
mbed_official 2:864ddfb70a9c 7 * Setting up advertising and connection states.
mbed_official 2:864ddfb70a9c 8 * Assigning UUIDs to the service and its characteristic.
mbed_official 2:864ddfb70a9c 9 * Creating an input characteristic: read-write, boolean. This characteristic offers control of the LED.
mbed_official 2:864ddfb70a9c 10 * Constructing a service class and adding it to the BLE stack.
mbed_official 2:864ddfb70a9c 11
mbed_official 2:864ddfb70a9c 12 # Running the application
mbed_official 2:864ddfb70a9c 13
mbed_official 2:864ddfb70a9c 14 ## Requirements
mbed_official 2:864ddfb70a9c 15
mbed_official 44:df8adb3bc797 16 The sample application can be seen on any BLE scanner on a smartphone. If you don't have a scanner on your phone, please install:
mbed_official 2:864ddfb70a9c 17
mbed_official 2:864ddfb70a9c 18 - [nRF Master Control Panel](https://play.google.com/store/apps/details?id=no.nordicsemi.android.mcp) for Android.
mbed_official 2:864ddfb70a9c 19
mbed_official 2:864ddfb70a9c 20 - [LightBlue](https://itunes.apple.com/gb/app/lightblue-bluetooth-low-energy/id557428110?mt=8) for iPhone.
mbed_official 2:864ddfb70a9c 21
mbed_official 2:864ddfb70a9c 22 Hardware requirements are in the [main readme](https://github.com/ARMmbed/mbed-os-example-ble/blob/master/README.md).
mbed_official 2:864ddfb70a9c 23
mbed_official 2:864ddfb70a9c 24 *NOTE:* If you have more than a single mbed board (e.g. nrf51dk or mkit) you can
mbed_official 2:864ddfb70a9c 25 run the BLE_LED and BLE_LEDBlinker at the same time. For more information please
mbed_official 2:864ddfb70a9c 26 refer to the BLE_LEDBlinker demo.
mbed_official 2:864ddfb70a9c 27
mbed_official 2:864ddfb70a9c 28 ## Building instructions
mbed_official 2:864ddfb70a9c 29
mbed_official 2:864ddfb70a9c 30 Building instructions for all samples are in the [main readme](https://github.com/ARMmbed/mbed-os-example-ble/blob/master/README.md).
mbed_official 2:864ddfb70a9c 31
mbed_official 2:864ddfb70a9c 32 ## Checking for success
mbed_official 2:864ddfb70a9c 33
mbed_official 2:864ddfb70a9c 34 **Note:** Screens captures depicted below show what is expected from this example if the scanner used is *nRF Master Control Panel* version 4.0.5. If you encounter any difficulties consider trying another scanner or another version of nRF Master Control Panel. Alternative scanners may require reference to their manuals.
mbed_official 2:864ddfb70a9c 35
mbed_official 2:864ddfb70a9c 36
mbed_official 2:864ddfb70a9c 37 1. Build the application and install it on your board as explained in the building instructions.
mbed_official 2:864ddfb70a9c 38 1. Open the BLE scanner on your phone.
mbed_official 2:864ddfb70a9c 39
mbed_official 2:864ddfb70a9c 40 1. Start a scan.
mbed_official 2:864ddfb70a9c 41
mbed_official 2:864ddfb70a9c 42 ![](img/start_scan.png)
mbed_official 2:864ddfb70a9c 43
mbed_official 2:864ddfb70a9c 44 **figure 1** How to start scan using nRF Master Control Panel 4.0.5
mbed_official 2:864ddfb70a9c 45
mbed_official 2:864ddfb70a9c 46 1. Find your device; it should be named `LED`.
mbed_official 2:864ddfb70a9c 47
mbed_official 2:864ddfb70a9c 48 ![](img/scan_results.png)
mbed_official 2:864ddfb70a9c 49
mbed_official 2:864ddfb70a9c 50 **figure 2** Scan results using nRF Master Control Panel 4.0.5
mbed_official 2:864ddfb70a9c 51
mbed_official 2:864ddfb70a9c 52 1. Establish a connection with your device.
mbed_official 2:864ddfb70a9c 53
mbed_official 2:864ddfb70a9c 54 ![](img/connection.png)
mbed_official 2:864ddfb70a9c 55
mbed_official 2:864ddfb70a9c 56 **figure 3** How to establish a connection using Master Control Panel 4.0.5
mbed_official 2:864ddfb70a9c 57
mbed_official 2:864ddfb70a9c 58 1. Discover the services and the characteristics on the device. The *LED service* has the UUID `0xA000` and includes the *LED state characteristic* which has the UUID `0xA001`. Depending on your scanner, non standard 16-bit UUID's can be displayed as 128-bit UUID's. If it is the case the following format will be used: `0000XXXX-0000-1000-8000-00805F9B34FB` where `XXXX` is the hexadecimal representation of the 16-bit UUID value.
mbed_official 2:864ddfb70a9c 59
mbed_official 2:864ddfb70a9c 60 ![](img/discovery.png)
mbed_official 2:864ddfb70a9c 61
mbed_official 2:864ddfb70a9c 62 **figure 4** Representation of the Led service using Master Control Panel 4.0.5
mbed_official 2:864ddfb70a9c 63
mbed_official 2:864ddfb70a9c 64 1. Open the write pannel of the *LED state* characteristic.
mbed_official 2:864ddfb70a9c 65
mbed_official 2:864ddfb70a9c 66 ![](img/write_characteristic.png)
mbed_official 2:864ddfb70a9c 67
mbed_official 2:864ddfb70a9c 68 **figure 5** How to read and write a characteristic value using Master Control Panel 4.0.5
mbed_official 2:864ddfb70a9c 69
mbed_official 2:864ddfb70a9c 70
mbed_official 2:864ddfb70a9c 71 1. The characteristic accept a 1 byte value:
mbed_official 2:864ddfb70a9c 72
mbed_official 2:864ddfb70a9c 73 ![](img/write_pannel.png)
mbed_official 2:864ddfb70a9c 74
mbed_official 44:df8adb3bc797 75 **figure 6** Write characteristic panel using Master Control Panel 4.0.5
mbed_official 2:864ddfb70a9c 76
mbed_official 44:df8adb3bc797 77 * `0x00`: LED ON/OFF (board dependant)
mbed_official 2:864ddfb70a9c 78
mbed_official 2:864ddfb70a9c 79 ![](img/LED_ON.png)
mbed_official 2:864ddfb70a9c 80
mbed_official 44:df8adb3bc797 81 **figure 6** Write characteristic panel to set the LED on using Master Control Panel 4.0.5
mbed_official 2:864ddfb70a9c 82
mbed_official 2:864ddfb70a9c 83
mbed_official 44:df8adb3bc797 84 * `0x01`: LED OFF/ON (board dependant)
mbed_official 2:864ddfb70a9c 85
mbed_official 2:864ddfb70a9c 86 ![](img/LED_OFF.png)
mbed_official 2:864ddfb70a9c 87
mbed_official 44:df8adb3bc797 88 **figure 6** Write characteristic panel to set the LED off using Master Control Panel 4.0.5
mbed_official 2:864ddfb70a9c 89
mbed_official 2:864ddfb70a9c 90
mbed_official 2:864ddfb70a9c 91 1. Toggle the LED characteristic value and see the LED turn ON or turn OFF according to the value you set.
mbed_official 2:864ddfb70a9c 92
mbed_official 2:864ddfb70a9c 93 If you can see the characteristic, and the LED is turned on/off as you toggle its value, the application is working properly.