In the previous blog “IoT Connectivity Technologies” we described in brief various wireless connectivity options available for developing an IoT device. In this blog, we will discuss in detail about the Bluetooth Technology – Physical and higher network layer and its classifications.

Bluetooth technology Introduction

Bluetooth is wireless technology standard using short wavelength Ultra High frequency radio waves in the license free Industrial, Scientific and Medical (ISM) frequency band. Bluetooth is managed by Bluetooth SIG (Special Interest Group) originally formed by five companies Ericsson, Nokia, IBM, Toshiba and Intel. The Bluetooth SIG will publish and update the Bluetooth specifications. The IEEE standardized Bluetooth as IEEE 802.15.1, but no longer maintains the standard. The Bluetooth radio interface enables reliable communications over short distances. It supports multiple channels with different power level and reliable forms of modulation.

Bluetooth Technology Basics

Bluetooth frequencies are located within the 2.4GHz ISM band. The frequency in ISM bands ranges from 2400MHz to 2483.5MHz. There is 1MHz space between each Bluetooth channel starting from 2402MHz and ending at 2480MHz. This can be calculated as 2401 + n, where n ranges from 1 to 79. This type of channel arrangement gives a guard band of 2MHz at the bottom end and 3.5MHz at the top, thus preventing interference. Bluetooth employs a technology called Frequency Hopping Spread Spectrum by which the radio signals are transmitted by rapidly switching the carrier signal among various frequency channels.  In this method the transmitted data is divided into packets and sent on one of 79 designated channels switched randomly at a rate of 1600 times per second. The main drawback of this technique is the occurrence of collision with another wireless device such as Wi-Fi when introduced into the same environment. To avoid this, the Adaptive Frequency hopping technique is introduced. The Adaptive Frequency Hopping technique allows the Bluetooth to adapt the environment by excluding the fixed sources of interference (i.e. bad channels) from the available list of channels. This technique of re-mapping reduces the number of channels to be used by the Bluetooth. The following figure illustrate the collision resulting from the random frequency hopping adapting to the environment

Collision in Random Frequency hopping

Random Frequency Hopping

The following figure illustrate the collision avoided using Adaptive Frequency Hopping

Advantage of Adaptive Frequency hopping

Adaptive Frequency Hopping

The digital data is conveyed using a modulation scheme called Gaussian Frequency Shift Keying. In this technique the bits of the transferred data corresponds to discrete frequency changes in the carrier signal. The binary one is represented by a positive frequency deviation and a binary zero is represented by a negative frequency deviation. With this technique, the basic data rate (BR) of 1 Mbps is achieved. To achieve higher data rates, Bluetooth uses another major class of modulation technique called Phase Shift Keying. Phase Shift Keying is a type of digital modulation scheme by which the digital data is conveyed by modulating the phase of the carrier wave. π/4 Differential Quadrature Phase Shift keying (π/4-DQPSK) and 8-ary Phase Shift Keying (8DPSK) are the different forms of PSK used for enhanced data rate (EDR) capability. By these techniques the Bluetooth can achieve data rate of 2Mbps with π/4-DQPSK and 3Mbps with 8DPSK. The combination of these BR and EDR mode is classified as a “BR/EDR radio”. Further improvement in the Bluetooth data rate up to 24 Mbps is achieved without changing the format of the Bluetooth modulation but by operating cooperatively with an IEEE 802.11g physical layer. Bluetooth Low Energy, a version of Bluetooth technology focused on low energy consumption than higher data rate also operates in the same frequency range of 2.4GHz to 2.4835GHz. Instead of the 79 1MHz channels, BLE has 40 2MHz channels and the data is transmitted using Gaussian Frequency Shift Keying. The bit rate of the BLE is 1Mbps similar to the Basic Rate (BR). With understanding of the physical layer, we will now explore the higher communication layers.

Bluetooth Communication

Bluetooth communication takes place a short range ad hoc network known as Piconet. A Piconet starts with two connected devices and can grow up to eight connected devices. In general, the Bluetooth communication sets one of the Bluetooth devices as a controlling unit (master unit) and other device as a slave unit to follow the master. Each device added to the Piconet will be assigned with a specific time period to transmit the data without colliding or overlapping with the other units. Bluetooth core specification supports connection of two or more Piconets to form a scatternet by which a device of one Piconet either operating as a master or slave can simultaneously play a slave role in the other. Hence communication between more than 8 devices is made possible. The following figure depicts the concept of scatternet,

Bluetooth Communicaton

Concept of Scatternet

Bluetooth Classification

Number of Bluetooth versions is developed to meet the specific requirements of the time with the update of fixing the previous version errors. All the updated versions of Bluetooth support backward compatibility. The following table describes the different versions of Bluetooth available 

Bluetooth Versions

Bluetooth Classifications

Why there is so much hype on BLE?

Bluetooth Classic has faced critical challenges such as fast battery draining and frequent loss of connection which requires frequent pairing. BLE has ability to overcome these challenges and this is the reason why it has become popular in this decade. BLE is more intelligent in managing connections while preserving the battery power. BLE rather maintaining constant bit streams of information sends small chunks of data when required and goes to sleep during the idle periods. Bluetooth/BLE Low Energy comes under the Personal Area Network (PAN) type of connectivity. An IoT device that supports Bluetooth/BLE connectivity can use smart phones as a gateway to the internet. At present, most of the smart phones being launched are Bluetooth Smart Ready, i.e. devices that can communicate with both Bluetooth classic and Bluetooth Low Energy devices. Since smart phones have become the norm, most of the IoT device developments especially in healthcare, home automation segments take place centered around BLE connectivity. IoT devices that supports BLE connectivity tends to be a Bluetooth Smart device that can connect only with the Smart ready devices. Bluetooth smart devices such as smart watches, car key fobs, heart rate monitor are stand-alone, small batter operated that mainly focus on the power consumption as low as possible. With the understanding of the Bluetooth technology and its classifications, we will discuss in detail about the design considerations for developing IoT devices with Bluetooth Low Energy connectivity.

About Embien

Embien Technologies is a leading provider of embedded design services for the Semi-conductor, Industrial, Consumer and Health Care segments. Embien has successfully executed many projects like based on IoT such as healthcare Wearables, Gateways, and Data Analytics etc. Embien also offers a set of wearable design collections complete with electronics, firmware and Cloud that can be used to shorten product development costs and time significantly.

Our earlier blogs on DMD discussed the Dot Matrix Display internals and interfacing techniques. In this blog, we will focus on the developing display firmware for a DMD panel.

Driving DMDs

As we have seen, the DMD panel comprises of a matrix of LEDs. Each LED needs one bit of information to store its state. So effectively the DMD data to be displayed can be represented as a consecutive memory. Of the many mechanism available, a simple array will be the easiest representation. Thus to represent pixels in a 16×32 DMD panel, the following ‘C’ statement can be used.

Unsigned char buffer_data [16][4];

Since each byte has 8 bits, we are representing a 32 pixel row with 4 bytes. Now that the memory for display data is allocated, we need to transfer the same to the DMD panel. There are many ways to achieve the same like using simple bit banging mechanism or dedicated peripherals – if available. As seen earlier, using the SPI is the simplest and easiest method. Since most of the microcontrollers, even very low end MCUs, has SPI master port available, this solution is applicable across platforms.

By design, the data pushed in to the DMD panel is displayed only in every fourth row that too in certain order. It is necessary to select the line set based on the Demultiplexer input. For a 16×32 DMD panel, we will have to drive Demux inputs in four possible combinations – 00, 01, 10 and 11.

16X32 DMD panel

Demux inputs – possible combinations

Since only one fourth of the data is going to be displayed at any given time in the DMD, it is essential that the display is refreshed fast enough for the human eye to detect the difference. Assuming a minimum of 20 frames per second, we need to drive it four times more speed for each line set. So for 16×32 lines, we need to drive the SPI at atleast a frequency of 16x32x20 i.e. around 10 KHz. Apart of this, we need to switch the Demux pins once every 16×8 pixels i.e. around 12.8 ms.

One way of achieving this is using a timer in combination with SPI. Typical steps involved in using SPI for driving DMD is given below

  • Initialize the Pins and Port functionality enabling SPI operation for DS/OE pins and GPIO output for Latch pin and Demux pins.
  • Initialize the SPI controller at least 20 times the number of pixels.
  • Initialize a variable to indicate the current line set.
  • Use a timer or task to perform the following operations once, every quarter of the total transfer time.
    • Switch the Demux pin to point to the current line set
    • Configure the SPI controller to transfer the current set of line data (each separated by one fourth of the buffer size).
    • Increment the line set pointer to point to the next set. Fall back to 0 after 3.
    • Wait for the SPI transfer to complete before starting the next cycle.

With the above mechanism it is possible to seamlessly display the data in DMD with SPI controller.

Buffer Manipulation

But major discrepancy is not covered in the above description. As mentioned earlier, the data shifted in to the DMD is displayed in a certain manner typically as depicted below.

It is possible to store the data in the above format. Or for ease of manipulation, we can go for a double buffer approach. One buffer (buffer_data) will hold data in a format easy to manipulate and another buffer (back_buffer) in a format shifted in to the DMD. A simple routing can be used to copy data from the first buffer to the next, typically as follow.

The memory allocation for back_buffer is represented as,

Unsigned char back_buffer [4][16];

//for four bytes of data

for(index = 0;index < 4; index ++)

{

pos = 0;

//when single DMD panel (16×32) NUM_PANELS is one and so on.

for(col = 0; col < 4 * NUM_PANELS; col ++)

{

offset = 15 – index;

//four different set of rows given in Demux table

for(row = 0; row < 4; row ++)

{

back_buffer[index][pos]  = ~buffer_data[offset][col];

offset = offset – 4;

pos ++;

}

}

}

Thus with the above double buffering scheme the complexities of shifting is abstracted and user can simply manipulate the buffer directly. For example to draw a simple pattern of ‘T’ in the first 8×8 pixels, following statement can be used:

Buffer_data [0][0] = 0x1F;

Buffer_data [1][0] = 0x04;

Buffer_data [2][0] = 0x04;

Buffer_data [3][0] = 0x04;

Buffer_data [4][0] = 0x04;

Buffer_data [5][0] = 0x04;

Buffer_data [6][0] = 0x04;

Upon calling the transfer routine, this information is transferred suitably to back_buffer. The timer/task will feed this data to DMD via SPI effectively displaying the ‘T’ symbol.

With an understanding of software control of DMD, we will look into advance concepts of font rendering and scrolling in our next blog.