Git Product home page Git Product logo

mbed-os-example-ble's Introduction

BLE Examples

This repo contains a collection of BLE example applications based on mbed OS and built with mbed-cli. Each example subdirectory contains a separate mbed-cli module meant for building an executable.

Please browse to subdirectories for specific documentation.

Getting Started

Pre-Requisites

To build these examples, you need to have a computer with software installed as described here.

In order to use BLE in mbed OS you need one of the following hardware combinations:

This target is currently not supported as the examples use Cordio link layer which doesn't have an implementation for it yet:

  • A Nordic nRF51-based board such as nrf51dk or mkit. You may still use the deprecated examples for this target. The deprecated examples are located in the "deprecated" folder.

The BLE documentation describes the BLE APIs on mbed OS.

Targets for BLE

The following targets have been tested and work with these examples:

  • Nordic:

    • NRF52_DK
    • NRF52840_DK
  • Boards with an ST shield plugged in:

    • K64F
    • NUCLEO_F401RE
  • ST boards with embedded BlueNrg module:

    • DISCO_L475VG_IOT01A (ref B-L475E-IOT01A)
    • DISCO_L562QE (ref STM32L562E-DK)
  • Board with wireless STM32WB microcontrollers:

    • NUCLEO_WB55RG
  • Embedded Planet:

    • EP_AGORA

    Important: if an ST shield is used with the K64F board, an hardware is patch required. Check out https://developer.mbed.org/teams/ST/code/X_NUCLEO_IDB0XA1/ for more information.

The following board is currently not supported by non-deprecated examples as it doesn't yet support the Cordio stack: * NRF51_DK

Using ST Nucleo shield on other targets

It is possible to use the ST Nucleo shield on boards not directly supported by these examples as long as the board has an Arduino UNO R3 connector.

To makes the board compatible with the ST shield three things are required:

  • Add the BLE feature to your target.
  • Add the BLE implementation for the ST shield to the list of modules which have to be compiled.
  • Indicate to the BLE implementation that your board use an Arduino connector.

All these operations can be done in the file mbed_app.json present in every example.

In the section target_overrides add a new object named after your target. In this object two fields are required:

  • "target.components_add": ["BlueNRG_MS"] Add the BlueNRG_MS component to the target.
  • "target.features_add": ["BLE"] Add the BLE feature to the target.
  • "target.extra_labels_add": ["CORDIO"]: Add the BLE implementation of the ST shield to the list of the application modules.

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.

        "NUCLEO_F411RE": {
            "target.components_add": ["BlueNRG_MS"],
            "target.features_add": ["BLE"],
            "target.extra_labels_add": ["CORDIO"]
        },

Note: You can get more information about the configuration system in the documentation

Important: It is required to apply an hardware patch to the ST shield if it is used on a board with an Arduino connector. Check out https://developer.mbed.org/teams/ST/code/X_NUCLEO_IDB0XA1/ for more information.

Building and testing the examples

To build an example:

  1. Clone the repository containing the collection of examples:

    $ git clone https://github.com/ARMmbed/mbed-os-example-ble.git
    

    Tip: If you don't have git installed, you can download a zip file of the repository.

  2. Using a command-line tool, navigate to any of the example directories, like BLE_Button:

    $ cd mbed-os-example-ble
    $ cd BLE_Button
    
  3. Update the source tree:

    mbed deploy
    
  4. Run the build:

    mbed compile -t <ARM | GCC_ARM> -m <YOUR_TARGET>

To run the application on your board:

  1. Connect your mbed board to your computer over USB. It appears as removable storage.

  2. When you run the mbed compile command above, mbed cli creates a .bin or a .hex file (depending on your target) in BUILD/<target-name>/<toolchain> under the example's directory. Drag and drop the file to the removable storage.

Known issues

  • [NUCLEO_F411RE]: Some BLE examples doesn't work with the X-NUCLEO BLE shield. See #40
  • [NRF5] Impossible to debug or flash the examples with IAR: See #39
  • [NUCLEO_WB55RG]: some examples are not working with default application described in examples readme. Better use LightBlue for iPhone or try out ST BLE Profile.

License and contributions

The software is provided under Apache-2.0 license. Contributions to this project are accepted under the same license. Please see contributing.md for more info.

This project contains code from other projects. The original license text is included in those source files. They must comply with our license guide

mbed-os-example-ble's People

Contributors

0xc0170 avatar adbridge avatar aglass0fmilk avatar apalmierigh avatar bcostm avatar bogdanm avatar c1728p9 avatar cmonr avatar conradbraam avatar elm3 avatar garyswansonarm avatar helpfulchicken avatar hugueskamba avatar iriark01 avatar janjongboom avatar jaustin avatar jeromecoutant avatar ldong-arm avatar liyouzhou avatar lmestm avatar marcbonnici avatar marcelosalazar avatar mbedmain avatar pan- avatar paul-szczepanek-arm avatar rajkan01 avatar ranshe avatar rgrover avatar sg- avatar theotherjimmy avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.