In this talk I will present the design of a real-time sensing platform for collecting telemetric information from radio-controlled devices. The platform is based around the new Bluetooth Smart (Low Energy) standard that is part of Bluetooth 4.0. I will walk through the implementation from selecting hardware and sensors, programming Bluetooth chips to connect them to smartphones and how to build a simple cloud based real-time monitoring solution based on Node.JS and hosted services.
The presentation will include a live demonstration using radio-controlled devices and discuss actual real-world performance of Bluetooth 4.0.
4. Typically a system based on a microprocessor contained within another system.
The other system can be anything from a bigger computer, appliances like a fridge or oven, or even the human body.
6. HARDWARE
+
SOFTWARE
+
DATA
It is increasingly difficult to imagine a self-contained system that does not interact with the outside world.
An embedded system increasingly needs to interact with the external world though a user or network interface.
Thus to the definition, we need to add “data”.
7. About a year ago...
About a year ago I was doing a race in a club for radio controlled “Mini Z” cars in Milan. The “Mini Z” cars are cars at a scale 1/28 produced by
Kyosho and are becoming increasingly popular.
8. 80 meters
8 seconds
~ 36 km/h
The cars travel at a very high speed and are difficult to control. Unfortunately I’m not really got at controlling the cars and start thinking about
ways to get better.
I decided to start measuring the cars using sensors and thereby improve my driving.
9. Does the chassis flex?
Interesting parameters include temperature, force/flexing of the chassis, energy, acceleration and speed.
10. How are my plants doing?
Once having a sensor system, it could be used not only to pull telemetic information from cars, but e.g. to monitor plant growth by tracking
sunlight and humidity.
11. Body sensing and User Research
... or sensors could be used in body tracking as we are doing at frog as part of the user
research.
12. I NEEDED SOMETHING:
- REALLY SMALL
- ROBUST
- CHEAP
- TO COLLECT DATA
To monitor radio controlled cars I needed something really small, since the cars a very sensitive to physical changes, it needs to be robust and
able to operate in an environment where radio signals are heavily used, it needs to be cheap and able to collect data.
16. BLUETOOTH
The reason for choosing Bluetooth is because of the new protocol, Bluetooth Smart, that is included in Bluetooth 4.0.
Bluetooth Smart is a protocol originally developed by Nokia, and later integrated in the Bluetooth spec. Bluetooth Smart was originally called
Wibree and later Bluetooth Low Energy.
The main goal of Bluetooth Smart is to create a protocol with very low energy consumption and low latency.
17. PC SUPPORT 1 1 0 0 4 4
PHONE
SUPPORT
1 1 1 0 4 4
ATTENTION
FREE
PAIRING
4 4 4 4 1 4
MAX ACTUAL
THROUGHP.
200 kbps 424 kbps 20 kbps 250 kbps 6 Mbps 305 kbps
LATENCY 25 ms 1 s * 0 * 20-30 ms 1,5 ms * 2,5 ms
RANGE 1 m 5 cm ~10 m 300 m 150 m 50 m
PEAK
CONSUMP.
10 mA 50 mA * 17 mA 40 mA 116 mA 16 mA
NETWORK
TOPOLOGY
STAR STAR MESH, STAR MESH, STAR STAR STAR
IrDA NFC WiFi BluetoothANT+ ZigBee
COMPARING WIRELESS TECHNOLOGIES
This is a comparison of different wireless technologies. The peak consumption is a key factor for making a system
that can last long on a single battery. A rule of thumb is that the current draw should not be above the range of
15 mA to avoid damaging the battery (this is valid for the standard coin cell batteries, CR2032)
18. BLUETOOTH
“Google’s support for the
Bluetooth Smart Ready platform
in Android is one step forward for
Bluetooth’s dominance in the
internet of things.”
GIGAOM
Google announced on Google I/O 2013 support for Bluetooth 4.0 as of Android API v18
19. BLUETOOTH
“Bluetooth is not becoming the
de facto standard for your
personal area network… it already
is the standard for your personal
area network”
Bluetooth SIG
Bluetooth 4.0 is backed by more than 400 companies.
22. Peripheral
Central
A peripheral only needs to implement functionality to advertise itself and participate in a
connection, but does not need the functionality to initiate a connection. A central on the
other hand needs to implement all the functionality of a peripheral + ability to initiate a
connect + support for all older standards of Bluetooth.
25. Bluetooth 4.0 Stack
Application
Generic Access Profile
(GAP)
Generic Attribute
Profile (GATT)
Attribute Protocol
(ATT)
Security Manager (SM)
Logical Link Control and Adaption Protocol
Link and RF layer
26. Bluetooth 4.0 Stack
Application
Generic Access Profile
(GAP)
Generic Attribute
Profile (GATT)
Attribute Protocol
(ATT)
Security Manager (SM)
Logical Link Control and Adaption Protocol
Link and RF layer
The parts of the stack that an application typically interfaces with are GAP and
GATT.
27. Central
Peripheral
Ad
Advertisement interval
(20ms to 10s)
Ad
Advertisement interval
(20ms to 10s)
Ad
Advertisement interval
(20ms to 10s)
Advertisement
A Bluetooth connection begins with the peripheral sending out advertisements to announce it’s presence. The advertisement interval can be
configured at the application level.
28. Central
Peripheral
Ad
Advertisement interval
(20ms to 10s)
Ad
Advertisement interval
(20ms to 10s)
Ad
Advertisement interval
(20ms to 10s)
Scanning Scanning
Advertisement
Scanning
A central is scanning for
advertisements.
29. Central
Peripheral Ad
Ch 37
Advertisement interval
(20ms to 10s)
Ad
Ch 37
Advertisement interval
(20ms to 10s)
Ad
Ch 37
Advertisement interval
(20ms to 10s)
Ad
Ch 38
Ad
Ch 39
Ad
Ch 38
Ad
Ch 39
Ad
Ch 38
Ad
Ch 39
Scanning Scanning
Advertisement
Scanning
Bluetooth 4 is using 40 different channels in the 2,4GHz spectrum. In reality 3 is used for advertisements and the remaining 37 is used when
the connection is established. Frequency hopping is implemented to ensure a stable connection.
30. Central
Peripheral Ad
Ch 37
Advertisement interval
(20ms to 10s)
Ad
Ch 37
Advertisement interval
(20ms to 10s)
Ad
Ch 37
Advertisement interval
(20ms to 10s)
Ad
Ch 38
Ad
Ch 39
Ad
Ch 38
Ad
Ch 39
Ad
Ch 38
Ad
Ch 39
Scanning Channel 39 Scanning Channel 37
Advertisement
Scanning Channel 38
32. Req. Data
Data
Data
Connection
interval
Connection
interval
Slave Latency = 2
Data
Connection
interval
Data
Data
Slave Latency
Master
Central
Slave
Peripheral
The peripheral is not required to respond to each packet. It is allowed to skip a number of packets defined as the “slave latency”. In this figure
the slave latency is set to 2.
The slave latency is a value from 0 to 499, however, the maximum period that the peripheral remain silent should not exceed 16 seconds.
34. Mobile
Phone
Sensor
Bluetooth
Smart
The architecture that I’m following is based on a simple setup where sensors are attached electronically to the Bluetooth Peripheral, and the
peripheral communicates using Bluetooth Smart to a mobile phone.
37. Analog
I²C
SPI
Sensors can be attached using either an ADC converter or through a serial protocol like Inter-Intergreated Circuit or Serial Peripheral Interface.
40. Texas Instruments - CC2540/CC2541
Nordic Semiconductor
CSR
EM Microelectronic
Texas Instruments is producing the CC2540 chip that is interesting because it include a 8501 MCU, thus eliminating the need for an external
MCU. This reduces the total energy consumption and the complexity of the hardware design.
41. This is the architecture of the CC2540. The CC2541 is slightly different in that it includes a I2C hardware interface and no USB interface. The
CC2541 also consumes less energy.
To make the system run is also needed a crystal, antenna, signal cap, EEPROM etc. The total BOM (Bill of Materials) cost is around 3€.
42. Turnkey modules:
Bluegiga BLE112 and BLE113
Blueradio BR-LE4.0-S2A
Alpwise ALPW-BLEDVK002
Alpha Micro
Building a module around a chipset also requires a certification from Bluetooth. An alternative is to use a turnkey module. Some options
include:
Bluegiga: http://www.bluegiga.com/BLE113_Bluetooth_Smart_module
Blueradio: http://www.blueradios.com/hardware_LE4.0-S2.htm
Alpwise: http://www.alpwise.com/produit.php?ref=ALPW-BLEDK002&id_rubrique=6
Alpha Micro: http://news.cision.com/livewire-pr/r/alpha-micro-launches-low-energy-bluetooth-smart--modules-for-medical-and-other-devices-
from-laird-te,c9405289
43. BlueGiga is a module with good documentation, it’s based on CC2540/CC2541
BgScripting language or BG API
According to BlueGiga it will be possible to use the IAR Workbench (expensive) 8051 compiler in the near future.
BLE112 costs around €11
45. Phones and computers
supporting BT4
iOS
Android
Linux
iOS (from iPhone 4S) has good support for BT4. Google has announced support in Android and Linux has support.
56. BGScript
Basic-like language
Event driven
No functions (!)
BGScript used to program the BLE112/3 modules is a basic like language, event driven, not allowing any functions to be defined.
57. Generic Attribute Profile (GATT)
The first step in programming the firmware is defining a GATT
profile.
58. Generic Attribute Profile (GATT)
value
Byte array, from 0 to 512 bytes
Each type of value transferred can be a value between 0 and 512 bytes
long.
59. Generic Attribute Profile (GATT)
Characteristics specification at:
http://developer.bluetooth.org/
valuetype
16 bit predefined UUID
or
128 bit generated UUID
Each value is assigned to a type. The type can either be a type defined in the Bluetooth spec (16 bit UUID) or be a randomly generated 128
but UUID. This means that the application developer can define custom application-specific types and does not need to rely on the availability
of profiles in the chipsets and drivers. This is a really powerful feature of the new Bluetooth protocol.
60. Generic Attribute Profile (GATT)
Characteristics specification at:
http://developer.bluetooth.org/
valuetypehandle
16 bit handle
In addition a handle, an ID is assigned.
61. Generic Attribute Profile (GATT)
Characteristics specification at:
http://developer.bluetooth.org/
valuetypehandle permission
And various permissions.
62. Generic Attribute Profile (GATT)
Characteristics specification at:
http://developer.bluetooth.org/
Characteristic valuetypehandle permission
All these attributes are collectively called a Characteristic.
63. Generic Attribute Profile (GATT)
Characteristics specification at:
http://developer.bluetooth.org/
Characteristic valuetypehandle permission
Service
A characteristic is assigned to a service.
64. Generic Attribute Profile (GATT)
Characteristics specification at:
http://developer.bluetooth.org/
Server
Characteristic valuetypehandle permission
Service
A service to a server. The server is typically implemented by the
peripheral.
65. Service
Generic Attribute Profile (GATT)
Characteristics specification at:
http://developer.bluetooth.org/
Characteristic valuetypehandle permission
Service
Server
A server can have more than one
service.
66. Service
Characteristic
Generic Attribute Profile (GATT)
valuetypehandle permission
Characteristics specification at:
http://developer.bluetooth.org/
Server
Characteristic valuetypehandle permission
Characteristic valuetypehandle permission
Service
A service can have more than one
characteristic.
67. Defining a GATT profile
The Gatt profile is defined in a simple XML
file.
68. Defining a GATT profile
A custom service and characteristic is defined with a generated
UUID.
69. Programming BLE113
BGScript is event driven. When the peripheral is powered on a system_boot event is raised. At this point the advertisement interval is
configured and advertisement is started.
70. Programming BLE113
Once a connection has been established a sensor is montiored using a timer. An analog sensor is read using a call to hardware_adc_read,
the result is not immediately available but given in another event.
71. Programming BLE113
The result is given as part of the hardware_adc_result_event. Here we write the value to the GATT database using the id “xgatt_force” that we
defined in the GATT XML file.
72. iOS App using
CoreBluetooth and
AFNetworking.
Bluetooth connection
is kept alive while the
app is sleeping
The Bluetooth peripheral is connecting to an iPhone app. I’ve used Apple’s CoreBluetooth API and AFNetworking to relay the data to a cloud
service.
73. Issues
Each line of BGScript takes 1-3ms to execute
Problem with I2C
(hardware support in BLE113)
Changing GATT profile requires switching
Bluetooth off and on in iOS
1. The main issue with the BLE112/113 system is that BGScript is slow. It is not possible to measure sensor with high frequency with this
system. Instead a C compiler should be used.
2. On the CC2540/BLE112, the I2C interface is implemented in software making it slow and buggy. If you need I2C you should use CC2541/
BLE113.
3. When updating the GATT profile on the peripheral iOS does not see the changes. To account for this, switch off and on Bluetooth in iOS
settings
74. Actual Performance
Actual range around 25 meters
Duration on a standard CR2032 battery, with
constant non-optimized communication and
reading of four ADC sensors: around 4 hours
From a few experiments I’ve seen that the connection becomes somewhat unstable above 25 meters range. This obviously depends a lot on
the environment. Below 25 the connection is very stable, even in environments with a lot of radios in the 2,4GHz band.
The coin cell battery can last for a very long time, however, this requires setting the connection interval parameters rather conservative,
implement low power modes etc. etc. Running the chip in a busy loop where it reads the ADC and sends the values to the central, the battery
lasts for around 4 hours.
81. nodejs and log.io
The first step is to setup a tool that allows to verify that the whole chain, from Sensor to cloud is working. For this I use the node.js program
log.io.
This is a simple tool that allows to see logs realtime in a web browser.
82. Sensing in the Cloud
Xively,
Open Sen.se,
SenseOS,
Etherios,
ElectricCimp,
One of the most mature cloud based sensor platforms is Xively (previously
Pachube)
83. Store Process Visualize
HTTPEvent
HTTP
Open Sen.se Cloud Platform
Open Sen.se offers a platform that is modular and easy to configure. The platform is still in private beta, but conceptually very
interesting.
84. Here’s an example of the force sensor data from the MiniZ car shown on Open
Sen.se.
86. Bluetooth Smart in a year:
Open Source breakout boards
Android Support
Improved iOS support
TI SmartTag developer kit
Lower power chipsets
Hundreds of devices launched
87. Bluetooth and Embedded is
clearly becoming easier, less
hardware hacking is needed
grazie a tutto cio, e’ diventato piu facile ad utilizare e programmare embedded e bluetooth
4
88. Bluetooth 4 is the standard
that will enable massive data
collection. A great challenge
lies in what to do with the
data.
Secondo me la prossima sfida e’ scoprire come sfruttare al meglio tutti questi
dati