BeagleLight

From Texas Instruments Wiki
Jump to: navigation, search
The #evp parser function was deprecated in EmbedVideo 2.0. Please convert your parser function tag to #ev.

Our Team

Members

  • Craig Yeh (yehcraig at gmail)
  • Chao Zhang
  • Doug Ilijev
  • Kurt Sherer

The Project

Previously BeagleSight

We were originally working on a project that would take video input from cameras and convert that into a depth field, producing output to a matrix of vibrotactile motors. Ideally, this would allow people to gauge the distance of objects in their surrounding using touch. We've encountered difficulties setting a stereoscopic webcam, and we estimated that the scope of the project was starting to look longer than we had anticipated.

We are now working on an automated light controller using the BeagleBoard. We later discovered that there is another team doing a similar project, but we have not exchanged any ideas.

Description

BeagleLight is an interface with both hardware and software support for synchronising control of lights with music. It can read in and process a file with manual sequencing of lights, for tighter control, or it can try to analyze given music and flash the lights on cue.

Features

  • Web interface for controlling upcoming songs.
  • Music analyzer for automatically producing light sequences.
  • Sound output right from the BeagleBoard.

Prototype

Our initial prototype will include all of the planned software but only basic hardware. The prototype will control and toggle LEDs to show that the sequencing and timing of light outputs are correct. LEDs are easier to work with at this point because they require relatively low voltages to drive compared to larger lights, such as strings of Christmas lights. We foresee that driving Christmas lights would involve connecting output on the BeagleBoard to solid state switches so that current for the lights can flow through a separate circuit.

Project Steps

  • Proof of concept for turning on and off lights using pins from the expansion area.
  • Proof of concept for playing music from the board.
  • Write an interpreter that takes a sequence file of lights and performs the output.
  • Write a converter that takes in a song file and produces a sequence file.
  • Write a web interface for starting songs.

Project Journal

Outputting to Lights

We decided to use the pins on the expansion area for controlling our lights. This required us to first solder on expansion headers. We created sysfs controls for the expansion pins using the export utility under /sys/class/gpio/.

For example, this would create control files for GPIO pin 157, which corresponds to pin 22 in the expansion area.

echo 157 > /sys/class/gpio/export

Then, we can control the lights by writing "high" or "low" to the direction file for a specific GPIO pin.

echo high > /sys/class/gpio/gpio157/direction

echo low > /sys/class/gpio/gpio157/direction

LED Prototype Lights

For prototyping purposes, since we don't have the parts for switching mains current for real Christmas lights, we're using LEDs. Output from GPIO pins on the beagleboard is at 1.8V, which isn't enough to drive most LEDs, so we're using transistors to switch the LED with current from the 5V line on the expansion area. See schematics and the parts list for further details on our current setup.

Playing Music

We found that the quickest way for playing music directly on the system was to call mplayer with the file we wanted to play.

mplayer -af volume=-10 song.mp3

Usage Instructions

Required Software Packages

  • Python
  • MPlayer
  • Java (not required on the beagle board, only used by the sequence generator)

Hardware Requirements

To replicate the prototype, you will need parts listed in the Parts List on this page, which should be connected to the expansion header according to the schematic also available on this page. Our code currently uses pins 13-22 on the expansion header, corresponding to the GPIO pins, {162, 161, 159, 156, 157, 134, 133, 132, 131, 130}.

To hook up larger lights, like Christmas lights, which require mains current, you will need solid state relays.

Guide

BeagleLight software can be found under the Source Code section. Generator.java can be used to automatically generate light sequence files to give to the interpreter. Interpreter.py can be called with the name of the song in order to run the lights and music. export.sh should be called in order to enable the light pins before Interpreter.py is started.

$ javac Generator.java

$ java Generator

Usage: Generator [lights] [song(.wav)]

$ java Generator 10 derezzed.wav

$ ./export.sh

$ python Interpreter.py derezzed

Media

Resources

Source Code

Download source

Schematics

Parts List

  • LEDs [1]
  • 470 ohm resistors [2]
  • 75 ohm resistors [3]
  • TIP31A transistors [4]
  • Header sockets [5]