URI-Beacons are handy when there is a need to advertise a small amount of information (usually a URL) to any nearby device. They’re really easy to set up: the code is fully available on the mbed website, so all you’ll need to do is tell the beacon what to broadcast. The canonical source for this example lives at https://github.com/ARMmbed/mbed-os-example-ble/tree/master/BLE_URIBeacon

URI-Beacons are handy when there is a need to advertise a small amount of information (usually a URL) to any nearby device. They’re really easy to set up: the code is fully available on the mbed website, so all you’ll need to do is tell the beacon what to broadcast.

Technical details are better presented here, which happens to be the mbed-classic equivalent of this example. Please also refer to Google's URIBeacon project.

What You’ll Need

To get this going, you’ll need:

- To see URIBeacons get the *Physical Web* app installed on your phone:

- Android version

- iOS version

- One of the BLE platforms listed in the README.md of this repository, for example a Nordic DK board.

Build Instructions

Building with mbed CLI

If you'd like to use mbed CLI to build this, then you should refer to the main readme. The instructions here relate to using the developer.mbed.org Online Compiler

In order to build this example in the mbed Online Compiler, first import the example using the ‘Import’ button on the right hand side.

Next, select a platform to build for. This must either be a platform that supports BLE, for example the NRF51-DK, or one of the following:

List of platforms supporting Bluetooth Low Energy

Or you must also add a piece of hardware and the supporting library that includes a Bluetooth Low Energy driver for that hardware, for example the K64F or NUCLEO_F401RE with the X-NUCLEO-IDB05A1

Once you have selected your platform, compile the example and drag and drop the resulting binary onto your board.

For general instructions on using the mbed Online Compiler, please see the mbed Handbook

Checking for Success

  • Build the application and install it on your board as explained in the building instructions.
  • Open the *Physical Web* application on your phone. It will start to search for nearby beacons.

https://developer.mbed.org/teams/mbed-os-examples/code/mbed-os-example-ble-URIBeacon/raw-file/45a261c84d32/img/app_start.png

figure 1 Start of the *Physical Web* application version 0.1.856 on Android

  • When the beacon starts up, the Configuration Service runs for 60 seconds. During this time it is possible to change the URL advertised by the beacon. It is also important to note that during these 60 seconds, your device will not advertise any URL.

https://developer.mbed.org/teams/mbed-os-examples/code/mbed-os-example-ble-URIBeacon/raw-file/45a261c84d32/img/open_configuration.png

figure 2 How to open the beacon configuration view using the *Physical Web* application version 0.1.856 on Android

  • Edit the URL advertised by your beacon.

https://developer.mbed.org/teams/mbed-os-examples/code/mbed-os-example-ble-URIBeacon/raw-file/45a261c84d32/img/edit_url.png

figure 3 How to edit the URL advertised by your beacon using the *Physical Web* application version 0.1.856 on Android

  • Save the URL which will be advertised by your beacon.

https://developer.mbed.org/teams/mbed-os-examples/code/mbed-os-example-ble-URIBeacon/raw-file/45a261c84d32/img/save_url.png

figure 4 How to save your beacon configuration and start advertising URL using the *Physical Web* application version 0.1.856 on Android.

  • Find your device; it should advertise the URL you have set.

https://developer.mbed.org/teams/mbed-os-examples/code/mbed-os-example-ble-URIBeacon/raw-file/45a261c84d32/img/result.png

figure 5 Display of URL advertised by your beacon using the *Physical Web* application version 0.1.856 on Android.

Please note that the URIBeacon spec requires the URIBeacon app to remain in config mode for the first 60 seconds before switching to being a beacon. So if you're using a physical-web app, you'll only see the beacon after this period; if you're using one of the generic apps for BLE scanning, you should see a configurable beacon being advertised for the first 60 seconds.

You'll find links on Google's project page to client apps to test URIBeacon. Here's a link that should get you an Android App; please browse to `uribeacon-sample-release.apk`. But you should begin with the links to android apps mentioned above.

Committer:
mbed_official
Date:
Thu Jul 28 23:15:02 2016 +0100
Revision:
2:e075005e17d0
Parent:
0:45a261c84d32
Merge branch 'master' of https://github.com/ARMmbed/mbed-os-example-ble


Commit copied from ./src/github.com/ARMmbed/mbed-os-example-ble

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 2:e075005e17d0 1 URI-Beacons are handy when there is a need to advertise a small amount of
mbed_official 2:e075005e17d0 2 information (usually a URL) to any nearby device. They’re really easy to set
mbed_official 2:e075005e17d0 3 up: the code is fully available on the mbed website, so all you’ll need to do
mbed_official 2:e075005e17d0 4 is tell the beacon what to broadcast.
mbed_official 2:e075005e17d0 5
mbed_official 2:e075005e17d0 6 Technical details are better presented [here](https://developer.mbed.org/teams/Bluetooth-Low-Energy/code/BLE_URIBeacon/),
mbed_official 2:e075005e17d0 7 which happens to be the mbed-classic equivalent of this example. Please also refer to [Google's URIBeacon project](https://github.com/google/uribeacon).
mbed_official 2:e075005e17d0 8
mbed_official 2:e075005e17d0 9 What You’ll Need
mbed_official 2:e075005e17d0 10 ================
mbed_official 2:e075005e17d0 11
mbed_official 2:e075005e17d0 12 To get this going, you’ll need:
mbed_official 2:e075005e17d0 13
mbed_official 2:e075005e17d0 14 - To see URIBeacons get the *Physical Web* app installed on your phone:
mbed_official 2:e075005e17d0 15
mbed_official 2:e075005e17d0 16 - [Android version](https://play.google.com/store/apps/details?id=physical_web.org.physicalweb)
mbed_official 2:e075005e17d0 17
mbed_official 2:e075005e17d0 18 - [iOS version](https://itunes.apple.com/us/app/physical-web/id927653608?mt=8)
mbed_official 2:e075005e17d0 19
mbed_official 2:e075005e17d0 20 - One of the BLE platforms listed in the README.md of this repository, for example a
mbed_official 2:e075005e17d0 21 Nordic DK board.
mbed_official 2:e075005e17d0 22
mbed_official 2:e075005e17d0 23 Build Instructions
mbed_official 2:e075005e17d0 24 ==================
mbed_official 2:e075005e17d0 25
mbed_official 2:e075005e17d0 26 After cloning the parent repository, switch to the subfolder BLE_URIBeacon, and
mbed_official 2:e075005e17d0 27 execute the following:
mbed_official 2:e075005e17d0 28
mbed_official 2:e075005e17d0 29 ```Shell
mbed_official 2:e075005e17d0 30 mbed compile -t <toolchain> -m <target>
mbed_official 2:e075005e17d0 31 ```
mbed_official 2:e075005e17d0 32 Assuming that you're building for the nRF51 DK platform, available targets is
mbed_official 2:e075005e17d0 33 `NRF51_DK`.
mbed_official 2:e075005e17d0 34
mbed_official 2:e075005e17d0 35 The other targets you can use are described in the main README.md for this repository.
mbed_official 2:e075005e17d0 36
mbed_official 2:e075005e17d0 37 The resulting binaries would be under `.build/<target_name>/<toolchain>/`.
mbed_official 2:e075005e17d0 38
mbed_official 2:e075005e17d0 39 Under that folder, the file called `ble-uribeacon.hex` is the one which
mbed_official 2:e075005e17d0 40 can be flashed to the target using mbed's DAP over USB; the parent README or the
mbed_official 2:e075005e17d0 41 documentation for your yotta target will explain how to choose between the available
mbed_official 2:e075005e17d0 42 binaries and hex files.
mbed_official 2:e075005e17d0 43
mbed_official 2:e075005e17d0 44 Checking for Success
mbed_official 2:e075005e17d0 45 ====================
mbed_official 2:e075005e17d0 46
mbed_official 2:e075005e17d0 47
mbed_official 2:e075005e17d0 48 1. Build the application and install it on your board as explained in the building instructions.
mbed_official 2:e075005e17d0 49
mbed_official 2:e075005e17d0 50 1. Open the *Physical Web* application on your phone. It will start to search for nearby beacons.
mbed_official 2:e075005e17d0 51
mbed_official 2:e075005e17d0 52 ![](img/app_start.png)
mbed_official 2:e075005e17d0 53
mbed_official 2:e075005e17d0 54 **figure 1** Start of the *Physical Web* application version 0.1.856 on Android
mbed_official 2:e075005e17d0 55
mbed_official 2:e075005e17d0 56 1. When the beacon starts up, the Configuration Service runs for 60 seconds.
mbed_official 2:e075005e17d0 57 During this time it is possible to change the URL advertised by the beacon.
mbed_official 2:e075005e17d0 58 It is also important to note that during these 60 seconds, your device will not advertise any URL.
mbed_official 2:e075005e17d0 59
mbed_official 2:e075005e17d0 60 ![](img/open_configuration.png)
mbed_official 2:e075005e17d0 61
mbed_official 2:e075005e17d0 62 **figure 2** How to open the beacon configuration view using the *Physical Web* application version 0.1.856 on Android
mbed_official 2:e075005e17d0 63
mbed_official 2:e075005e17d0 64
mbed_official 2:e075005e17d0 65 1. Edit the URL advertised by your beacon.
mbed_official 2:e075005e17d0 66
mbed_official 2:e075005e17d0 67 ![](img/edit_url.png)
mbed_official 2:e075005e17d0 68
mbed_official 2:e075005e17d0 69 **figure 3** How to edit the URL advertised by your beacon using the *Physical Web* application version 0.1.856 on Android
mbed_official 2:e075005e17d0 70
mbed_official 2:e075005e17d0 71
mbed_official 2:e075005e17d0 72 1. Save the URL which will be advertised by your beacon.
mbed_official 2:e075005e17d0 73
mbed_official 2:e075005e17d0 74 ![](img/save_url.png)
mbed_official 2:e075005e17d0 75
mbed_official 2:e075005e17d0 76 **figure 4** How to save your beacon configuration and start advertising URL using the *Physical Web* application version 0.1.856 on Android.
mbed_official 2:e075005e17d0 77
mbed_official 2:e075005e17d0 78
mbed_official 2:e075005e17d0 79 1. Find your device; it should advertise the URL you have set.
mbed_official 2:e075005e17d0 80
mbed_official 2:e075005e17d0 81 ![](img/result.png)
mbed_official 2:e075005e17d0 82
mbed_official 2:e075005e17d0 83 **figure 5** Display of URL advertised by your beacon using the *Physical Web* application version 0.1.856 on Android.
mbed_official 2:e075005e17d0 84
mbed_official 2:e075005e17d0 85
mbed_official 2:e075005e17d0 86 **Please note that the URIBeacon spec requires the URIBeacon app to remain in
mbed_official 2:e075005e17d0 87 config mode for the first 60 seconds before switching to being a beacon. So if
mbed_official 2:e075005e17d0 88 you're using a physical-web app, you'll only see the beacon after this period;
mbed_official 2:e075005e17d0 89 if you're using one of the generic apps for BLE scanning, you should see a
mbed_official 2:e075005e17d0 90 configurable beacon being advertised for the first 60 seconds.**
mbed_official 2:e075005e17d0 91
mbed_official 2:e075005e17d0 92 You'll find [links](https://github.com/google/uribeacon/tree/uribeacon-final#contents) on Google's project page to client apps to test URIBeacon. Here's a link that should get you an [Android App](https://github.com/google/uribeacon/releases/tag/v1.2); please browse to `uribeacon-sample-release.apk`. But you should begin with the links to android apps mentioned above.