From c178e58260e065a278760258b7d2e9cbdc85bf12 Mon Sep 17 00:00:00 2001 From: Martin Woolley Date: Mon, 27 Jun 2016 13:46:29 +0100 Subject: [PATCH] Added About Bluetooth page and links to profile reference and overview --- docs/reference/bluetooth/about-bluetooth.md | 99 ++++++++++++++++++ docs/reference/bluetooth/bluetooth-pairing.md | 3 +- .../bluetooth/on-bluetooth-connected.md | 2 +- .../bluetooth/on-bluetooth-disconnected.md | 2 +- .../bluetooth/start-accelerometer-service.md | 2 +- .../bluetooth/start-button-service.md | 2 +- .../bluetooth/start-io-pin-service.md | 2 +- docs/reference/bluetooth/start-led-service.md | 2 +- .../bluetooth/start-magnetometer-service.md | 2 +- .../bluetooth/start-temperature-service.md | 2 +- .../reference/bluetooth/start-uart-service.md | 2 +- docs/reference/bluetooth/uart-read.md | 2 +- docs/reference/bluetooth/uart-write.md | 2 +- docs/static/bluetooth/gatt_hierarchy.png | Bin 0 -> 19880 bytes docs/static/bluetooth/services_and_GATT.png | Bin 0 -> 23037 bytes 15 files changed, 112 insertions(+), 12 deletions(-) create mode 100755 docs/reference/bluetooth/about-bluetooth.md create mode 100755 docs/static/bluetooth/gatt_hierarchy.png create mode 100755 docs/static/bluetooth/services_and_GATT.png diff --git a/docs/reference/bluetooth/about-bluetooth.md b/docs/reference/bluetooth/about-bluetooth.md new file mode 100755 index 00000000..81a53eea --- /dev/null +++ b/docs/reference/bluetooth/about-bluetooth.md @@ -0,0 +1,99 @@ +# About Bluetooth + +![](/static/bluetooth/Bluetooth_SIG.png) + +## Introduction + +Bluetooth is a wireless communications technology which allows devices to communicate with each other without the need for a central device like a router or access point. + +Bluetooth has a special "low energy feature" which means it can be used without requiring much power from the devices using it. It's the Bluetooth low energy feature which the micro:bit uses. + +In the world of Bluetooth low energy, a device has something called a "profile" which defines the way other devices are able to communicate over Bluetooth with it. In a way, the Bluetooth profile defines the way a device appears to other devices in terms of its features and the things it can do. + +To put it another way, a Bluetooth profile is really an interface specification. It defines the data which a device has, what another device can do with that data over a Bluetooth connection and how the device with the profile should respond when a connected device acts upon its data in some way. Let's look at that description in a little more technical detail. + +## Basic Concepts + +A Bluetooth device contains a table of data called an Attribute Table which can be accessed by other connected devices in various possible ways. That table of data and the ways in which it can be exploited falls into a technical area of Bluetooth called the Generic Attribute profile or "GATT" for short and you may see the term GATT in some of the documentation for APIs such as those provided by the Android platform. + +The Attribute Table contains something like a series of records of various types. The main types are called Services, Characteristics and Descriptors. Let's look at each of these terms in turn. + +### Attributes + +Services, Characteristics and Descriptors are all types of Attribute. Hence Generic Attribute Profile, Attribute Table and something called the Attribute Protocol. All attributes have a type which is identified by a UUID (Universally Unique Identifer). Some Attributes are defined by the Bluetooth SIG, the technical standards body for Bluetooth and these have UUIDs which are 16 bits in length. Some Attributes are custom designed for a particular device by the product team and these have 128 bit UUIDs. The micro:bit uses a mixture of 16 bit and 128 bit UUIDs. + +### Structure + +Services, Characteristics and Descriptors are organised in a hierarchy with Services at the top and Descriptors at the bottom. Services contain one or more Characteristics. A Characteristic owns zero or more Descriptors. Zero because Descriptors are completely optional whereas a Service must contain at least one Characteristic. + +![](/static/bluetooth/gatt_hierarchy.png) + +### Services + +A Service is a container for logically related Bluetooth data items. Those data items are in fact called Characteristics. A Service can be thought of as the owner of the Characteristics inside it. Often a Service represents a particular feature (e.g. a hardware feature) of a device like the buttons or a particular sensor. An example of a Bluetooth SIG defined Service is the Device Information Service which, as the name suggests, is a container for various items of information about the device such as its manufacturer and serial number. The micro:bit has this service. + +### Characteristics + +Characteristics are items of data which relate to a particular internal state of the device or perhaps some state of the environment which the device can measure using a sensor. The current battery level is an example of internal state data whereas the ambient temperature could perhaps be measured by a sensor. Sometimes Characteristics represent configuration data such as the frequency at which you want something to be measured. In any of these cases, the way a device can expose such data to other devices to use via Bluetooth is by making them available as a Characteristic. An example of a Bluetooth SIG defined Characteristic is the Serial Number String which you'll find inside the Device Information service. + +Characteristics contain various parts. They have a type, a value, some properties and some permissions. + +Type is something already explained above, a UUID value which indicates which particular type of Characteristic an Attribute is. Value is the value of the associated state data item. + +Properties define what another device can do with the characteristic over Bluetooth in terms of various defined operations such as READ, WRITE or NOTIFY. Reading a characteristic means transferring its current value from the attribute table to the connected device over Bluetooth. Writing allows the connected device to change that value in the state table. Notifications are a special message type which a device like the micro:bit can send to a connected device whenever the value of the associated characteristic changes or perhaps periodically, controlled by a timer. Not all Characteristics support all operations. The Characteristic's properties tell you which operations are supported. + +Sometimes the device will have been programmed to respond in a special way when it processes an operation like reading or writing a value from the attribute table so operations can result in more happening than simply transferring data across the connection. Perhaps changing the value of a Characteristic will result in the device changing the frequency with which it samples readings from the device accelerometer for example. + +Permissions are to do with security and further describe the security conditions that must be met before read or write access to the characteristic is to be granted. + +### Descriptors + +Descriptors contain meta data which either augments the details relating to the Characteristic which the Descriptor belongs to or allows the configuration of a behaviour involving that Characteristic. Notification messages are switched on or off using a special descriptor called the Client Characteristic Configuration Descriptor for example. + +### Profile + +A Bluetooth profile is a specification which pulls together all the required information about how a device behaves, how it can be accessed in terms of its services, characteristics and descriptors, security rules, concurrency limitations and so on. + +## Client Server Architecture + +When a smartphone application interacts with a device like the micro:bit over a Bluetooth connection we have a client/server architecture. The phone application is usually the GATT client and the micro:bit is usually the GATT server. They communicate using a protocol called the Attribute Protocol or just ATT for short. As a smartphone developer you work with APIs and do not have to worry about formulating ATT protocol data units and so on. + +![](/static/bluetooth/services_and_GATT.png) + +## Device Discovery + +Everything described above relates to devices which are connected and communicating as GATT client and server. But there's a stage which precedes this where the two devices are not yet connected. How do they find each other and connect? The answer to this question is termed 'Device Discovery' and is the responsibility of another part of the Bluetooth architecture called the Generic Access Profile (GAP). + +In GAP, one devices advertises, emitting small packets of data periodically. These packets contain information about the device doing the advertising. Other devices looking for devices to connect to perform something called scanning, receiving and processing advertising packets and filtering out those that come from devices of a type that are not of interest. Usually the user is given information about devices which are discovered and they then select one to be connected to. The device which advertises is called a Bluetooth Peripheral whereas the one doing the scanning is a Bluetooth Central device. micro:bit is a Bluetooth peripheral. + +Bluetooth on the BBC micro:bit + +Full documentation for the BBC micro:bit Bluetooth profile as used by this application can be found at the [Lancaster University documentation](http://lancaster-university.github.io/microbit-docs/ble/profile/) web site. + +The micro:bit's accelerometer (motion detector), magnetometer (digital compass), two buttons on the front, LED Display, IO pins on the edge connector, internal message bus and internal temperature sensor are all exposed as Services so that applications can exploit these features of the device. In addition: + +* the Bluetooth SIG defined Device Information Service is included to allow applications to obtain information such as firmware version details over Bluetooth +* there's a Device Firmware Update (DFU) service which allows new micro:bit code to be flahsed to the device over Bluetooth instead of over USB +* there's a UART service which allows arbitrary data to be exchanged with the micro:bit in a way resembling traditional serial communications. + +Everything you can do with the micro:bit over Bluetooth is achieved through read, write and notify operations. Not all characteristics support all three so check the profile documentation. Often there are Characteristics whose purpose is to allow you to write configuration values which control other behviours. Technically these are called Control Points. For example you can specify the frequency with which accelerometer data is sampled before it is transmitted as a Notification message to your application. + +## Want to Know More? + +The Bluetooth SIG web site at http://www.bluetooth.com is a good place for further information about Bluetooth in general. You'll find all the SIG defined profiles, services, characteristics and descriptors there as well as the core specification for all Bluetooth technology. + +That's it! Enjoy using Bluetooth on the BBC micro:bit! + +Martin Woolley, Bluetooth SIG. Twitter: @bluetooth_mdw + +#### Video +https://www.youtube.com/watch?v=aep_GVowKfs + + +### See also + +[Bluetooth SIG](https://www.bluetooth.com), [micro:bit Bluetooth profile ](http://lancaster-university.github.io/microbit-docs/ble/profile/), [micro:bit Bluetooth profile reference](http://lancaster-university.github.io/microbit-docs/resources/bluetooth/microbit-profile-V1.9-Level-2.pdf), [Bluetooth on micro:bit resources](http://bluetooth-mdw.blogspot.co.uk/p/bbc-microbit.html) + +```package +microbit-bluetooth +``` \ No newline at end of file diff --git a/docs/reference/bluetooth/bluetooth-pairing.md b/docs/reference/bluetooth/bluetooth-pairing.md index d9677e60..6b507280 100755 --- a/docs/reference/bluetooth/bluetooth-pairing.md +++ b/docs/reference/bluetooth/bluetooth-pairing.md @@ -92,7 +92,8 @@ If you do find yourself needing to pair again you will first need to remove the ### See also -[Bluetooth SIG](https://www.bluetooth.com), [Bluetooth on micro:bit resources](http://bluetooth-mdw.blogspot.co.uk/p/bbc-microbit.html) +[Bluetooth SIG](https://www.bluetooth.com), [micro:bit Bluetooth profile ](http://lancaster-university.github.io/microbit-docs/ble/profile/), [micro:bit Bluetooth profile reference](http://lancaster-university.github.io/microbit-docs/resources/bluetooth/microbit-profile-V1.9-Level-2.pdf), [Bluetooth on micro:bit resources](http://bluetooth-mdw.blogspot.co.uk/p/bbc-microbit.html) + ```package microbit-bluetooth diff --git a/docs/reference/bluetooth/on-bluetooth-connected.md b/docs/reference/bluetooth/on-bluetooth-connected.md index 8594d947..fb3a456a 100755 --- a/docs/reference/bluetooth/on-bluetooth-connected.md +++ b/docs/reference/bluetooth/on-bluetooth-connected.md @@ -30,7 +30,7 @@ http://www.youtube.com/watch?v=HyBcsD9Eh6I ### See also -[Bluetooth SIG](https://www.bluetooth.com), [Bluetooth on micro:bit resources](http://bluetooth-mdw.blogspot.co.uk/p/bbc-microbit.html) +[Bluetooth SIG](https://www.bluetooth.com), [micro:bit Bluetooth profile ](http://lancaster-university.github.io/microbit-docs/ble/profile/), [micro:bit Bluetooth profile reference](http://lancaster-university.github.io/microbit-docs/resources/bluetooth/microbit-profile-V1.9-Level-2.pdf), [Bluetooth on micro:bit resources](http://bluetooth-mdw.blogspot.co.uk/p/bbc-microbit.html) ```package microbit-bluetooth diff --git a/docs/reference/bluetooth/on-bluetooth-disconnected.md b/docs/reference/bluetooth/on-bluetooth-disconnected.md index 942f7efa..7341d483 100755 --- a/docs/reference/bluetooth/on-bluetooth-disconnected.md +++ b/docs/reference/bluetooth/on-bluetooth-disconnected.md @@ -30,7 +30,7 @@ http://www.youtube.com/watch?v=HyBcsD9Eh6I ### See also -[Bluetooth SIG](https://www.bluetooth.com), [Bluetooth on micro:bit resources](http://bluetooth-mdw.blogspot.co.uk/p/bbc-microbit.html) +[Bluetooth SIG](https://www.bluetooth.com), [micro:bit Bluetooth profile ](http://lancaster-university.github.io/microbit-docs/ble/profile/), [micro:bit Bluetooth profile reference](http://lancaster-university.github.io/microbit-docs/resources/bluetooth/microbit-profile-V1.9-Level-2.pdf), [Bluetooth on micro:bit resources](http://bluetooth-mdw.blogspot.co.uk/p/bbc-microbit.html) ```package microbit-bluetooth diff --git a/docs/reference/bluetooth/start-accelerometer-service.md b/docs/reference/bluetooth/start-accelerometer-service.md index abb9e4b5..416649fa 100755 --- a/docs/reference/bluetooth/start-accelerometer-service.md +++ b/docs/reference/bluetooth/start-accelerometer-service.md @@ -35,7 +35,7 @@ For more advanced information on the micro:bit Bluetooth accelerometer service i ### See also -[Bluetooth SIG](https://www.bluetooth.com), [Bluetooth on micro:bit resources](http://bluetooth-mdw.blogspot.co.uk/p/bbc-microbit.html) +[Bluetooth SIG](https://www.bluetooth.com), [micro:bit Bluetooth profile ](http://lancaster-university.github.io/microbit-docs/ble/profile/), [micro:bit Bluetooth profile reference](http://lancaster-university.github.io/microbit-docs/resources/bluetooth/microbit-profile-V1.9-Level-2.pdf), [Bluetooth on micro:bit resources](http://bluetooth-mdw.blogspot.co.uk/p/bbc-microbit.html) ```package microbit-bluetooth diff --git a/docs/reference/bluetooth/start-button-service.md b/docs/reference/bluetooth/start-button-service.md index 1e8e1313..4a8326a6 100755 --- a/docs/reference/bluetooth/start-button-service.md +++ b/docs/reference/bluetooth/start-button-service.md @@ -39,7 +39,7 @@ For more advanced information on the micro:bit Bluetooth button service includin ### See also -[Bluetooth SIG](https://www.bluetooth.com),[Bluetooth on micro:bit resources](http://bluetooth-mdw.blogspot.co.uk/p/bbc-microbit.html) +[Bluetooth SIG](https://www.bluetooth.com), [micro:bit Bluetooth profile ](http://lancaster-university.github.io/microbit-docs/ble/profile/), [micro:bit Bluetooth profile reference](http://lancaster-university.github.io/microbit-docs/resources/bluetooth/microbit-profile-V1.9-Level-2.pdf), [Bluetooth on micro:bit resources](http://bluetooth-mdw.blogspot.co.uk/p/bbc-microbit.html) ```package microbit-bluetooth diff --git a/docs/reference/bluetooth/start-io-pin-service.md b/docs/reference/bluetooth/start-io-pin-service.md index 48ffa914..03e529e3 100755 --- a/docs/reference/bluetooth/start-io-pin-service.md +++ b/docs/reference/bluetooth/start-io-pin-service.md @@ -33,7 +33,7 @@ For more advanced information on the micro:bit Bluetooth IO pin service includin ### See also -[Bluetooth SIG](https://www.bluetooth.com), [Bluetooth on micro:bit resources](http://bluetooth-mdw.blogspot.co.uk/p/bbc-microbit.html) +[Bluetooth SIG](https://www.bluetooth.com), [micro:bit Bluetooth profile ](http://lancaster-university.github.io/microbit-docs/ble/profile/), [micro:bit Bluetooth profile reference](http://lancaster-university.github.io/microbit-docs/resources/bluetooth/microbit-profile-V1.9-Level-2.pdf), [Bluetooth on micro:bit resources](http://bluetooth-mdw.blogspot.co.uk/p/bbc-microbit.html) ```package microbit-bluetooth diff --git a/docs/reference/bluetooth/start-led-service.md b/docs/reference/bluetooth/start-led-service.md index 3dc1c5ea..fa851a75 100755 --- a/docs/reference/bluetooth/start-led-service.md +++ b/docs/reference/bluetooth/start-led-service.md @@ -35,7 +35,7 @@ For more advanced information on the micro:bit Bluetooth LED service including i ### See also -[Bluetooth SIG](https://www.bluetooth.com), [Bluetooth on micro:bit resources](http://bluetooth-mdw.blogspot.co.uk/p/bbc-microbit.html) +[Bluetooth SIG](https://www.bluetooth.com), [micro:bit Bluetooth profile ](http://lancaster-university.github.io/microbit-docs/ble/profile/), [micro:bit Bluetooth profile reference](http://lancaster-university.github.io/microbit-docs/resources/bluetooth/microbit-profile-V1.9-Level-2.pdf), [Bluetooth on micro:bit resources](http://bluetooth-mdw.blogspot.co.uk/p/bbc-microbit.html) ```package microbit-bluetooth diff --git a/docs/reference/bluetooth/start-magnetometer-service.md b/docs/reference/bluetooth/start-magnetometer-service.md index 4dcab9d7..a89a6adf 100755 --- a/docs/reference/bluetooth/start-magnetometer-service.md +++ b/docs/reference/bluetooth/start-magnetometer-service.md @@ -35,7 +35,7 @@ For more advanced information on the micro:bit Bluetooth magnetometer service in ### See also -[Bluetooth SIG](https://www.bluetooth.com), [Bluetooth on micro:bit resources](http://bluetooth-mdw.blogspot.co.uk/p/bbc-microbit.html) +[Bluetooth SIG](https://www.bluetooth.com), [micro:bit Bluetooth profile ](http://lancaster-university.github.io/microbit-docs/ble/profile/), [micro:bit Bluetooth profile reference](http://lancaster-university.github.io/microbit-docs/resources/bluetooth/microbit-profile-V1.9-Level-2.pdf), [Bluetooth on micro:bit resources](http://bluetooth-mdw.blogspot.co.uk/p/bbc-microbit.html) ```package diff --git a/docs/reference/bluetooth/start-temperature-service.md b/docs/reference/bluetooth/start-temperature-service.md index 0679fbb0..90744a8c 100755 --- a/docs/reference/bluetooth/start-temperature-service.md +++ b/docs/reference/bluetooth/start-temperature-service.md @@ -35,7 +35,7 @@ For more advanced information on the micro:bit Bluetooth temperature service inc ### See also -[Bluetooth SIG](https://www.bluetooth.com), [Bluetooth on micro:bit resources](http://bluetooth-mdw.blogspot.co.uk/p/bbc-microbit.html) +[Bluetooth SIG](https://www.bluetooth.com), [micro:bit Bluetooth profile ](http://lancaster-university.github.io/microbit-docs/ble/profile/), [micro:bit Bluetooth profile reference](http://lancaster-university.github.io/microbit-docs/resources/bluetooth/microbit-profile-V1.9-Level-2.pdf), [Bluetooth on micro:bit resources](http://bluetooth-mdw.blogspot.co.uk/p/bbc-microbit.html) ```package diff --git a/docs/reference/bluetooth/start-uart-service.md b/docs/reference/bluetooth/start-uart-service.md index a74875a9..fcd1116d 100755 --- a/docs/reference/bluetooth/start-uart-service.md +++ b/docs/reference/bluetooth/start-uart-service.md @@ -37,7 +37,7 @@ For more advanced information on the micro:bit Bluetooth UART service including ### See also -[Bluetooth SIG](https://www.bluetooth.com), [Bluetooth on micro:bit resources](http://bluetooth-mdw.blogspot.co.uk/p/bbc-microbit.html) +[Bluetooth SIG](https://www.bluetooth.com), [micro:bit Bluetooth profile ](http://lancaster-university.github.io/microbit-docs/ble/profile/), [micro:bit Bluetooth profile reference](http://lancaster-university.github.io/microbit-docs/resources/bluetooth/microbit-profile-V1.9-Level-2.pdf), [Bluetooth on micro:bit resources](http://bluetooth-mdw.blogspot.co.uk/p/bbc-microbit.html) ```package microbit-bluetooth diff --git a/docs/reference/bluetooth/uart-read.md b/docs/reference/bluetooth/uart-read.md index 374507c7..8c6eccdd 100755 --- a/docs/reference/bluetooth/uart-read.md +++ b/docs/reference/bluetooth/uart-read.md @@ -45,7 +45,7 @@ For more advanced information on the micro:bit Bluetooth UART service including ### See also -[Bluetooth SIG](https://www.bluetooth.com), [Bluetooth on micro:bit resources](http://bluetooth-mdw.blogspot.co.uk/p/bbc-microbit.html) +[Bluetooth SIG](https://www.bluetooth.com), [micro:bit Bluetooth profile ](http://lancaster-university.github.io/microbit-docs/ble/profile/), [micro:bit Bluetooth profile reference](http://lancaster-university.github.io/microbit-docs/resources/bluetooth/microbit-profile-V1.9-Level-2.pdf), [Bluetooth on micro:bit resources](http://bluetooth-mdw.blogspot.co.uk/p/bbc-microbit.html) ```package microbit-bluetooth diff --git a/docs/reference/bluetooth/uart-write.md b/docs/reference/bluetooth/uart-write.md index 58c3d676..208da29b 100755 --- a/docs/reference/bluetooth/uart-write.md +++ b/docs/reference/bluetooth/uart-write.md @@ -44,7 +44,7 @@ For more advanced information on the micro:bit Bluetooth UART service including ### See also -[Bluetooth SIG](https://www.bluetooth.com), [Bluetooth on micro:bit resources](http://bluetooth-mdw.blogspot.co.uk/p/bbc-microbit.html) +[Bluetooth SIG](https://www.bluetooth.com), [micro:bit Bluetooth profile ](http://lancaster-university.github.io/microbit-docs/ble/profile/), [micro:bit Bluetooth profile reference](http://lancaster-university.github.io/microbit-docs/resources/bluetooth/microbit-profile-V1.9-Level-2.pdf), [Bluetooth on micro:bit resources](http://bluetooth-mdw.blogspot.co.uk/p/bbc-microbit.html) ```package microbit-bluetooth diff --git a/docs/static/bluetooth/gatt_hierarchy.png b/docs/static/bluetooth/gatt_hierarchy.png new file mode 100755 index 0000000000000000000000000000000000000000..d5171d3a8bddcb5a1b3ff76bdb02b2d73fb89a33 GIT binary patch literal 19880 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 !6gV3ps2DR5@Xp9DWPqh&;CGUt0gn-Nl13 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 literal 0 HcmV?d00001