Setting up the BLE Mini from Red Bear Lab

I picked up four of these bluetooth low energy (BLE) modules with the intention of setting up three wireless sensors and a receiver. After a long struggle I managed to get some basic functionality going and would like to document that to hopefully save some time for anyone else trying them out.

Main components:

  1. BLE Mini
  2. Arduino Pro Mini 3.3v
  3. Analog Sensors

Other:

Bluetooth 4.0 compatible device. Here are some of the devices that support this:

  • Android
    • Nexus 4
    • Nexus 7
    • Samsung Note 3
  • iOS
    • iPhone 5 (all models)
    • iPhone 4S
    • iPad Air
    • iPad (3rd gen or later)
    • iPad mini (all models)
    • iPod touch (5th gen or later)

RedBearLab outlines some basic instructions on how to set the BLE mini up with iOS and Android here. With that said the instructions really need to be expanded further. Here is a breakdown of the iOS path:

Connect pins from BLE Mini “J4” to Arduino board
VIN > 5V
GND > GND
TX > Default RX (Pin 0)
RX > Default TX (Pin 1)

The Green LED at D1 should light up, otherwise please check the Troubleshooting section below.

Notes: VIN doesn’t need to be five volts, 3.3 volts will work just fine. For me, the LED did not light up on one device. I was able to fix that by uploading the latest firmware to it with the instructions a little further down.

Download our latest RedBearLab Library.

Notes: The ZIP file provided is the latest but if you want to dig through the source and be a bit more selective with the download here is the RBL GitHub page.

Although the device firmware was changed quite a few months ago a much older version appears to come with all the modules I purchased. Make sure you grab the latest from here and follow these instructions carefully 

Unzip the file and copy the “RBL_BLEMini” subfolder in BLEMini/Arduino/libraries to Arduino’s libraries folder.
For more information about Arduino’s libraries folder, please visit http://arduino.cc/en/Guide/Libraries.

Open our BleFirmata sketch: “File” > “Examples” > “RBL_BLEMini” > “BLEFirmataSketch”.

Compile and upload the program to your Arduino board.

Notes: Big note: use Arduino 1.0.5 and not the 1.5 nightlies, else BLEFirmata doesn’t compile.  Although this setup is fairly common, we will get to some problems with BLEFirmata a little bit later.

Download our BLE Arduino App from Apple’s iTunes Store.

Turn on Bluetooth on your iOS device. (*Please note that BLE Mini or any Bluetooth Low Energy device will not show in the “Devices” list as pairing to BLE device is not required)

Start our BLE Arduino App and press “Connect”.

Note: The main issue here is that you only get three board so chose from when you connect via the iOS app. This is pretty backwards and I don’t have any decent solutions. While testing the A(n) pins tend to be the same across boards, I used UNO and LEONARDO modes to test the minis. The only issue is that the UNO setting is the only one that shows the ‘analog’ option for the A(n) pins, which lets you see the analog signal live in the app. When set to ‘input’ on the LEONARDO setting no data is ever displayed on the iOS app.

Once that’s done you can puppeteer your Arduino of choice via the BLE App.

Some notes on BLEFirmata: Currently only UNO, MEGA and LEONARDO are officially supported. You can get something like the pro mini to work but you can run into issues with mismatched I/O and software serial. I wish I had a fix for this right now but I don’t even know where to begin.

RBL released a library for using one BLE Mini as a master and connecting slave devices to it. Unfortunately any version of the HCI library they provide that I try to upload to the boards ends up turning off the green status LED immediately. I am checking with support about this issue now.

Overall the impressive part of this module is the stability once it’s connected. I have been using a retina iPad to test the app, and once connected I haven’t had any kind of signal loss. Hopefully this stability can be translated into more custom projects.

Resources:

This thread provided some very good insight.

Although light on content the RBL zendesk support is worth a further examination.

A good project on instructables.com

Wraithguard

20131201_195026_HDR

or what was supposed to be Wraithguard

This is my final project for the wearable technology class this semester. I really wanted to focus on something more frivolous than some of the other projects I made in the past three years. Thus the concept ended up being rooted in media that I enjoy.

At first I really wanted to create a version of Wraithguard from Morrowind. I am still struggling to finish up a post about Morrowind which would explain my desire to bother with this. After looking over the possibilities for duplicating or mimicking this design I came to the conclusion that there wasn’t a plausible way for me to make it look pleasing. Adjusting my influences I looked at some other fan projects I could undertake.

Once I tinkered a bit things starting to look very much like a Cyberpunk garment. I realized that this could be an object not built by professionals or for mass production but rather in an environment where people would scramble to create something out of the junk they had lying around. A tool that would be wasteful, suboptimal, dangerous to use but one that would complete the required task.

Here is the initial glove work:

Beyond aesthetics I wanted to tackle the technical challenge of running a large amount of EL material in a purely wearable project (aka no cord to the wall.) Here began some heavier challenges, at first I didn’t think a 12v inverter would be a good idea. So I decided to pick up some 2AA volt battery + inverter packs. After hooking one up to the wire I noticed that it was horribly dim. Realizing that the inverter is taking in 3 volts I decided to test it with a 3.7 volt lipo battery. That didn’t go over well, the inverter lit the wire for a second then promptly burned up.

After some testing I decided to just go for as much voltage as I could muster, hoping to counteract the inevitable bulkiness by driving more EL material and having a more stunning final effect.

I picked up two 7.4 volt LiPo batteries, hooked them up together and powered a Leonardo with an EL Escudo Duo shield. This let me run an EL panel, tape and wire at a much brighter than even a 12 volt wall power supply did during testing.

I was really happy with just how bright the EL materials got, but had a new issue to deal with. This was getting quite heavy quite fast, the solution was to separate all the circuitry from the hand and move it to the upper arm. I crated a sturdy cord, wrapped it a few times in leftover EL wire and the outcome didn’t look too bad. All the components were strapped to a very wide Velcro strap:

Once all that came together I wanted to add some interactivity. Going back to my inspirations I realized that the constantly on EL materials made it look very clean and too functional. To randomize and add believable electrical flicker I attached a 3 axis accelerometer to the hand. This gave me three distinct movement values to work with in my code. I used them to adjust the pattern and delay between flickers of each individual piece of EL.

Accelerometer WIP:

And here are some shots of the final result:

Also Kate and Michael wearing it at the critique today:

Overall I am very happy with the outcome, it isn’t the Wraithguard I hoped for but I think that it has a really cool effect to it. I am also attaching the short three slide PDF I used to present this earlier. [Wearables 1 2013 Final]

Technical Details

The code is available in this gist. I tried to make it readable, most of it was done by slightly adjusting the values. These few lines comprise the the chunk that ended up controlling flicker timings.

While this dealt with some randomization of the sensor data.

The circuit itself was fairly basic. The accelerometer is connected straight to the Arduino pins via a cable, and the only other modification was adding a connector for the batteries that also contained a switch to turn everything on and off.