Capacitive Sensing + Open Frameworks + SPACEBREW

17K1655

Intro: Capacitive Sensing + Open Frameworks + SPACEBREW

See our set up in action!!!!

Crystalline Highlands from Lucy Matchett on Vimeo.

This is a step-by-step on how to connect Arduino to OpenFrameworks using Spacebrew.

More specifically our project focuses on the awesomeness of Capacitive Sensing to alter OF projections to create an awesome tactile experience!

What the process will involve:

Arduino -> Processing -> SpaceBrew -> OpenFrameworks

What you will need:

Software:

Arduino

Processing

OpenFrameworks

Capsense Library for Arduino

SpaceBrew Library for Processing

SpaceBrew Library for OF 12

Hardware:

Arduino

Anything conductive you want to detect capacitance with!

Resistors

STEP 1: Capsense With the Arduino

First you will want to set up your Cap Sense circuit.
You can create as many inputs as there are digital pins (If you wish to have more you will have to implement a multiplexer TUTORIAL LINK ).

The Cap Sense library allows you to turn two of the Arduino's pins into a Capacitive Sensor i.e. Sensors that can detect the electrical capacitance of the human body!

This allows us to create interesting touch sensors to send input to the Arduino.

Setting up the circuit:

  1. The first diagram shows the general set up of circuit with one input. You will want to connect the resistor between two pins, here we have done it between 2 & 3.
  2. Then connect which ever conductive material you wish to be your sensor to the resistor on the pin 3 side.
  3. We are keeping pin 2 as our common send pin which will be used for all our sensors.
  4. Then set up all other sensors in the same way except all having one connection to pin two and then the next free digital pin (See diagram 2)

*** It can be good to just test if it is working by having an exposed wire as your sensor!

THE CODE

Download the CapSense library here
After you have downloaded the library copy the folder into your Arduino library folder.

You can download our code here
(ALL code is commented)




STEP 2: Our Capacitive Sensors!

You can detect capacitance with anything conductive!

We wanted to create something tactile, interesting and weird for the user to touch so we implemented some crafting techniques! We made Soft Circuit Pom Poms.

Soft Circuit Pom Pom Materials:

1. Twine

2. Conductive thread

** by distributing the conductive thread with regular threads and resistant materials it creates greater connections when you grab the ball or run your hand through it. IE. allowing more electricity to connect to the sensor, giving a greater value output.

MoonScape

1. Chicken wire

2. Plaster of paris

** the plaster of paris created a small barrier of resistance between the wire and the hand, meaning that values wouldn't be picked up until you ran your hand over the object.

STEP 3: Arduino to Processing

In order to use the Arduino with SpaceBrew we must first connect the Arduino to Processing in order to be able to send our data via SpaceBrew.

We will do this by using the serial function!

You can download our code here!

STEP 4: Connecting Processing to SpaceBrew

Next we will need to add the code to processing so we can send our Arduino data to the SpaceBrew Server via Processing!

We are creating a sketch that is a publisher only i.e. it only sends data.

Here is the code from the previous step + the spaceBrew code

Before you get started make sure you have downloaded the SpaceBrew Lib and copied it to your processing Library's folder!!!

Whilst we have provided the code for how to connect this to Spacebrew refer to the images for a brief description for what each of the functions do!

STEP 5: OpenFrameworks Via SpaceBrew

We are setting up OF to purely be a SpaceBrew subscriber sketch, therefore it will only be receiving data from Spacebrew.

First make sure you have installed the libraries

Which can be found here and here.

After you have downloaded both add then to your oF addon folder, then go into the ofxlibwebsockets > libs > libwebsockets / include / win32port and delete this file!*****

You can download our code here. We've left the name of our video file in place, but you should replace them with your own video file. Put your .mov or .mp4 file in the data file in your oF folder so the compiler can find it. You could also put a still image behind. 

Here's a copy of a more complex version of the code that uses binding, attractors, and state changes:  Make sure you load your own video into the data file. 

Also refer to the images for a brief break down of what each of the functions do and syntax when creating subscribers in OF.

STEP 6: HAVE AN AWESOME RESPONSIVE SKETCH

Snaxxx n' Macs Out & Toodle pip!

5 Comments

This seems unnecessary, why not just use firmata and openframeworks? the processing and spacebrew seem like an extraneous step in the process. If your worried about being able to use the libraries then just send serial messages or if you need to communicate over a network there is already tcp inside openframeworks. I like the project though.

I can see why these steps may seem unnecessary, but there are a few reasons as to why we set this up the way we did.

Firstly firmata is a great library, however it does not allow the use of the Capsense library in conjunction with it, which is what a huge part of our project required! As you mentioned we could have just connected the Arduino to OF using the serial, you are correct!

However connecting this way can sometimes be problematic and unreliable and would require a lot of tinkering with the code etc... SpaceBrew provided us with ease of use, flexibility and ultimately gave us more time to spend on actual aesthetics rather than smaller technical details.

However this isn't the only component to this project, we have other sensors and web inputs that change other projections (Which are not included in this tutorial, look out for future instructables on that!), so for us it made sense to make multiple nodes that we could connect via SpaceBrew!

Ultimately SpaceBrew was implemented as it is easier/quicker to setup than your suggestions and provides a more flexible platform so we can easily remove/ change inputs and their values!

As for using Processing that is how we connected the arduino to SpaceBrew, ultimately it is easier to connect an Arduino to Processing in order to send our data (they are made for each other <3)

yeah - I want a video. Prove it!