Intelligent Control of Woot-Off Lights

Please see the WootOff Lights Project category for the most up-to-date posts about this project.

Occasionally, Woot has extravaganzas where they post item after item in what is known as a woot-off. Little .gif lights spin round and round to alert visitors to this spectacle. Playing on this, Woot occasionally sells physical woot-off lights. They run off of USB power, with a switch in each light/motor piece. Since it’s a standard 5V connection, this opens the doors for all sorts of hackery.

The ultimate goal of this project is to have these lights come on whenever there is a woot-off.

If you aren’t already familiar with the Arduino, become familiar now. I’ll wait.

Ok, so the Arduino is a microcontroller system with a USB-serial input communication, a microprocessor with a bootloader to run “sketches”, and the ability to control over a dozen digital logic pins (including a few with PWM or Analog-In).

The setup will use a PC application for monitoring a “Woot Tracker” (many of these are available online to reduce load on Woot’s own servers). The application will check for the presence of the woot-off lights logo, indicating a woot-off – in the future, the lights will be activated by each changing of an item. The application will then send a byte over serial to indicate the woot-off status to the Arduino. Based on the input from the computer, the Arduino will turn the lights on or off.

Great – so in order to turn on the lights all we have to do is turn on one of the Arduino’s pins (they are 5V at digital high). Unfortunately each pin is only capable of supplying at most 50mA, and these lights run on over 100mA. Luckily, the 5V power regulator on the Arduino is capable of supplying much more current – up to 500mA or so if a good DC power supply is used. So if we hook up the positive lead of these unit to the 5V, we now need to control the ground connection to control the circuit – connect the ground and the lights go on because the circuit completes.

The ULN2803 chip provides this exact function. The chip is connected to 5V and ground. The ground from the device to be controlled is connected to a pin (remember that the positive of the device is already connected to 5V), and the control signal from the Arduino is connected to the corresponding control pin. When the control pin sees 5V (from the Arduino control signal), the ground lead from the device is connected to the ground of the chip, completing the circuit and sending current to the device. In this case, the lights spin up.

Early Woot-Off Light Software/Arduino Control

Early Woot-Off Light Software/Arduino Control

So far I have the hardware running, and have used the Arduino PC software to send input down the serial connection, turning the lights on and off. The next step will be to write an application to send serial information, and then to expand that application to search the textfile of the woot tracker for the lights.gif. The final stage will be to integrate all the hardware into a small package so the device can be used permanently.

Comments 5

  1. JT wrote:

    Cool stuff.. Are you still working on this? Was wondering what you have in it in terms of cost for the hardware. I was talking to a co-worker today about something like this and decided to see if someone else had done anything.

    Posted 09 Jun 2009 at 12:37 PM
  2. brettinman wrote:

    Yep, see the main page to find further posts on this. Right now we’ve got it controlled through Python and are just working on packaging the software to post publicly (middle of Finals week, right now).

    As far as cost, here’s a breakdown:
    - Arduino (or similar clone): $15-30
    - Darlington Array chip (ULN2803): $1-2

    Optional (if you don’t have these)
    - USB A-B cable
    - 9-12V Wall Wart: $10
    - Small bit of protoboard to make it permanent: $1-2
    -Altoids tin: $1-2

    Of course, you’ll have to supply the woot-off lights, which I think are $10-15 when Woot has them (or anything else that runs off 5V/USB power). You could also replace the Darlington array with a standard small-signal transistor, but I didn’t have any lying around.

    Posted 09 Jun 2009 at 12:54 PM
  3. Kevin Cagle wrote:

    I’ve been considering the same thing with some woot lights that a friend gave me and this seems really complex and expensive. Have you considered plugging the woot lights into a hub and then programatically controlling the power to the hub? Hubs can be had for less than $10 these days and most people have one laying around.

    Posted 25 Jul 2009 at 8:39 PM
  4. brettinman wrote:

    It’s not really that complex, but it is kind of expensive if you don’t already have an Arduino.

    As far as I know there is no way to “control” a USB Hub. You can deactivate devices in the OS, but that just makes the OS ignore them – it does not turn off power to the device. There is no direct way to control 5V power to USB devices through software on most machines.

    The absolute cheapest way to do this would be to hack a Serial port on the computer (therefore bypassing USB control through the Arduino) and hook up a transistor to switch the lights on and off, but you’d still need to make a 5V supply and such – not exactly an elegant solution. The Arduino makes this project easier and neater because it incorporates a 5V supply and a USB connection to transmit data to/from the computer.

    Right now I’m designing a really basic board for the lights using a transistor instead of the relays to keep cost down. The downside is that the transistor results in a voltage drop – about .2V. That’s fine for the lights (they still run, just not quite as fast), but it shouldn’t be used with any other USB devices. I’ll post more about it soon once I have the preliminary design finalized.

    Posted 25 Jul 2009 at 8:47 PM
  5. Mike Norman wrote:

    Did you ever get the software side done? im hella interested in building one! keep me updated! and thanks for being awesome!

    Posted 23 Apr 2010 at 2:37 PM

Post a Comment

Your email is never published nor shared.