The Void: An Interactive Infinity Mirror Experience
with Brittany Hallawal and Hang Yang. Completed for Stanford’s ME 218A Smart Product Design Fundamentals course in Fall 2016.
Project Overview (ME 218A)
Our final project in ME 218A, Smart Product Design Fundamentals, was to create a mechatronic interactive art installation. The only requirements were that it needed to incorporate three different user interactions and provide some form of user feedback. As the capstone of a first course in mechatronics, the purpose of this project was to explore our capabilities to design a mechatronic system - hardware, electronics, and software - having completed only seven weeks of a formal mechatronics course.
For this project, our team created an interactive LED infinity mirror which we called the Void. When awaiting interaction, a hand shaped LED indicator invites the user to place their hand on the device. This begins the interaction, in which user controls the frequency of a color changing light pattern and corresponding beat. By turning a knob, the user can also adjust the intensity of the light pattern. By pressing a button, the user can swap to a secondary mode where they can play the device like a theremin, their hand position corresponding to a note in a scale. Each note in this mode corresponds to a different color of the LEDs. After 45 seconds, the device transitions back into its invitation state and awaits the next user.
For our project, I was responsible for the mechanical and software design.
Mechanical Design
Since audiovisual interaction with the LED infinity mirror is the primary functionality of the void, the mechanical components were designed to be simple, sleek, and clearly facilitate interaction by the user. The mechanical design consists of (1) the infinity mirror itself (2) the structural housing to which the infinity mirror and all sensors are mounted (3) the sensors and indicators through which the user interacts with the device as well as receives feedback.
The infinity mirror was constructed from an off-the-shelf shadowbox, a sheet of mirrored acrylic, a sheet of clear acrylic treated with a one-way film tint, and a single 4 foot long analog RGB LED strip. The mirrored acrylic pane was used as the backing of the shadowbox while the one-way pane was used as the front through which the user viewed the lights.
The single LED strip was mounted to a spacer which hugged the interior wall of the shadowbox, and the necessary wiring was fed through a hole drilled in the side of the shadowbox. When turned on, the light from LED strip within the shadowbox produced the desired “infinity” effect caused by the reflective film on the front pane.
The housing of the device was made from ¼ inch laser cut duron. To make the assembly and disassembly process easier, castle joints were used which gave the device structural stability without the use of glue or other permanent adhesives. For simplicity, the housing was deliberately designed such that the fully assembled infinity mirror could be slid in and secured. Holes were cut in the hand panel to mount the mode button and intensity knob. Cutouts were also made for the frosted acrylic hand to be press fit over where the IR proximity sensor was housed (to indicate where the user should place their hand) and for a frosted acrylic rectangle which acted as a back light to the timer.
A Sharp IR proximity sensor was used to sense the distance of the user’s hand from the panel. The sensor was mounted inside the housing using velcro to make position adjustments easier. The sensor was also surrounded by a series of RGB LED strips forming the shape of a hand, which illuminated a frosted acrylic hand on the upper panel, indicating to the user where to place their hand. The frosted acrylic hand had a hole cut out in the center to allow the IR sensor to sense the user’s hand position.
10kΩ potentiometer was used as knob which adjusted the intensity of the LEDs. The knob was mounted to first to a thinner panel to which it could be properly secured. This panel was then mounted to the housing under a hole slightly larger than the knob itself, so that the knob was able to be rotated freely while appearing inset into the ¼ inch duron panel.
Software Design
The software governing the device was built on an event-based framework, coded in C, and loaded onto a Tiva Launchpad mounted inside housing. The software was designed as a five-state flat state machine. In order to make the audiovisual effects (frequency and color changing patterns), we made heavy use of the Tiva's short timer library. In beat mode, the colors cycled through a set rainbow pattern changing at a frequency set by the user's hand height. The analog voltage from the Sharp proximity sensor was scaled proportionally into a timer value which set how long the LEDs would remain at a specific color. The changing colors were created using PWM signals applied to the gates of three power MOSFETs connected to the red, green, and blue lines of the RGB LED strip. In note mode, the user's hand height corresponded to a specific pitch played using an Adafruit FX audio board.