Sunday, October 16, 2011

Artwork: Sonar Glove - Interactive Clothing - 2007

Sonar Glove
Interactive clothing
Glove, Wires, Microcontroller, Flash

Collaboration: Michael Ries, Hayley Silverman, Jennifer Beser

The human experience is dictated by the physical construction of our bodies. Most of us are highly dependent on the sense of sight to take in information and navigate world. Our culture has become highly dependent on this sense to the exclusion of our other senses. We spend more and more time in front of computers and televisions, it may be possible that we are becoming numb to the information (perception) from our other senses, and even forgetting how to use them. For people who people who have been able to see their whole lives, this dependency causes us to neglect our other senses such as sound, taste, smell, and touch.

Sonar Glove explores the way we experience our environment, specifically by supplanting the participant’s sense of sight, and offering the opportunity to replace it with a different sense based sound. It presents the information in a novel way that our culture doesn’t actively explore. The artwork will allow participants to discover new ways of perceiving the world around them.

Saturday, October 15, 2011

Artwork: Audible Tactile - Seoul, South Korea, 2006

Audible Tactile
Interactive Object and Sound Installation

Part of the “Jet Lag: Traveling Exhibition”
Exhibited at Ssamzie Space, Seoul, South Korea 

Audible Tactile consists of five found objects placed on shelves for the audience to pick up and touch. Manipulating each item causes traditional Korean music to play, evoking past and present cultural stylizations.

Audible Tactile centers around the audience’s interaction with five objects found in Seoul that symbolize the five natural elements of Oh-Haeng: wood, fire, earth, metal, and water. As the participants approach each object, a different musical piece plays, comprised of traditional Korean flute, drums, vocal, and string instruments. Much like the affects of jetlag, the interactive sculpture creates a surreal environment of displacement in time and space. The use of modern items and traditional music evokes the juxtaposition of Seoul's history with its ultra modern features. 



Artwork: Mood - Interactive Artwork - 2007

Mood - 2007
Exhibited at the Contemporary Museum, Baltimore, MD March 15th, 2007
Collaboration with Michael Ries, Joel Bobeck and Yeohyun Ahn.

Publications : Washington Post March 17th, 2007 "Me, My Cell and I: Can You Hear Me Now?"

The mobile phone occupies a space that is both connecting and distancing. Seemingly ubiquitous, it has become an increasingly powerful tool, functioning as a phone, PDA, browser, and camera. “Mood,” is a combined Internet and spatial installation that displays the collective emotional condition of users as color hues.

It is based on the wearable “mood ring” which chemically changes color according to body temperature. The users participate by answering a survey on their cell phone specifically designed to gauge a person’s emotional level. This information is then collected, parsed, and averaged. The results are visually projected on the wall.
The colors of the projection are matched to different emotional states. The collective answers are averaged, and add to the projection's overall appearance. By allowing people to share this intimate data, the piece creates a radically new social dimension, giving individuals not only a new way of looking at their own emotional state, but also the current emotional state of their environment."



Sunday, October 2, 2011

LDP8806 and the netlogicdc sign

So far...
(updated post)

Progress with the Addressable Digital LED Strip from Adafruit is going very well. But changes to the original design and placement of the netlogicdc sign have changed the final outcome of this project for now. Whether we decide to add this to the sign or not, I'm coming up with some cool uses for the LED strip.

This post has a comparison of the old, Adafruit code using the digital Arduino pins, and the new code that uses the SPI interface. I go over the hardware I'm using, show some video comparisons, and I post links to the github code.

I initially started work with the code provided by Adafruit, and customized that to test and experiment with the strip. So far, I've got the hardware working and coded a few of my own Arduino sketches for the strip. I've begun to familiarize myself with how the strip reacts and what it's capable of. My initial prototypes used the original code provided by Adafruit - Original Adafruit code here.

Current hardware
More about the power supply
Read the disclaimer
Calculating the power requirements is beyond the scope of this post. But to help you get started, I'm using a 450W ATX power supply I salvaged from an old computer. It says it can handle 45A on the +5V terminals. This is 225W. This seems to be more than enough to power a 160LED strip at full white intensity, w/o blowing anything. 160LEDs should draw no more than 20A, so the math is right. I'll post something to show how to wire the ATX power so that it powers on without a computer. For now, see this article:

The Adafruit tutoral has some great information to get started. This works with the old code and old setup. Be sure to connect the following:

  • 5V power supply connects to the +5 on the LED strip
  • GND on the power supply connects to the GND of the Arduino board and the GND of the LDP8806 LED strip. This is very important that the Arduino, the LED strip, and the Power Supply are all grounded to the same potential. 
To keep with the the Adafruit conventions:
  • Connect a green lead from the Data pin on the LED strip, D1 to digital pin 2 on the Arduino.
  • Connect the clock pin, C1, on the LED strip, to the digital pin 3 on the Arduino. 
  • Remember these two pins on the LDP8806, clock and data. It will help later if you use cjbaar's  faster code.

So now that it's working...
Here's a video of Adafruit's original code, using the digital pins on the Arduino board. Once I had the connections and wiring correct and the LED strip is up and running, my first challenge was to make the code more efficient. The code updates each pixel, then sends a refresh to the strip to change the correct pixels. Each update iteration the strip is far too slow for production. It was taking almost 1 second per pixel (LED) to update. On a 35 pixel strip, this is over 30 seconds. On a 160 pixel strip... you get the picture. This video shows the original code's update speed.

Original Arduino Sketch Code
Get the code for this sketch on my LPD8806 repository on Github. Be sure to read the README.txt file if you want to use this old library.

Note that I randomized the update speed, so the refresh rates change. But this should still show a good idea of the possible fastest update speed with the original code.

Optimized LDP8806 code using SPI 
I did a lot of research to find ways to optimize the code. Even at 16MHz the Arduino should be capable of running this a bit faster. I found a discussion on the Adafruit Forums, RGB LED Strip Arduino Speed which links to another post by cjbaar. CJBaar shared some code in the cjbaar LDP8806 Github Repo.

The new code is significantly faster. I'm very impressed, I had no idea that the little 16Mhz Atmel chip could perform this well, after seeing how slow the original code was. I think it's actually too fast for this project. But it is far easier to make the code slower by adding delays. At least not until magic.strip(speed up my code)is implemented.

Again, note that I have randomized the update code, so that the direction and speed of refreshes vary. this is intentional.

SPI Arduino LDP8806 Code
The new Arduino sketch for the LDP8806 using SPI on Github
Next steps
The next post on this project will be the addition of and interactive aspect. I still have some experimentation to do, but basically I'll have the interactive component skew the direction or the randomization of the speed one direction or the other. It will depend on the feel of the interaction, and how well the various sensors handle it.

Credits, attribution
If you haven't been following these posts, thanks again to Adafruit for providing the LPD8806 Addressable Digital LED Strips and publishing code for these LED strips. They're way cool! And thanks to cjbaar for sharing code to use the SPI interface.
  • The original code and wiring for the Digital LED Strip was written by Adafruit, and I'll confirm, but released under an MIT or Open source license of course.
  • The optimization was coded by cjbaar.

I also updated the progress on the netlogicdc sign entry, so it now points to my github code for the interactive serial interface for the LED strip.



Saturday, October 1, 2011

Open Hardware equivalent to SourceForge

I found a KickStarter project that may interest anyone who is interested in sharing Open Hardware designs and concepts in the same spirit as Open Source Software and SourceForge:

I am publishing my own projects here on my blog to share my concepts, designs and software with everyone under the same type of licenses. (Hmmm... note to self: I should update my Terms of Use and Copyright pages to make this clear.) I think this is a great idea. I don't think this would supplant these types of blogs though. I intend this blog to keep documentation of the process I go through to arrive at decisions along the way, and to help people with questions about these types of project.

Good luck guys, here's to making your goal of creating an open hardware repository!

The video is after the break.

Thursday, September 15, 2011

Another example of BlinkM and LED accents

The sign project continues to evolve. It looks like the material of the sign will be changing and the lighting on the sign itself will be very strong, so subtle changing lights behind it may or may not be the best solution for the dynamic, high-tech feel we're going for. Since the desk area layout is also changing, there will be a more open space and more light.

I'm doing more research to get more ideas for the best design. I like the LEDs under the acrylic, and the arrays of LEDs in the cubes.

This is the LED Glass Desk. These are single-pixel, BlinkMs under frosted glass. 

Wednesday, September 14, 2011

LPD8806 and progress on the netlogicdc sign

LPD8806 Interactive code
The office build-out is coming along, and I'm continuing work on the the design to get a prototype out.

I picked up a Digital Addressable RGB LED from Adafruit. After messing around with it a few nights, I finally got it working with the test  it up with the test code, so I'm confident I can use this to create my project.

This a really cool  component. It has 32 addressable RGB LEDs per meter. Each LED can be individually addressable. The strip itself can but cut into 2 LED segments, so any length of LEDs can be addressable. The 5 meter roll has 160 LEDs.

Adafruit has published code on the Adafruit LPD8806 github repo to get you started. This is a library that you add to Arduino, which makes it very easy to send commands to the strip.

Goals for today's post
I wanted to understand better the functionality of this LED strip, so I built an interactive Arduino program so I could send individual commands to the strip. So the goals for today's post are:
  1. Create a Arduino script to allow me to - interactively via serial - enter a single LED's color and fade time. Done.
  2. Create a randomized sequence of flashing LEDs, an effect somewhat like starlight. So far I'm working on getting the randomization to fade in and out.
Interactive Serial
I built a simple serial interactive sketch for Arduino. I used the interactive code for the BlinkM LED from Todd Kurt to model an interactive serial session using the built in serial monitor on the Arduino IDE. If you are using the original Adafruit code, you'll need to add the correct library to your Arduino program folder.

Download my interactive serial sketch for the LDP8806 on github. You'll need to use my updated Adafruit library with the Arduino sketch. This is so that you can use both the older Adafruit libraries alongside the newer optimized cjbaar libraries.

Be aware that you'll need to update any sketches by finding and replacing LPD8806 with LPD8806old in any sketches to use the old code.

The biggest sketch difference is that the new code uses the specific SPI pins on the Arduino board, whereas the older Adafruit code allowed you to specify which digital pins to use.

Once the sketch is running on your Arduino UNO, open the serial monitor using the Arduino IDE. The following commands will interactively change the string LEDs:
 r - (r)eset
 c - (c)olor chase
 w - (w)heel
 i - colorW(i)pe
 s - (s)et inidividual to R, G, B, LED
 f - set (f)ade speed
This should give you a good idea of the various capabilities of the Digital LED Strip.

Randomized Sequence
Based on the results of the interactive program, I built the following sketch, strand_nldc_green, for a sequence to base the netlogicdc sign off off. The company colors are green, so it's called the nldc green sketch. Note that the program is actually blue. While tinkering, the blue is much more easy on the eyes.

For future posts
  1. Find or Optimize the code to make it faster.
  2. Create an interaction program for a PING sensor and/or IR sensors
Today's goal is to create an aesthetically pleasing light sequence. Once the bugs are ironed out, I'll move on to the adding an interactive component, that will affect the quality or color of the LED strip.

If you have questions on how to use this, send a comment. I work a full time job, so I won't get back immediately, but I'll check back every few days.



Thursday, September 1, 2011

about singularityNode()

I've been working for several years on personal projects and artwork, using do it yourself ideas, materials and components from Make Magazine, Adafruit Industries, Solarbotics and SparkFun Electronics. I'm documenting my discoveries, triumphs and failures here. If you've found your way to this page, then you may find some of it useful. Stick around, there will be more.

Hacker Philosophy
I love to learn, love to create, and love to teach. I like the process of troubleshooting something, making it work, and discovering interesting ways to create things. I've always appreciated the open source movement, both on the software and on the hardware side. The word hacker or hacking has acheieved controversial status over the years, but to me it still means the playful and creative re-purposing of anything that can be disassembled or rearranged. 

More about me
Shortly after coming into existence sometime in the 20th century, I started taking apart everything I could find. As my development as a human being continued, I learned to crawl, talk, tie my own shoes... And I learned that if I ever wanted to play with any of my toys, I had to figure out how to put stuff back together.

I finally was able to put some things back together. You learn real fast how to put toys back together when you realize that they no longer work after taking them apart. And as extra motivation, no, your parents won't buy you another one, when you broke the last one. Even if it's your favorite motorized police car that bounced off walls and reversed away from them.

Eventually all that fixing - or breaking then fixing - led me to a real job. I worked as a bicycle mechanic for 2 years. The company I worked for began to have problems, and I eventually ended up in computers. Fixing broken computers. Oh, yes, I broke my first computer by taking it apart, years before.

After years of working in the IT managed services industry, I made a decision to complete my college education. I discovered that MICA in Baltimore, MD had a new Interactive Media program, that promoted Interaction as an art form. Initially I intended to stick with web design, but I quickly discovered the world of interactive electronics.

After attending from 2005 to 2008, I was awarded a Bachelor's in the Arts degree, in Interactive Media. I finally decided that it was time to pursue a career again.

We are in complete control of our destinies. Even if they don't come about the way we expect. Allow the unexpected. 
Live and let live, unless you touch my stuff.
Albert Einstein is attributed with saying, "The most fundamental question we can ever ask ourselves is whether or not the universe we live in is friendly or hostile." Whether he said it not * I think this is a great way to approach life.

- Mike Ries, 2011


Thursday, August 11, 2011

prototyping the netlogicdc logo sign

Our company is moving to a new office, and needs a new sign for the entranceway. I'm sketching out some ideas with Tek, who's designed the logo and the build out for the new office. I'm prototyping with the BlinkM smart LED from ThingM. Here's a quick video of a simple the arduino and BlinkM circuit, and the concepts.

Our logo and motif is green, and I like the idea of a pulsing light. Currently the code fades the light in and out. I plan for it to evolve and incorporate a sensor that will detect if someone walks into the entranceway, and the  light will pulse brighter, or change in a similar interactive way. The coolest part is that it could change, it doesn't have to be the same thing each day.

I programmed the Arduino with BlinkMFlash example code, and edited the code for this example. I've posted the code after the break: