In recent years, advancements in wireless technologies and devices have revolutionized our understanding of the capability of wireless networks. from IoT devices to smartwatches use wireless technology such as Bluetooth to connect and communicate with other devices.
These wireless technologies use radio waves to transfer information. With radio waves, intended distances can be short, such as a few meters for Bluetooth or as far as millions of kilometres for deep-space radio communications.
In this article, we’ll be discussing Bluetooth low energy (BLE or Bluetooth Smart) which is a lightweight subset of classic Bluetooth. Bluetooth Low Energy was introduced as part of the Bluetooth 4.0 core specification and was specifically designed for devices to transfer information using less power.
Bluetooth Low Energy Key Concepts
- GAP is an acronym for the Generic Access Profile, and it controls connections and advertising in Bluetooth. GAP is what makes your device visible to the outside world, and determines how two devices can (or can’t) interact with each other.
- GAP defines various roles for devices, but the two key concepts to keep in mind are Central devices and Peripheral devices.
- Peripheral devices are small, low power, resource contained devices that can connect to a much more powerful central device. Peripheral devices are things like a heart rate monitor, a BLE enabled proximity tag, etc.
- Central devices are usually the mobile phone or tablet that you connect to with far more processing power and memory.
- Advertising and Scan Response Data: There are two ways to send advertising out with GAP. The Advertising Data payload and the Scan Response payload. Both payloads are identical and can contain up to 31 bytes of data, but only the advertising data payload is mandatory since this is the payload that will be constantly transmitted out from the device to let central devices in range know that it exists. The scan response payload is an optional secondary payload that central devices can request and allows device designers to fit a bit more information in the advertising payload such a string for a device name, etc.
- GATT is an acronym for the Generic Attribute Profile, and it defines the way that two Bluetooth Low Energy devices transfer data back and forth using concepts called Services and Characteristics. It makes use of a generic data protocol called the Attribute Protocol (ATT), which is used to store Services, Characteristics and related data in a simple lookup table using 16-bit IDs for each entry in the table.
- GATT comes into play once a dedicated connection is established between two devices, meaning that you have already gone through the advertising process governed by GAP.
- The most important thing to keep in mind with GATT and connections is that connections are exclusive. What is meant by that is that a BLE peripheral can only be connected to one central device (a mobile phone, etc.) at a time! As soon as a peripheral connects to a central device, it will stop advertising itself and other devices will no longer be able to see it or connect to it until the existing connection is broken.
- Establishing a connection is also the only way to allow two-way communication, where the central device can send meaningful data to the peripheral and vice versa.
3. GATT Transactions
- An important concept to understand with GATT is the server/client relationship. The peripheral is known as the GATT Server, which holds the ATT lookup data and service and characteristic definitions, and the GATT Client (the phone/tablet), which sends requests to this server.
- All transactions are started by the main device, the GATT Client, which receives a response from the secondary device, the GATT Server.
- When establishing a connection, the peripheral will suggest a ‘Connection Interval’ to the central device, and the central device will try to reconnect every connection interval to see if any new data is available, etc. It’s important to keep in mind that this connection interval is really just a suggestion, though! Your central device may not be able to honour the request because it’s busy talking to another peripheral or the required system resources just aren’t available
4. Services and Characteristics
- GATT transactions in BLE are based on high-level, nested objects called Profiles, Services and Characteristics, which can be seen in the illustration below
- A Profile doesn’t actually exist on the BLE peripheral itself, it’s simple a pre-defined collection of Services that has been compiled by either the Bluetooth SIG or by the peripheral designers. The Heart Rate Profile, for example, combines the Heart Rate Service and the Device Information Service. The complete list of officially adopted GATTbased profiles can be seen here: Profiles Overview.
- Services are used to break data up into logic entities and contain specific chunks of data called characteristics. A service can have one or more characteristics, and each service distinguishes itself from other services by means of a unique numeric ID called a UUID, which can be either 16-bit (for officially adopted BLE Services) or 128-bit (for custom services).
- Characteristics are the lowest level concept in GATT transactions is the Characteristic, which encapsulates a single data point (though it may contain an array of related data. Similarly to Services, each Characteristic distinguishes itself via a pre-defined 16-bit or 128-bit UUID. Characteristics are the main point that you will interact with your BLE peripheral, so it’s important to understand the concept. They are also used to send data back to the BLE peripheral since you are also able to write to characteristic. You could implement a simple UART-type interface with a custom ‘UART Service’ and two characteristics, one for the TX channel and one for the RX channel, where one characteristic might be configured as read-only and the other would have write privileges.