BLE GAP Button example
This example is a fork of the following mbed-os example:
https://developer.mbed.org/teams/mbed-os-examples/code/mbed-os-example-ble-GAPButton/
Please read the documentation in this page.
README.md@2:e532bbe3fd8e, 2016-07-28 (annotated)
- Committer:
- Vincent Coubard
- Date:
- Thu Jul 28 23:20:45 2016 +0100
- Revision:
- 2:e532bbe3fd8e
- Parent:
- 1:7f4e41bacb3c
- Child:
- 3:f0ed4199b362
Sync with mbed-os-5.1.0-rc3
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Vincent Coubard |
2:e532bbe3fd8e | 1 | # Button count over GAP |
Vincent Coubard |
2:e532bbe3fd8e | 2 | |
Vincent Coubard |
2:e532bbe3fd8e | 3 | This application shows how to use GAP to transmit a simple value to disconnected peer listening for advertisement every time that a value is updated: |
Vincent Coubard |
2:e532bbe3fd8e | 4 | |
Vincent Coubard |
2:e532bbe3fd8e | 5 | 1. The value is a count of how many times a button on the device was pressed (the code actually monitors the button's releases, not press downs). |
Vincent Coubard |
2:e532bbe3fd8e | 6 | |
Vincent Coubard |
2:e532bbe3fd8e | 7 | 1. We transmit the value in the SERVICE_DATA field of the advertising payload. |
Vincent Coubard |
2:e532bbe3fd8e | 8 | |
Vincent Coubard |
2:e532bbe3fd8e | 9 | # Running the application |
Vincent Coubard |
2:e532bbe3fd8e | 10 | |
Vincent Coubard |
2:e532bbe3fd8e | 11 | ## Requirements |
Vincent Coubard |
2:e532bbe3fd8e | 12 | |
Vincent Coubard |
2:e532bbe3fd8e | 13 | 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 : |
Vincent Coubard |
2:e532bbe3fd8e | 14 | |
Vincent Coubard |
2:e532bbe3fd8e | 15 | - [nRF Master Control Panel](https://play.google.com/store/apps/details?id=no.nordicsemi.android.mcp) for Android. |
Vincent Coubard |
2:e532bbe3fd8e | 16 | |
Vincent Coubard |
2:e532bbe3fd8e | 17 | - [LightBlue](https://itunes.apple.com/gb/app/lightblue-bluetooth-low-energy/id557428110?mt=8) for iPhone. |
Vincent Coubard |
2:e532bbe3fd8e | 18 | |
Vincent Coubard |
2:e532bbe3fd8e | 19 | Hardware requirements are in the [main readme](https://github.com/ARMmbed/mbed-os-example-ble/blob/master/README.md). |
Vincent Coubard |
2:e532bbe3fd8e | 20 | |
Vincent Coubard |
2:e532bbe3fd8e | 21 | ## Building instructions |
Vincent Coubard |
2:e532bbe3fd8e | 22 | |
Vincent Coubard |
2:e532bbe3fd8e | 23 | Building instructions for all samples are in the [main readme](https://github.com/ARMmbed/mbed-os-example-ble/blob/master/README.md). |
Vincent Coubard |
2:e532bbe3fd8e | 24 | |
Vincent Coubard |
2:e532bbe3fd8e | 25 | ## Checking for success |
Vincent Coubard |
2:e532bbe3fd8e | 26 | |
Vincent Coubard |
2:e532bbe3fd8e | 27 | **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. |
Vincent Coubard |
2:e532bbe3fd8e | 28 | |
Vincent Coubard |
2:e532bbe3fd8e | 29 | 1. Build the application and install it on your board as explained in the building instructions. |
Vincent Coubard |
2:e532bbe3fd8e | 30 | |
Vincent Coubard |
2:e532bbe3fd8e | 31 | 1. Open the BLE scanner on your phone. |
Vincent Coubard |
2:e532bbe3fd8e | 32 | |
Vincent Coubard |
2:e532bbe3fd8e | 33 | 1. Start a scan. |
Vincent Coubard |
2:e532bbe3fd8e | 34 | |
Vincent Coubard |
2:e532bbe3fd8e | 35 | ![](img/start_scan.png) |
Vincent Coubard |
2:e532bbe3fd8e | 36 | |
Vincent Coubard |
2:e532bbe3fd8e | 37 | **figure 1** How to start scan using nRF Master Control Panel 4.0.5. |
Vincent Coubard |
2:e532bbe3fd8e | 38 | |
Vincent Coubard |
2:e532bbe3fd8e | 39 | 1. Find your device; it should be named `GAPButton`; and look at the advertisement broadcasted by your device (there is no need to connect to your device). |
Vincent Coubard |
2:e532bbe3fd8e | 40 | |
Vincent Coubard |
2:e532bbe3fd8e | 41 | ![](img/discovery.png) |
Vincent Coubard |
2:e532bbe3fd8e | 42 | |
Vincent Coubard |
2:e532bbe3fd8e | 43 | **figure 2** Scan results using nRF Master Control Panel 4.0.5. |
Vincent Coubard |
2:e532bbe3fd8e | 44 | |
Vincent Coubard |
2:e532bbe3fd8e | 45 | 1. The Service Data field of the advertisement packet broadcasted by your device reflects the button press count. The starting value is 0. |
Vincent Coubard |
2:e532bbe3fd8e | 46 | |
Vincent Coubard |
2:e532bbe3fd8e | 47 | ![](img/initial_state.png) |
Vincent Coubard |
2:e532bbe3fd8e | 48 | |
Vincent Coubard |
2:e532bbe3fd8e | 49 | **figure 3** Initial state of the button using nRF Master Control Panel 4.0.5. |
Vincent Coubard |
2:e532bbe3fd8e | 50 | |
Vincent Coubard |
2:e532bbe3fd8e | 51 | 1. Press the button on the device. |
Vincent Coubard |
2:e532bbe3fd8e | 52 | |
Vincent Coubard |
2:e532bbe3fd8e | 53 | ![](img/first_press.png) |
Vincent Coubard |
2:e532bbe3fd8e | 54 | |
Vincent Coubard |
2:e532bbe3fd8e | 55 | **figure 3** State after 1 button press using nRF Master Control Panel 4.0.5. |
Vincent Coubard |
2:e532bbe3fd8e | 56 | |
Vincent Coubard |
2:e532bbe3fd8e | 57 | 1. The Service Data field value of the advertisement packet should change every time you press the button. |
Vincent Coubard |
2:e532bbe3fd8e | 58 | |
Vincent Coubard |
2:e532bbe3fd8e | 59 | ![](img/result.png) |
Vincent Coubard |
2:e532bbe3fd8e | 60 | |
Vincent Coubard |
2:e532bbe3fd8e | 61 | **figure 3** State after 6 button press using nRF Master Control Panel 4.0.5. |
Vincent Coubard |
2:e532bbe3fd8e | 62 | |
Vincent Coubard |
2:e532bbe3fd8e | 63 | ## Note |
Vincent Coubard |
2:e532bbe3fd8e | 64 | |
Vincent Coubard |
2:e532bbe3fd8e | 65 | Since broadcasting is not reliable and your phone may scan intermittently, it is possible that your phone will miss button updates. |