Bluetooth Low Energy (BLE) Shield for Arduino v2.0.0

The BLE-Shield v2.0.0 for Arduino is the enhanced version of the initial BLE-Shield v1.0.0 which is available for sale at Seeedstudio’s Bazaar. I learned a lot from users of the first BLE-Shield how users would like to enhance it to make it easier and more flexible to use. For firmware developers which are familiar with BGScript and the CC-Debugger I added solder pins to all BLE112 pins and all Arduino Headers, so developers can add additional digital and analog I/O pins by soldering the corresponding wire as they like. I removed the switch to select between hardware serial pins 0/1 and Software Serial 2/3 by a row of headers, where you can use a simple jumper to select which pin you would like to use for serial communication.

Since the Pins 2/3 are used for hardware Interrupts there is no jumper available to use pins 2 and 3 as Software Serial pins. Instead, the interrupts can be used as interrupt from the BLE112 module indicating a connected device of the disconnect of a device. Per default the connection interrupt is set to pin2 (Int0) using a solder wire but you can easily cut the jumper with a knife and solder it to pin3 (Int1) if you like. Using the Interrupt functionality of the new Shield, you can build Arduino Sketches that will send data over BLE only if a device such as an iPhone is connected to the Shield.

Another enhancement of the BLE-Shield v2.0.0 compared to the initial version is that the reset button on the shield resets the Arduino where it is attached to and vice versa. The capacitors, resistors the LED and the level shifter are now used in a smaller SMD package.

But the biggest changes are on the firmware. In order to create the firmware for the BLE-Shield v2.0.0, I’m using Bluegiga’s SDK v1.1.1 build71 which offers the watermark feature for receiving data over the UART. I completely omitted the internal 16 byte buffer and removed the corresponding characteristics to deal with the buffer. The new BLE-Shield v2.0.0 Service provides only three characteristics.

The BLEbee Serivice UUID is:

B8E06067-62AD-41BA-9231-206AE80AB550

containing the following characteristics:

BD-Addr: 65C228DA-BAD1-4F41-B55F-3D177F4E2196

RX: F897177B-AEE8-4767-8ECC-CC694FD5FCEE

TX: BF45E40A-DE2A-4BC8-BBA0-E5D6065F1B4B

As for the BLEbee, the new RX characteristic behavior is available in BLExplr v1.0.0, where the received data is appended to a buffer which is shown as raw hex data or converted to an UTF8 String by the iPhone App. There are some open questions I need to answer such as if it makes sense to have pin 12/13 configurable as RX/TX pins, or if I need to change the solder points at the BLE112 module and the Arduino headers to through hole solder points, but more ore less what you can see on this page, that’s what I think will be the next generation BLE-Shield with Bluegiga’s BLE112 module. One might ask why not the BLE113? Well compared to the BLE112 it is more expensive and not yet available on high volumes. I think space does not matter on the Arduino Shield, so the idea is still to have an easy to use board without need to add additional libraries to make the code size even bigger.

Please let me know what you think. You can use the comment function on the blog or better write a post in the forum where I have already setup a corresponding board to dscuss.

Thanks for reading,

Michael.