Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - tolson

Pages: [1] 2 3
Interesting Uses & Applications / SFM Color Sensor - BH1745
« on: April 18, 2017, 05:31:30 PM »
My attempt to interface the BH1745 Color Sensor to Simblee. I originally made the shield to interface to RFduino. But thought it would be more interesting to use it in conjunction with Simblee For Mobile. My intent was to display on the smart device the color detected by the remote Simblee based color sensor.

While the UI part of this project works, I don't quite understand the algorithm needed to get a perfect representation of the color at the extremes like black and white. And that affects the in between results. I am having issues with blues and greens.

My starting sample code is here. It needs work. But here is if you want to hack at it.

Simblee For Mobile / Accessing Smart Phone sensors with SFM needed.
« on: March 13, 2017, 05:06:15 PM »
Any brainiacs out there that can figure a way to write a library that can access smart device sensors from Simblee For Mobile (SFM).

I have several Simblee For Mobile applications that require the location of the smart phone connected to the Simblee via SFM. It's a shame that we would have to attach a GPS chip to the Simblee chip so that our smart phone knows where it is, when smart phones already have these services.

Bugs / required SimbleeForMobile configuration
« on: October 26, 2016, 12:30:05 AM »
Has anybody gotten this ALERT popup when using SimbleeForMobile?
If so, under what conditions?

Interesting Uses & Applications / Simblee to NFC Adaptor
« on: September 26, 2016, 05:01:00 PM »
I needed a NFC (ISO 15693) to BLE converter. I started out using a ST Micro NFC chip CR95HF. But I didn't have appropriate lab equipment to match an NFC antenna adaquately. So, I found that Solutions Cube had a reasonably priced and very small NFC module (BM019) that used the same chip. So as typical with my projects, I adapted to it.
My board incude the Simblee SOC, USB LiPO charger(100mA), and CP2102N USB to Serial for programming/debugging the Simblee. When connected to USB, the Battery is isolated from the load so as not to confuse the charger circuitry.

This makes for a fun combination to experiment with Simble For Mobile and Simble For Cloud applications.

Videos/Guides/Tutorials / Documentation - Simblee Concepts
« on: September 20, 2016, 10:01:22 AM »
Sparkfun has a pretty good description of Simblee Concepts...

Here is my test socket I use to program the Simblee RFD77101 LGA module.
I just hold the part down into the cavity with my finger for the few seconds it takes to upload the sketches.
I'm looking for miniature clothespin for clamping.

For RFduino RFD22301 Test Socket see...

Videos/Guides/Tutorials / Simblee For Mobile - BLE MIDI (SFMmidi)
« on: April 20, 2016, 06:43:19 PM »
Using the Simblee LGA package (RFD77101) I am able to build a MIDI OUT to BLE in a DIN plug.  Using Simblee For Mobile I can receive standard MIDI note with velocity packets from the DIN MIDI OUT jack, process the packets, and display their activity on a Smart Device.

<a href="" target="_blank" class="new_win"></a>

More information as it the project develops at

If you don't mind including an all encompassing complicated pixel library in your memory map just to drive a neopixel string or ring, give FastLED 3.1 a go. For me it works pretty good on Simblee and RFduino with the latest Arduino IDEs...1.6.7, 1.6.8.

It even seems to work pretty good while the Simblee or RFduino Radio is turned on. That's nice!

Here is a sketch I modified to compile with the Radio turned on. You can compile for RFduino or Simblee.

Code: [Select]
// Fire2012Simblee using FastLED 3.1 and Fire2012
// Modified by Thomas Olson
// teo20151222.01 Testing if conflicts with Simblee Radio on
// Modified for compiling on Simblee and RFduino - IDE 1.6.7
// teo20160328.01 verified works with Arduino IDE 1.6.8

#if defined(RFDUINO)
 #include <RFduinoBLE.h>
 #define RFD RFduinoBLE
#elif defined(SIMBLEE)
 #include <SimbleeBLE.h>
 #define RFD SimbleeBLE

#include <FastLED.h>

#define LED_PIN     6
#define CHIPSET     WS2811
#define NUM_LEDS    24

#define BRIGHTNESS  200

bool gReverseDirection = false;


void setup() {
  delay(3000); // sanity delay
  FastLED.addLeds<CHIPSET, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection( TypicalLEDStrip );
  FastLED.setBrightness( BRIGHTNESS );


void loop()
  // Add entropy to random number generator; we use a lot of it.
  // random16_add_entropy( random());

  Fire2012(); // run simulation frame; // display this frame
  FastLED.delay(1000 / FRAMES_PER_SECOND);

// Fire2012 by Mark Kriegsman, July 2012
// as part of "Five Elements" shown here:
// This basic one-dimensional 'fire' simulation works roughly as follows:
// There's a underlying array of 'heat' cells, that model the temperature
// at each point along the line.  Every cycle through the simulation,
// four steps are performed:
//  1) All cells cool down a little bit, losing heat to the air
//  2) The heat from each cell drifts 'up' and diffuses a little
//  3) Sometimes randomly new 'sparks' of heat are added at the bottom
//  4) The heat from each cell is rendered as a color into the leds array
//     The heat-to-color mapping uses a black-body radiation approximation.
// Temperature is in arbitrary units from 0 (cold black) to 255 (white hot).
// This simulation scales it self a bit depending on NUM_LEDS; it should look
// "OK" on anywhere from 20 to 100 LEDs without too much tweaking.
// I recommend running this simulation at anywhere from 30-100 frames per second,
// meaning an interframe delay of about 10-35 milliseconds.
// Looks best on a high-density LED setup (60+ pixels/meter).
// There are two main parameters you can play with to control the look and
// feel of your fire: COOLING (used in step 1 above), and SPARKING (used
// in step 3 above).
// COOLING: How much does the air cool as it rises?
// Less cooling = taller flames.  More cooling = shorter flames.
// Default 50, suggested range 20-100
#define COOLING  55

// SPARKING: What chance (out of 255) is there that a new spark will be lit?
// Higher chance = more roaring fire.  Lower chance = more flickery fire.
// Default 120, suggested range 50-200.
#define SPARKING 120

void Fire2012()
// Array of temperature readings at each simulation cell
  static byte heat[NUM_LEDS];

  // Step 1.  Cool down every cell a little
    for( int i = 0; i < NUM_LEDS; i++) {
      heat[i] = qsub8( heat[i],  random8(0, ((COOLING * 10) / NUM_LEDS) + 2));
    // Step 2.  Heat from each cell drifts 'up' and diffuses a little
    for( int k= NUM_LEDS - 1; k >= 2; k--) {
      heat[k] = (heat[k - 1] + heat[k - 2] + heat[k - 2] ) / 3;
    // Step 3.  Randomly ignite new 'sparks' of heat near the bottom
    if( random8() < SPARKING ) {
      int y = random8(7);
      heat[y] = qadd8( heat[y], random8(160,255) );

    // Step 4.  Map from heat cells to LED colors
    for( int j = 0; j < NUM_LEDS; j++) {
      CRGB color = HeatColor( heat[j]);
      int pixelnumber;
      if( gReverseDirection ) {
        pixelnumber = (NUM_LEDS-1) - j;
      } else {
        pixelnumber = j;
      leds[pixelnumber] = color;

Simblee For Mobile / Simblee For Mobile - KeyPAD example
« on: March 22, 2016, 07:25:52 PM »
Here is code example using Simblee for Mobile to generate a KeyPAD App.

This demo of the Simblee for Mobile feature sends the UI and graphics to the mobile device via BLE. Then the Simblee sends the CPU temperature via BLE to the mobile device to be displayed on the dial gage. When the switch is toggled the Simblee is instructed to cycle through fake temperatures to see how the gage responds.

<a href="" target="_blank" class="new_win"></a>

Example Code to do this is at

iOS / iOS & Android ColorWheel Demo using Evothings
« on: December 10, 2015, 09:42:44 PM »
This is an example of using Evothings / Cordova to make a generic App that runs on both iOS and Android.
This demo uses the standard RFduino Colorwheel sketch from the examples folder. It should work with any sketch based on the RGB intensities on the first three bytes of the payload.

The first half of the video is using a iPod Touch. The second half is using a Android Nexus 7 (2013).

<a href="" target="_blank" class="new_win"></a>

Finally figured out how to get Invensense MPU TeaPot Quaternion packet displayed on Android and iOS using EVOthings, HTML5, and javascript libraries.  No need for Processing over Serial port anymore. Hope to do similar with Simblee. The javascript library phoria.js, a 3D graphics engine, by Kevin Roast was helpful .

<a href="" target="_blank" class="new_win"></a>

Now with EVOthings client I am able to get Temperature, Humidity, and Barometric pressure displayed on my Android device AND my neighbors iPhone with little effort with the same APP. Too Cool! Just install EVOthings Client from the respective app store and then fill in the "Connect with Address" box with my URL. Voila. I'm using the Si7021 Humidity Sensor and BMP 180 Barometric Pressure Sensors. The RFDweather Shield plugs into the standard RFduino Shield system. The smaller RFDWeatherWear Station includes the RFD22301 SMD module and  runs off a CR1220 battery. Well, that was the plan. I need to work more on the ultra low power modes of the sensors. CR1220 works pretty well in "beacon only" mode for well over 2 months. But with extra sensors, care must be given to make sure they are turned off deeply. Here is what they look like.

In this demonstration I am packing three floating point numbers into the BLE packet and displaying them with gauges on the Smart Device. That only uses 12 bytes. I am sending a forth empty floating point number and that is why you see the packet length is 16. I am reserving that for the battery voltage. With a maximum payload of 20 bytes this leaves 4 bytes that could be used for sensor status flags and / or feedback buttons, etc.

Here is the video.

<a href="" target="_blank" class="new_win"></a>

Videos/Guides/Tutorials / Hand Soldering RFD22301 to custom board
« on: March 18, 2015, 07:24:04 PM »
Here is a little video I put together on how to hand solder the RFDuino SMD RFD22301 to your own custom board.

<a href="" target="_blank" class="new_win"></a>

Pages: [1] 2 3