Boy, it felt like a long road. It’s a bit strange that something so seemingly simple took so much time. It’s just a box, after all, and the underlying electronics and logic are not terribly complex. But if nothing else I learned that the devil’s in the details. Making something look good takes time. Before the journey, let’s see where we ended up:
Our journey began with a simple concept – a life size infinity mirror. What it was exactly intended to do was still up for debate, but we mainly wanted a platform upon which we could build the interaction around. The idea spawned out of Ella’s childhood experiences with a tryptich mirror.
Burying your head in here and fully immersing yourself in mirrors creates a unique, surreal experience. It’s intimate and personal. Something that allows you to be with yourself and let everything else melt away. That is the feel we wanted to aim for. Our piece will be not about the interaction or the aesthetics, but about the feeling the user gets while standing in front of it.
Aesthetically, we drew inspiration from Craig Dorety (left) and Yayoi Kusama.
And for the interaction, we decided simple is better, and liked the idea of mapping the user’s pulse to our lights. It was to be hypnotic. So we started by grabbing a pulse sensor and playing around.
We immediately recognized that the pulse sensor was not giving us consistent behavior. But we pressed on, hoping that if we focused on other things, we’d figure out the pulse sensing later.
Initial Concept and Design
With our basic concept settled, we went right into fabrication. But ran into a few roadblocks right off the bat.
1st – how do we get a mirror the size we want without spending a fortune?
2nd – How do we create the organic shape we want inside the frame?
After some guidance from Ben Light, we realized we could use metal flashing to create our inner organic shape, and we could use mirror film on a piece of glass to create our large mirror. Luckily the new york city streets delivered and Ella found a large piece of glass in a pile of trash. One man’s trash, another man’s ITP project.
We built the frame with lumber scavenged from an old Ikea bed frame. To get the mirror on the back, we glued some acrylic directly to the back panel, and stuck the mirror film to that. It’s a surprisingly soapy job to stick the mirror film.
Once it was all together, we placed the flashing inside and tried to find a shape we liked.
Then the lights
And a TON of hot glue.
Earlier in the prototyping stage we serendipitously discovered that paper makes for a great light diffuser. So we decided to take it full scale.
After some more playing with placement of the flashing and the lights, we settled on our final design:
Now it was time for final fabrication. Fasten everything down. Apply paper to cover the LED’s. Then more paper. Then spend more time applying paper. Seriously, the paper took hours. Wire up the LEDs, then close it all up. Voila, mirror platform.
Electronics and Code
The technical part of our mirror is relatively straightforward. To hook up the LED’s (which are standard analog RGB LED strips), which take 12V and considerable current, we had to purchase an external power supply and wire up the pins to MOSFETs in order for us to control the brightness of each channel. By PWM-ing the gate, we can control the voltage between the source and the drain. Unfortunately the ardunio we used only has 6 PWM enabled pins, but the sketch that interfaces with the pulse sensor uses custom timing, which disables two of the available PWM pins. So we were only left with 4 pins, meaning we coudln’t only control 2 of the 3 channels on each LED strip. In the future, we would simply upgrade to an arduino with more pwm capable pins, or investigate using a shift register to extend the number of outputs from our current arduino. Either way, for now, we are able to get the colors we want using only 4 pins.
There’s also a photoresistor buried in the laser-etched palm seen above, that we use as a switch to determine when a hand is present.
Coding was also relatively straightforward, if not a bit puzzling at first. We pulled the pulse sensor example code from https://github.com/WorldFamousElectronics/PulseSensor_Amped_Arduino to control the pulse sensor, and it took a few minutes to wrap our heads around how it worked. It came with pre-written example to pulse an LED to the user’s heartbeat, so we thought it would be pretty easy to simply port that example to our LED strips. And once we understood how it worked, it was pretty easy to do so. The problem with their example code is that it does quite a bit of signal filtering to try and make heartbeat detection more robust, but their code is dense and difficult to understand. Because of this there was not really a good way for us disect their work and see if we could improve upon it. Besides, we didn’t want to sink days and days into attempting to improve something that somebody worked on for months. So, for now, we decided to settle with the poor performance of our pulse sensor.
The last piece of the puzzle is that the arduino outputs a byte serially to a p5 sketch that plays our heartbeat sound. This was much easier than attempting to produce sound directly through the arduino, but the downside is that it means our mirror needs a computer at all times.