RedBearLab

BLE Shield

BLE.Shield.v2.1.png

Description

BLE Shield stands for Bluetooth Low Energy (BLE) Shield. It is designed to work with Arduino boards or compatibles, including Arduino Uno, Mega 2560, Leonardo and Due. It allows you to connect your Arduino boards with other BLE Central device like a smartphone or tablet. So you can develop some applications like:

  • Control your Arduino pins with our/your own mobile App
  • Send sensor data from your Arduino to an App for processing
  • Use your mobile device as an internet gateway for your Arduino
  • and much more!

BLE shield could operate under 3.3V or 5V, therefore it works with a lot of Arduino compatible boards too.


Supported BLE Central Devices

iOS 7 or 8

  • iPhone 4s
  • iPhone 5/6 (all models)
  • iPod touch 5
  • iPad 3/4/mini/Air

Android 4.3 or above (4.4 recommended for stability) with Bluetooth 4.0 hardware support

Windows 8.1 with built-in Bluetooth 4.0 or USB dongle

Mac OSX 10.9.2 with built-in Bluetooth 4.0 or USB dongle

Linux with BlueZ 5.1 with built-in Bluetooth 4.0 or USB dongle


New Features in BLE Shield Version 2.1

  1. Reset button is changed to "side button"
  2. nRF8001 SPI pins can be set to either Pins 11-13 on the side or ICSP, this allows other Arduino compatible boards with no ICSP header such as FRDM-KL05 board, RedBoard and so on to interface with the nRF8001 BLE chip
  3. Flexible REQN and RDYN pins selectable from pin 2 to 10
  4. The board is shorter than before and this allows it to fit on Arduino Yun physically

Features Since v2.0

  1. Besides the on-board PCB antenna, option to use SMA connector for external antenna (soldering is required)
  2. Flexible REQN and RDYN pins selectable from pin 2 to 12, these pins are fixed at 8 & 9 for BLE Shield v1
  3. Reset button also resets the Arduino board, and vice versa
  4. ICSP header provides Vcc (for other shields to get power source)
  5. ICSP header now passes through (for other shields to connect to the SPI)
  6. Shield's reset is controllable by Arduino pin 4 or 7
  7. Reset signal to the shield is now active low (i.e. pull low to reset the shield)
  8. Added test points for power consumption measurement of the nRF8001 chip (soldering is required)
  9. Added circuitry and test pin (J9 NC) for measurement of instant working current (using logic analyzer, 1mA = 100mV).

Getting Started Guide

We recommend using Codebender, an online development and collaboration platform for all Arduino users, please read to our Quick Start with Codebender to start playing with your BLE Shield in just a few easy steps.

We have also prepared a detail guide Getting Started with BLE Shield to show you how to program your BLE Shield using Arduino IDE.


How It Works

  • BLE Shield communicates with Arduino through the ACI (Application Controller Interface). The ACI is similar to SPI but does not actually work as SPI. SPI is consist of MOSI, MISO, SCK and SS, whereas ACI is consist of MOSI, MISO, SCK, REQN and RDYN.
  • Since BLE Shield may receive data anytime even not selected by SPI master (Arduino), so the SS line is not needed.
  • In ACI,data exchanged still through MOSI and MISO, and SCK provides the clock generated by master.
  • When master wants to request data from BLE Shield, it puts the REQN to low until RDYN line is put to low by BLE Shield, and then master generates the clock to read out the data. After reading out the data, master will release the REQN and BLE Shield release the RDYN, put them to high.
  • If BLE Shield has data to transmit to master, it will put the RDYN to low to indicate master, even though master havn't requested data and REQN is idle. If master detectes a low level condition on RDYN, it will put REQN to low and generate the clock to read out the data.After reading out the data, both REQN and RDYN will be put to high.Note that REQN is controlled by master while RDYN is controlled by BLE Shield.

Technical Details

Nordic nRF8001 Bluetooth Low Energy IC

  • Support Peripheral (Slave) role operation only – nRF8001 IC limitation.
  • Proprietary simple serial interface – Application Controller Interface (ACI).
  • Please refer to Nordic’s nRF8001 Product Specification for more details.


Application Controller Interface (ACI)

  • The ACI enables an application controller to communicate with nRF8001.
  • The physical ACI interface on nRF8001 consists of five pins. All ACI data and exchanges use a standard SPI interface, with nRF8001 using a mode 0 slave interface to the application controller.
  • However, nRF8001 does not behave as a pure SPI slave device; nRF8001 can receive new data over-the-air at any time or be busy processing a connection event or new data. Consequently, the traditional CSN signal used to initiate an SPI transaction is replaced by two active low hand-shake signal; RDYN and REQN.


Signal Arduino nRF8001 Description
MISO Input Output SPI: Master In Slave Out
MOSI Output Input SPI: Master Out Slave In
SCK Output Input SPI: Serial data Clock
REQN Output Input Application controller to nRF8001 handshake signal
RDYN Input Output nRF8001 to application controller handshake signal

Shield Layout

alt text

A. nRF8001 & Arduino board Reset Button
B. Factory Testing Pins
C. Power On LED
D. Flexible REQN and RDYN pins from pin 2 to 10
E. External Antenna
F. Onboard Antenna
G. Nordic nRF8001
H. Optional Pin to Control the Shield’s reset
I. Power Consumption Measurement of the nRF8001 chip
J. Power Monitor on Oscilloscope
K. SPI interface connection for nRF8001


Pins Availability

Since we have to enable SPI interface for ACI communication, some I/O pins will not be available for other usage. On Arduino Uno, the SPI bus uses pins 10 (SS), 11 (MOSI), 12 (MISO), and 13 (SCK). On the Arduino Mega, they are 50 (MISO), 51 (MOSI), 52 (SCK), and 53 (SS). For Leonardo, the SPI pins are not connected to any of the digital I/O pins as they are on the Uno and Mega, they are only available on the ICSP connector. Our BLE Shield is designed to utilize the SPI pins on the ICSP Header, therefore it is compatible with all three Arduino models.

Moreover Nordic’s ACI requires two hand-shake signals, RDYN and REQN, two additional pins will be used (pins 8 & 9 in the default settings).


Arduino Model Pins Available Pins Not Available
Uno 0 – 9 (except pins that REQN and RDYN occupied),
A0 – A5
REQN, RDYN, 10 – 13 (6 in total)
Mega 0 – 49 (except pins that REQN and RDYN occupied),
A0 – A15
REQN, RDYN, 50 – 53 (6 in total)
Leonardo 0 – 13 (except pins that REQN and RDYN occupied),
A0 – A5
REQN, RDYN

Resources

BLE Shield Respository - Provides BLE Shield resources such as schematics.

Nordic Bluetooth Smart SDK for Arduino - Provides a lot of BLE tutorials and examples for BLE beginners to work with the BLE Shield, supported by Nordic.

RedBearLab nRF8001 library - Provides simple APIs for exchanging data between BLE central and the BLE Shield


Support

For questions about Nordic Bluetooth low energy SDK for Arduino,
please visit Nordic Developer Zone

All other questions regarding BLE Shield, please go to BLE Shield Forum


Frequently Asked Questions

Q1: What is Bluetooth dual mode? Is the BLE Shield a dual mode device?
A1: Dual mode devices (e.g. iPhone 4S/5) are compatible with both Bluetooth Classic and Bluetooth Low Energy (BLE) devices. BLE Shield is a single mode device only, so it is not compatible with the classic mode Bluetooth.

Q2: What is BLE Central role? Can the BLE Shield work in Central role?
A2: Central role devices (e.g. iPhone 4S/5) can work as a master in the BLE star network, they can perform scanning and connect to peripheral devices. The BLE Shield can work as peripheral role only, i.e. it can only be connected from other central rol devices.

Q3: Can I get RSSI from the BLE Shield?
A3: The nRF8001 does not provide any function call to get RSSI, so this is not possible. You can get RSSI from the BLE Central side, e.g. iPhone 5.

Q4: Can I change the name (BLE Shield) to others?
A4: You can use the API - "ble_set_name(name)" to do that. See examples.

Q5: Can I change the 128-bit UUID with my own one?
A5: You need to use Nordic's nRFgo Studio and open the BLEShield.xml to edit the settings, it will generate some C source files using the .bat file. You can also set the connection interval, advertising data, etc.

Q6: Can two BLE Shields talk to each other?
A6: Since the BLE Shield cannot run in Central role, so this is not possible.