|Category:||EE & Hardware (back to list)|
|Project Page:||PartyMode 2.0 project page|
|Summary:||A miniature resurrection of a giant project that originally had a 7-PC fan VU meter, 16 CRTs running the DiscoScreens distributed visualizer, and a 22.4 sound system. The recreation uses a surround sound system, high-power RGB LEDs, and the original VUFan system to recreate the effects.|
|Begin:||May 17, 2011|
|Completed:||June 15, 2014|
PartyMode 2.0 is an integrated lighting and audiovisual system for the dual purposes of creating useful lighting modes and creating an "instant party". It is the descendent of a larger PartyMode system constructed in 2007 in a student computer lab built for the same purposes (as well, of course, as an electrical engineering project). The final PartyMode 2.0 system comprises the control circuitry, seven LED-lighted PC case fans forming a VU meter, and four high-power RGB LEDs arranged into two channels of two LEDs each. Controlled by a smartphone app or Bluetooth serial console, the system can be put into the following modes:
The documentation herein presents the history and technical details of the PartyMode system, as well as additional media demonstrating the system's capabilities. First, it goes through the history of PartyMode starting from the first full-scale deployment in a computer lab called the μLab and continuing up through the present day. It then shows videos and pictures of the final PartyMode 2.0 system, later expanding on how the system is built, including the schematics, board layouts, and necessary software. IF you have any questions, feel free to contact me, or post your question on the Cemetech forum.2. Photos and Videos
PartyMode 1 was first created between May and December 2007 in the μLab of the Electrical Engineering Department at the Cooper Union. The original PartyMode was a combination of systems intended to provide an "instant party" as well as amazing sound in a college electrical engineering laboratory. The component systems, called MSS 24.4, VUFan, and DiscoScreens, together created a powerful audiovisual experience, and if the system could have been brought to fruition, it would have also included disco balls and more elaborate lighting effects. Unfortunately, political tensions and new regulations at my undergraduate institution brought a premature end to the project, and due to fear of retribution, I have not published details of the original PartyMode installation until now. Unfortunately, this also means that the project is very poorly documented: very few photographs and no videos of the original PartyMode exist. Four years later, I tested out the remnants of the system in my bedroom, and after a lull of three additional years, I devoted my focus to finishing the system. These three major revisions are as follows:
PartyMode in any form was first documented online in a Cemetech topic, and described as "a network of systems designed to deploy an instant party in one of my school's computer/study labs at the press of a button".
Four of the systems had reached some semblance of their final form by the time the system was decommissioned, and a fifth was in the process of being planned and tested:
Unfortunately, a variety of circumstances prevented PartyMode 1.0 from every reaching fruition, and in fact, shortly after I graduated, the school demolished the building that housed the μLab, so the system as a whole is lost to the sands of time. Fortunately, I was able to salvage some components of the original system, namely the VUfan fans and controller as well as the DiscoScreens software.3.2. Mini-PartyMode 2 with LCDs
In May 2011, I connected the salvaged VUfan and an RGB LED to an Arduino, fired up the Discolitez and DiscoScreens software packages, and tested out a miniature form of PartyMode on my four-monitor desktop at home. The results of that test are below; it functioned properly, and produced similar results to the old μLab system. However, it still required a computer to perform all of the audio processing, which I felt was a significant shortcoming. Taking the computer out of the loop would require more complex microcontroller software, and would remove the ability to flash screens in time with the music, but would also allow the system to work regardless of the sound input source or if the attached computer was on. In addition, I wanted to eventually experiment with other modes, such as using the fans for ventilation or adding RGB LEDs that could display patterns, act as mood lighting, or even be used as short-term primary illumination. The original news article for this miniature test of PartyMode can be found here.
In April 2012, I ordered high-powered 3-Watt RGB LEDs from DealExtreme, and experimented with the component values necessary to properly power the LEDs. I designed a circuit using TIP120 Darlington transistors, similar to the VUfan controller, with carefully-computed resistor values to ensure the red, green, and blue elements in the LEDs would each receive the current power and current. By February 2014 I had begun to write an Arduino program that could control the lights in response to audio or in set patterns. Starting in April 2014, I renewed my efforts to finish the project, which included the following steps:
The final form of the PartyMode 2.0 system is a merger of the original multiple systems from PartyMode 1, namely DiscoScreens, VUfan, and the planned reactive illumination. It takes the form of 7 LED-lighted PC case fans and 4 high-power RGB LEDs connected to a pair of controller PCBs. The high-power controller is responsible for switching the LEDs and fans, while the low-power controller uses an ATmega328p microcontroller and Bluetooth serial module to process audio and commands to determine how to switch the fans and LEDs. It is completely indepedent from any computer, unlike the first two iterations of the system. The high-level parts list is as follows (the individual controllers' components are listed below):
The RGB LEDs that I chose for the system are bright without requiring excessive power or generating extreme heat. Unfortunately, they are both common anode and are poorly documented. Based on the available documentation for the peak current and recommended voltage for each diode in the LEDs, I designed a set of three control blocks, each of which is capable of powering a pair of R, G, or B diodes in parallel. The blue and green diodes' requirements were close enough that I was able to use the same component values for both, while the red diodes required a different design. In addition, these computations assume that the switching element is a TIP120 Darlington transistor, and account for the characteristics and voltage drop of this component. A future design might make use of FET-based constant-current drivers.
The first step of computing the necessary parameters for the LED switching circuits was to model the circuit for a single diode. The heart of the circuit is a TIP120, a Darlington amplifying power transistor with gain Β=1000. Assuming a resistor RB on the base of the transistor creating a base current IB, the collector-emitter current ILED could thus be computed. Given the current ILED and a desired voltage drop VLED across the diode, the current resistor RLED can be chosen. The following circuit model and equations govern ILED and VLED given these constraints:
The next step was to experimentally determine the correct current and voltage through the diodes at maximum brightness. A simple circuit similar to the one above was constructed, starting with three 15-ohm resistors in parallel forming a 5-ohm, 0.75W R2, and a single 15K resistor as RB. The resistor values were varied, the brightness of the diode was measured, and the voltage and current were measured to find the lowest current at which the diodes remained at apparent maximum intensity. This process was repeated for the red, green, and blue diode in each LED, producing the following figures for VLED and ILED at maximum brightness:
The final step was to use these figures to determine the RB and R2 values to use in the final circuit. The blue and green requirements were close enough that the same values were used for each, while separate values were chosen for the red diode. In addition, because two RGB LEDs are used in parallel on each set of three TIP120 drivers, ILED was doubled for the final computations:
The LEDs were installed in pairs, with two LEDs at each side of the room to respectively react to the left and right channel of any audio playing. Each pair is connected in parallel, and the two LEDs in each pair cannot be controlled independently. The LEDs have a very wide viewing angle, but are uncomfortable to look at directly, so a diffuser made from a Poland Spring water bottle cap was added on top of each LED, as shown below.
4.2. Low-Power Controller
The low-power controller is responsible for determining the current state of the fans and LEDs. At its heart is an ATmega328p microcontroller, the same microcontroller used in the popular Arduino development board. A Bluetooth serial module communicates with the ATmega to relay commands from attached devices such as smartphones, and an SN74HC595 latching shift register is used to multiplex the ATmega's outputs to control the VUfan fans. Two analog circuits inhabit the low-power control board: a 5V switching regulator used to deliver clean 5V to the ATmega and attached components, and a pair of conditioning circuits to DC block, bias, and smooth the two audio channels delivered to the ATmega. The complete schematic for the controller is shown below.
The images below show the progression of the low-power controller from a breadboarded prototype including the Bluetooth module, audio filtering circuitry, and 74LS595 connected to an Arduino, up to a complete fabricated and populated PCB. The board itself includes the switching-mode power supply necessary to power itself, as well as female headers to connect the output signals to the high-power control board. A 15-pin D-sub connector transfers the fan and LED signals as well as a ground from the low-power board to the high-power board.
Low-Power PCB Design Download
PartyMode 2.0 Firmware, App, and PCB Design
The completed PartyMode 2.0 system requires two pieces of software: the firmware to run the ATmega328p microcontroller, and an Android app that controls the system over Bluetooth. Any device with a serial terminal and a Bluetooth transceiver could be used to control the system, or the Bluetooth serial module could be replaced with a wired serial connection, but the Android app provides a much more user-friendly way to control the system. Screnshots from the app are shown below. Together, the ATmega firmware and the app permit the PartyMode 2.0 system to be set into the nine modes discussion at the beginning of this writeup.
The firmware for the ATmega328p was developed using the Arduino IDE, but foregoes the vast majority of the Arduino abstractions except the bootloader and the Serial library. Instead, it accesses the digital ports directly to perform output operations, sets up a custom ADC interrupt capable of sampling both the left and right audio channels and storing the values fetched to RAM buffers, and directly sets up the ATmega's PWM modes. By writing bare-AVR C rather than working through the Arduino API, in many cases latency was reduced by a factor of 10, at the cost of additional code complexity. The firmware uses the FastFFT library to analyze the sampled audio data, and the Piccolo project created by Adafruit was consulted as a reference for using the FastFFT library. Finally, because the firmware currently weighs in at roughly 7KB of binary code, ample space is available for future features and new illumination modes.
PartyMode 2.0 Firmware, App, and PCB Design