Skip to content

An unpleasant hack that lets a micro:bit control a Yeelight Blue ii bulb. This is not a good example.

License

Notifications You must be signed in to change notification settings

jaustin/yeelight2-hack

Repository files navigation

WARNING You probably don't want this.

I've published this repo, warts and all, as I don't seem to find time to tidy it up and share it more usefully.

I've modified the mbed standard LEDBlinker example to search for and connect to a Yeelight Blue ii bulb.

The micro:bit DAL uses a fork of the mbed BLE API that has a slightly different implementation (to save a few precious bytes of memory!) so using this with the mbed standard BLE stack requires hacking out the micro:bit BLE stuff - which is fine, because I wanted to use the standard mbed BLE APIs - it's just done in a horrible way here.

To be a GAP Central this needs to be built with S130.

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 the following software installed:

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

  • A Nordic nRF51-based board such as nrf51dk or mkit.
  • A supported target, such as the NUCLEO-F411RE, with a BLE shield or an external BLE peripheral, such as an ST shield.

The blemodule provides the BLE APIs on mbed OS.

Targets for BLE

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

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 three fields are required:

  • "target.features_add": ["BLE"] Add the BLE feature to the target.
  • "target.extra_labels_add": ["ST_BLUENRG"]: Add the BLE implementation of the ST shield to the list of the application modules.
  • "target.macros_add": ["IDB0XA1_D13_PATCH"]: Indicate the BLE implementation that the target use an arduino connector.

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.features_add": ["BLE"],
            "target.extra_labels_add": ["ST_BLUENRG"],
            "target.macros_add": ["IDB0XA1_D13_PATCH"]
        },

Note: You can get more informations 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 GitHub 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_Beacon:

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

    mbed update
    
  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, as you did above, mbed cli creates a BIN or an HEX file in a .build/<target-name>/<toolchain> directory under the example's directory. Drag and drop the file to the removable storage.

Exactly which executables are generated depends on the target that you have chosen. For Nordic Semiconductor targets, the following .hex files will be present:

  • <module_name>.hex is the one which can be flashed to the target.
  • <module_name>.elf is an ELF binary containing symbols (useful for debugging).

Creating or porting your own BLE applications in mbed OS

If you're interested in creating BLE applications for mbed OS, or porting existing applications from mbed Classic to mbed OS, please see our Introduction to mbed BLE.

About

An unpleasant hack that lets a micro:bit control a Yeelight Blue ii bulb. This is not a good example.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published