Bluetooth Low Energy

 

ble-logo

 

BLE Bootstrap Series: Getting Started with Bluetooth Low Energy

Bluetooth Low Energy, BLE, is a newish bluetooth standard that allows for communication between devices while consuming very little energy. These modules allow for reliable and secure links while consuming between 10 and 20 times less power than classic Bluetooth. In addition, the CC2540-based device I’ll be using here is pretty cheap, especially compared to many older Bluetooth modules.

In the pages of this section, I’ll go over the main points of BLE, present a module you can make yourself for prototyping and development, and introduce the techniques involved in getting it up and running using a microcontroller (specifically Arduino, though the solutions should be generalizable to other platforms) both as a slave (which can be loosely thought of as a server, because it will advertise itself and be connected to by remote devices) and as master (which you can think of as a client, because it can connect to a bunch of slaves to make requests).  This will all be covered in this section’s sub-pages:

 

First to clear up the naming. Obviously, marketroids were seriously involved with the naming of BLE so it can be confusing to untangle all the different ways it is referred to. In short, BLE, Bluetooth Low Energy, Bluetooth 4.0 and “Bluetooth Smart” are just synonyms. I’ll be referring to all this as BLE throughout. Another name you’ll come across is “Bluetooth Smart Ready“. This is also a BLE module, with the difference that it additionally supports (is “ready” to deal with, I guess) older Bluetooth, using a dual-mode low energy radio. I believe that, on top of having legacy support, Smart Ready devices have the additional requirement that they must be flashable by the consumer (updatable firmware). The standard BLE module used here can be updated in place anyway, so this matters little.

bluetooth-smart-compatibility-embed

To get started, you’ll need a bit of information and, eventually, some hardware to play with and a bit of code to exercise it. To this end, this tutorial series contains the following resources, organized here with the aid of some fancy ascii art:

 

                             BLE Overview/Crash Course
                                         |
                                         |
                          DYY Bluetooth Low Energy Module
                               /                 \
                              /                   \
                CLient Code/Tutorial   <--->   Server Code/Tutorial

At a minimum, have a look at the overview and the client or server pages, depending on the task you’re interested at the moment.

I hope these pages will be useful–as always, please get in touch with any comments or questions.

All the code in this series is released under the terms and conditions of the GNU GPL.  Schematics, layouts and related resources a released under the Attribution-NonCommercial 3.0 Unported (CC BY-NC 3.0).