Send continuous stream to mobile
Fork of pdiot-ble-notify-array by
readme.md@47:4905acf20758, 2017-10-04 (annotated)
- Committer:
- vladb
- Date:
- Wed Oct 04 10:58:38 2017 +0000
- Revision:
- 47:4905acf20758
- Parent:
- 7:fc1d7b518af4
continuous stream sent to mobile
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mbed_official | 3:6f18b8269d65 | 1 | BLE_Button is a BLE service template. It handles a read-only characteristic with a simple input (boolean values). The input's source is the button on the board itself - the characteristic's value changes when the button is pressed or released. |
mbed_official | 3:6f18b8269d65 | 2 | |
mbed_official | 3:6f18b8269d65 | 3 | The template covers: |
mbed_official | 3:6f18b8269d65 | 4 | |
mbed_official | 3:6f18b8269d65 | 5 | 1. Setting up advertising and connection modes. |
mbed_official | 3:6f18b8269d65 | 6 | |
mbed_official | 3:6f18b8269d65 | 7 | 1. Creating an input characteristic: read-only, boolean, with notifications. |
mbed_official | 3:6f18b8269d65 | 8 | |
mbed_official | 3:6f18b8269d65 | 9 | 1. Constructing a service class and adding it to the BLE stack. |
mbed_official | 3:6f18b8269d65 | 10 | |
mbed_official | 3:6f18b8269d65 | 11 | 1. Assigning UUIDs to the service and its characteristic. |
mbed_official | 3:6f18b8269d65 | 12 | |
mbed_official | 3:6f18b8269d65 | 13 | 1. Pushing notifications when the characteristic's value changes. |
mbed_official | 3:6f18b8269d65 | 14 | |
mbed_official | 3:6f18b8269d65 | 15 | # Running the application |
mbed_official | 3:6f18b8269d65 | 16 | |
mbed_official | 3:6f18b8269d65 | 17 | ## Requirements |
mbed_official | 3:6f18b8269d65 | 18 | |
mbed_official | 3:6f18b8269d65 | 19 | 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 | 3:6f18b8269d65 | 20 | |
mbed_official | 3:6f18b8269d65 | 21 | - [nRF Master Control Panel](https://play.google.com/store/apps/details?id=no.nordicsemi.android.mcp) for Android. |
mbed_official | 3:6f18b8269d65 | 22 | |
mbed_official | 3:6f18b8269d65 | 23 | - [LightBlue](https://itunes.apple.com/gb/app/lightblue-bluetooth-low-energy/id557428110?mt=8) for iPhone. |
mbed_official | 3:6f18b8269d65 | 24 | |
mbed_official | 3:6f18b8269d65 | 25 | Hardware requirements are in the [main readme](https://github.com/ARMmbed/mbed-os-example-ble/blob/master/README.md). |
mbed_official | 3:6f18b8269d65 | 26 | |
mbed_official | 7:fc1d7b518af4 | 27 | ### Porting this example on new boards |
mbed_official | 7:fc1d7b518af4 | 28 | |
mbed_official | 7:fc1d7b518af4 | 29 | This example requires a board with at least a button to work. While the pin name of the button is defined for the `NRF51_DK`, `NRF52_DK`, `K64F` and `NUCLEO_F401RE`, it is not specified for other boards. |
mbed_official | 7:fc1d7b518af4 | 30 | |
mbed_official | 7:fc1d7b518af4 | 31 | It is easy to add the button configuration for your board: |
mbed_official | 7:fc1d7b518af4 | 32 | * Open the file named `mbed_app.json` at the root of this example. |
mbed_official | 7:fc1d7b518af4 | 33 | * In the section `target_overides` add a new object named after your target if it doesn't exist. This object contain overridden parameters for your target. |
mbed_official | 7:fc1d7b518af4 | 34 | * Override the property `ble_button_pin_name` in your target object. The value of the property should be equal to the pin name to use as a button. |
mbed_official | 7:fc1d7b518af4 | 35 | |
mbed_official | 7:fc1d7b518af4 | 36 | As an example, this is the JSON bit which has to be added in the `target_overrides` section of `mbed_app.json` for a `NUCLEO_F411RE` board. |
mbed_official | 7:fc1d7b518af4 | 37 | |
mbed_official | 7:fc1d7b518af4 | 38 | ```json |
mbed_official | 7:fc1d7b518af4 | 39 | "NUCLEO_F411RE": { |
mbed_official | 7:fc1d7b518af4 | 40 | "ble_button_pin_name": "USER_BUTTON" |
mbed_official | 7:fc1d7b518af4 | 41 | } |
mbed_official | 7:fc1d7b518af4 | 42 | ``` |
mbed_official | 7:fc1d7b518af4 | 43 | |
mbed_official | 7:fc1d7b518af4 | 44 | <span> **Note:** You can get more informations about the configuration system in the [documentation](https://github.com/ARMmbed/mbed-os/blob/master/docs/config_system.md)</span> |
mbed_official | 7:fc1d7b518af4 | 45 | |
mbed_official | 7:fc1d7b518af4 | 46 | <span> **Important:** If your target use an ST BLE shield, other parameters have to be overridden for your target. More information are available in the global [README](https://github.com/ARMmbed/mbed-os-example-ble/blob/master/README.md#targets-for-ble)</span> |
mbed_official | 7:fc1d7b518af4 | 47 | |
mbed_official | 3:6f18b8269d65 | 48 | ## Building instructions |
mbed_official | 3:6f18b8269d65 | 49 | |
mbed_official | 3:6f18b8269d65 | 50 | Building instructions for all samples are in the [main readme](https://github.com/ARMmbed/mbed-os-example-ble/blob/master/README.md). |
mbed_official | 3:6f18b8269d65 | 51 | |
mbed_official | 3:6f18b8269d65 | 52 | ## Checking for success |
mbed_official | 3:6f18b8269d65 | 53 | |
mbed_official | 3:6f18b8269d65 | 54 | **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 | 3:6f18b8269d65 | 55 | |
mbed_official | 3:6f18b8269d65 | 56 | 1. Build the application and install it on your board as explained in the building instructions. |
mbed_official | 3:6f18b8269d65 | 57 | 1. Open the BLE scanner on your phone. |
mbed_official | 3:6f18b8269d65 | 58 | 1. Start a scan. |
mbed_official | 3:6f18b8269d65 | 59 | |
mbed_official | 3:6f18b8269d65 | 60 | ![](img/start_scan.png) |
mbed_official | 3:6f18b8269d65 | 61 | |
mbed_official | 3:6f18b8269d65 | 62 | **figure 1** How to start scan using nRF Master Control Panel 4.0.5 |
mbed_official | 3:6f18b8269d65 | 63 | |
mbed_official | 3:6f18b8269d65 | 64 | 1. Find your device; it should appear with the name `Button` in the scanner. |
mbed_official | 3:6f18b8269d65 | 65 | |
mbed_official | 3:6f18b8269d65 | 66 | ![](img/scan_results.png) |
mbed_official | 3:6f18b8269d65 | 67 | |
mbed_official | 3:6f18b8269d65 | 68 | **figure 2** Scan results using nRF Master Control Panel 4.0.5 |
mbed_official | 3:6f18b8269d65 | 69 | |
mbed_official | 3:6f18b8269d65 | 70 | 1. Establish a connection with the device. |
mbed_official | 3:6f18b8269d65 | 71 | |
mbed_official | 3:6f18b8269d65 | 72 | ![](img/connection.png) |
mbed_official | 3:6f18b8269d65 | 73 | |
mbed_official | 3:6f18b8269d65 | 74 | **figure 3** How to establish a connection using Master Control Panel 4.0.5 |
mbed_official | 3:6f18b8269d65 | 75 | |
mbed_official | 3:6f18b8269d65 | 76 | 1. Discover the services and the characteristics on the device. The *Button service* has the UUID `0xA000` and includes the *Button 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 | 3:6f18b8269d65 | 77 | |
mbed_official | 3:6f18b8269d65 | 78 | ![](img/discovery.png) |
mbed_official | 3:6f18b8269d65 | 79 | |
mbed_official | 3:6f18b8269d65 | 80 | **figure 4** Representation of the Button service using Master Control Panel 4.0.5 |
mbed_official | 3:6f18b8269d65 | 81 | |
mbed_official | 3:6f18b8269d65 | 82 | 1. Register for the notifications sent by the button state characteristic then the scanner will automatically receive a notification containing the new state of the button every time the state of the button changes. |
mbed_official | 3:6f18b8269d65 | 83 | |
mbed_official | 3:6f18b8269d65 | 84 | ![](img/register_to_notifications.png) |
mbed_official | 3:6f18b8269d65 | 85 | |
mbed_official | 3:6f18b8269d65 | 86 | **figure 5** How to register to notifications using Master Control Panel 4.0.5 |
mbed_official | 3:6f18b8269d65 | 87 | |
mbed_official | 3:6f18b8269d65 | 88 | |
mbed_official | 3:6f18b8269d65 | 89 | 1. Pressing Button 1 on your board updates the state of the button and sends a notification to the scanner. The new state of the button characteristic value should be equal to 0x01. |
mbed_official | 3:6f18b8269d65 | 90 | |
mbed_official | 3:6f18b8269d65 | 91 | ![](img/button_pressed.png) |
mbed_official | 3:6f18b8269d65 | 92 | |
mbed_official | 3:6f18b8269d65 | 93 | **figure 6** Notification of button pressed using Master Control Panel 4.0.5 |
mbed_official | 3:6f18b8269d65 | 94 | |
mbed_official | 3:6f18b8269d65 | 95 | 1. Releasing Button 1 on your board updates the state of the button and sends a notification to the scanner. The new state of the button characteristic value should be equal to 0x00. |
mbed_official | 3:6f18b8269d65 | 96 | |
mbed_official | 3:6f18b8269d65 | 97 | ![](img/button_depressed.png) |
mbed_official | 3:6f18b8269d65 | 98 | |
mbed_official | 3:6f18b8269d65 | 99 | **figure 7** Notification of button depressed using Master Control Panel 4.0.5 |