Stories
Slash Boxes
Comments

News for nerds, stuff that matters

Slashdot Log In

Log In

Create Account  |  Retrieve Password

Building Your Own Glowing Cyber-Balls?

Posted by Cliff on Tue Mar 18, 2003 12:02 AM
from the fun-DIY-projects dept.
krezel asks: "So I've been drooling over the Ambient Orb, a cool little gadget 'glowing ball' that you changes colors based the 'health' of things you specify. It can do stuff like fade from red to yellow to green as your stock portfolio improves. However, being a poor college student I can't afford its $200 price tag. I've found lots of sources for super bright multi-color LED's. Cast a couple of them in some translucent resin, hook them up to a power source, and you've got yourself a cheap glowing ball. But I've yet to find any good information on how to build hardware that will let me control relays for devices like this through my serial or parallel port. Basically I'm looking for a cheap way to build a board that will let me control 4-8 relays (for each color) over my serial port, and some info on how to write the software for it. This could be a very cool project, and I plan on making the plans available, and the code Open Source, when I'm done with it. Any ideas?"
+ -
story
This discussion has been archived. No new comments can be posted.
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
 Full
 Abbreviated
 Hidden
More
Loading... please wait.
  • Hmmm... (Score:5, Funny)

    by TWX_the_Linux_Zealot (227666) on Tuesday March 18 2003, @12:04AM (#5534604) Journal
    Usually I try to avoid being afflicted by glowing cyber balls, myself.

    You know you need to get laid if "Hey baby, wanna cyber?" gets your balls glowing...
  • by Anonymous Coward on Tuesday March 18 2003, @12:05AM (#5534610)
    I would use the parallel. You get 8 pins out instead of just the one. Sure, you can play games with the serial, but... parallel would be easier.

    Depending on how many LED's per color and whether you are using transistors or relays to drive the circuit, you may want to use an external power source and use op amps to convert your parallel control to a stronger signal for the LEDs.

    Anyway, just my idea.

    Sure, I could probably design the circuit now (Since I am learning so I can build my own 160-6m SSB/CW rig), but I don't want to. Sorry.
    • Parallel port devices are fairly easy to program and create (I'd have to say THE easiest), most basic linux programming books go into how to do it.

      Considering the simplicity of the circuit to make an LED glow, and the ease of parallel port programming, plus the relative ease of finding information on how to do it I'd have to concur with you.

      Plus the low power consumption would probably mean you could forgo any external power source unless you either wanted it brighter or wanted to light up a bunch of LEDs
      • by Uller-RM (65231) on Tuesday March 18 2003, @12:57AM (#5534818) Homepage
        One thing to remember though is that you're not allowed access to the ports under Win32 NT-family kernels except through a Ring 0 driver. That can get a little ugly.

        Google for "Beyond Logic" and you'll find a site that lays out more info on the legacy ports and on making peripherals for them (and for USB) than you could read in a day.

        (Mind, it's pretty easy to make a serial one too. There's a UART called the CDP6402 that's specifically designed to run without a master uC; just add an osc to get 4x the desired baud rate and use an octal latch to maintain the output with an RC circuit to generate the rcv ack pulse, and you're set.)
    • by Gordonjcp (186804) on Tuesday March 18 2003, @02:43AM (#5535114) Homepage
      I've actually done this with eight LEDs (four red, four green) and the parallel port on my firewall machine. I did it mostly because it had a cool smoked perspex cover that slides over the drive bays, and the LEDs shining through it looks pretty cool. Especially when you make them flash and do stuff. Have a look at some pics [gjcp.net].

      In this case, the LEDs have their anodes connected together, and brought back to the 5v rail, and their cathodes connected to the parallel port pins through 220 ohm resistors. You then bring the appropriate pin low to turn the LED on. There's a good reason for doing it "backwards" - the gates driving the parallel port can sink more current than they can source. That is to say, the transistor pulling the pin to ground is "stronger" than the one pulling it to +5v, so it's more suitable for turning on an LED. You could use two resistors and a small transistor per pin, too. If you like.
    • by MadCow42 (243108) on Tuesday March 18 2003, @11:02AM (#5536800) Homepage
      Actually you can get 12 "output" channels out of a parallel interface if you really want to... the 8 data channels, plus the "strobe", "autofeed", "init", and "select-in" channels (pins 1, 14, 16, 17, but 1, 14, and 17 are "inverted" watch out).

      I use the parallel port to drive three stepper motors. Pretty easy to do, and your circuit would be just as easy. You could actually use the same circuit, but simply change the +12V input to the correct voltage, and hook the LED's in where the motor phases would be.

      See my crude circuit diagram here:

      www.lenticularshareware.com/downloads/stepper_circ uit.jpg [lenticularshareware.com]

      FYI, you can also get 4 "input" channels from the parallel port at the same time, I use them for limit switches to set the position of the steppers to "home". (see diagram)

      MadCow.
        • by archeopterix (594938) on Tuesday March 18 2003, @03:46AM (#5535233) Journal
          Serial being serial, they only have 1 DATA pin. the other pins are used for control.
          Parallel ports have 8 data out pins, 8 status pins which can be used for data in, and a few (3 IIRC) control pins.
          So Parallel is easier because you don't have to decode the serial data (demultiplexing)
          Yes, serial has only 1 data pin, but nobody said you cannot use control pins, like DTR for transmitting your data. Some cheaper UPSes use that trick to transmit their status back to the PC. Actually I remember a program that let you transmit more than the 115200 bps using the control pins to transmit data between 2 PCs.
      • by Grab (126025) on Tuesday March 18 2003, @05:47AM (#5535458) Homepage
        Yeah, except that using USB requires a processor on the "stone" to handle stuff. Choice for electronics newbie:-

        1) USB interface. Add a microcontroller, learn to program microcontroller (maybe 2-3 months to learn, if you're a competent coder already), get the programming hardware ($20 if you make it yourself, $100 if you buy it), connect LEDs and resistors to microcontroller.

        2) Parallel port interface. Use a wall-wart power supply, connect LEDs and resistors directly to parallel power, all set up in a day at most.

        What would you rather pick? :-)

        Grab.
  • by Gogl (125883) on Tuesday March 18 2003, @12:07AM (#5534616) Homepage Journal
    Looks like we have a new candidate for this old poll [slashdot.org].
  • by Anonymous Coward on Tuesday March 18 2003, @12:07AM (#5534621)
    Happy Fun Ball
    It's Happy! It's Fun! It's Happy Fun Ball!

    Yes, Happy Fun Ball, the toy sensation that's sweeping the nation. Only $14.95 at particpating stores!

    Get one Today!

    Warning: Pregnant women, the elderly and children under 10 should avoid prolonged exposure to Happy Fun Ball.

    Caution: Happy Fun Ball may suddenly accelerate to dangerous speeds.

    Happy Fun Ball contains a liquid core, which, if exposed due to rupture, should not be touched, inhaled, or looked at.

    Do not use Happy Fun Ball on concrete.
    Discontinue use of Happy Fun Ball if any of the following occurs:

    * Itching
    * Vertigo
    * Dizziness
    * Tingling in extremities
    * Loss of balance or coordination
    * Slurred speech
    * Temporary Blindness
    * Profuse sweating
    * Heart Palpitations

    If Happy Fun Ball begins to smoke, get away immediately. Seek shelter and cover head.

    Happy Fun Ball may stick to certain types of skin.

    When not in use, Happy Fun Ball should be returned to its special container and kept under refrigeration...

    Failure to do so relieves the makers of Happy Fun Ball, Wacky Products Incorporated, and its parent company Global Chemical Unlimited, of any and all liability.

    Ingredients of Happy Fun Ball include an unknown glowing substance which fell to Earth, presumably from outer space.

    Happy Fun Ball has been shipped to our troops in Saudi Arabia and is also being dropped by our warplanes on Iraq.

    Do not taunt Happy Fun Ball.

    Happy Fun Ball comes with a lifetime guarantee.
    Happy Fun Ball: ACCEPT NO SUBSTITUTES!
  • by dozer (30790) on Tuesday March 18 2003, @12:08AM (#5534625)
    A relay is a mechanical switch. The constant clacking would drive you nuts (though, that would also be a good indication of the activity of your stocks...)

    Google knows all [google.com]. Click on the first link. Or any of the others.
  • More than 8 colors? (Score:5, Informative)

    by diegoq (149586) on Tuesday March 18 2003, @12:08AM (#5534626) Journal
    Don't you want more than 8 colors? If you use relays, you can only turn on or off each of the red/green/blue colors. But if you vary the current through each led, or vary the duty cycle by pulsing the leds quickly, then you can get more colors (like 24 bit color!).
    • How do LEDs hold up to high frequency PWM? That sounds like a really cool idea.
      • by adri (173121) on Tuesday March 18 2003, @01:32AM (#5534910) Homepage Journal
        how high?

        dot-array LED signs are generally built using some form of scanning setup - you enable a row, then shift-on the bits. Then, next row, shift on the bits, etc. Not all the LEDs are on at any given time.

        So you can get away with pulsing them with higher current than they're rated at. Which is a bit of a bugger - if you hit the 'stop' button or the sign crashed, any on LEDs would burn out. I used to work making LED signs for a little while - we had a set of damaged signs to test code on.

        (Which got real expensive when Blue LEDs came out so I _think_ the guys implemented some 'no clock? no driving power!' circuitry in case the testing code crashed.. :)

        (A cute tidbit: our signs had 4-LED RGB elements - one blue, one green, two red. the red leds weren't as bright to the eye, so we needed two of em..)
  • by limekiller4 (451497) on Tuesday March 18 2003, @12:08AM (#5534627) Homepage
    Karma be damned, this is easily one of the dumbest things I have ever seen. It's a ball. That glows. The glow shifts, for example, on the rise or fall of the stock market.

    Cliff, give me $200 dollars. You can call me whenever you want. Sometimes I'll hum. Sometimes I'll hum louder.
    • If you read the post, you'll see the whole point of this was to avoid spending the $200.
      Instead he wants to spend a few dollars on LEDs and a few more on resin and cables. I'd imagine this costing somewhere less than $30.

      Now if you were offering to be a hummer for $29.99, that would be a different story . . .
      • by unitron (5733) on Tuesday March 18 2003, @12:43AM (#5534771) Homepage Journal
        "Now if you were offering to be a hummer for $29.99, that would be a different story . . ."

        Jeez, and I thought that the glowing balls would be the near-irresistable straight line.

        • by dubl-u (51156) <2523987012@potAUDENa.to minus poet> on Tuesday March 18 2003, @01:55AM (#5534978)
          There are a ton of uses for it.

          Note that people happily pay $30-50 for a little blinking light that tells them when they have voicemail. They'll pay a lot more than that for extra gauges on a car dash. And companies have paid millions for fancy "war room" conference rooms that continuously display important business data.

          The basic prinicple is that people have to deal with a lot of invisible data, and if you can make it visible, it's easier for people to manage. Take a look, for example, at the many designs for in-house power meters [sustainer.org]. The idea is that if people have a better idea of how much electricity they're using, they'll waste less of it.

          Personally, I would be tempted to hook it up so that it went slowly from green to red whenever I got behind on my email, a visible reminder of the people I'm ignoring when I get absorbed in a project. Or since I'm a freelancer, it'd be interesting to hook it up to a moving average of billable hours, so that I have a quick objective reference to check when I wonder whether a sunny day is better spent biking than coding.

          Or at a company, I'd love to set it up so that it got redder and redder when people put in too much overtime on a project. Or you could hook it up so that it responded to an anonymous web poll on morale. And then perhaps another one tied to the number of open bugs. Or perhaps percentage of code covered by test suites.

          I'd agree that $200 is too steep. But for $50, I could find a lot of uses for these!
        • Re:Better Investment (Score:5, Interesting)

          by Grab (126025) on Tuesday March 18 2003, @05:50AM (#5535466) Homepage
          Win 9x has direct access to the ports. Win NT/XP needs you to go via the device drivers, but it's not a difficult problem - plenty of info for how to do it.

          Beyond Logic [beyondlogic.org]
          Parallel Port Central [lvr.com]

          Both the above have a bunch of useful stuff.

          Also don't forget that you'll need to learn how to drive LEDs. I'm admin on an electronics board, so here's a blatant plug:-

          BasicElectronics board, LED FAQ [ezboard.com]

          (and kudos to David Bridgen and MacGregor who put that info together :-)

          Grab.
    • I'd say the point is to have a conveniently viewable status display. I've seen reports about setups where different systems have different bird sounds associated with various statuses; apparently after a fairly short time changes in the background noise jump right out at you.

      I could see using locally-connected glowing globes this for all sorts of monitoring; stock market tracking isn't really near the top of the list. I can see having a row of stuff like this visible in or near a server room for example,

    • The 90's were fun. The 90's were made of stuff like this. You know, PDAs and stuff. Don't pick on him. Goofy crap like this can pay for Real Estate.

      At the very least Cliff is a barometer. If people still has the leisure to actually care about this we're doing fairly well. Look man, we're about to topple a regime. We have "Ambient Orbs" to fill the commercial breaks.

      Anyhow, when I hit the term "Ambient Orb", I immediately recalled "Happy Fun Ball", from SNL. Does anyone else remember hyperventilati
  • I have no good ideas (Score:4, Informative)

    by roystgnr (4015) <roystgnr.ticam@utexas@edu> on Tuesday March 18 2003, @12:10AM (#5534636) Homepage
    I just wanted to congratulate you for getting the phrase "glowing cyber-balls" on the front page of Slashdot!

    When I was looking for computer->analog control chips a few years ago, the best methods I could find were:

    Build (or buy) a serial->I2C or parallel->I2C converter; you can get D/A chips with I2C interfaces pretty cheaply.

    Use a PIC microcontroller, which gives you serial and analog I/O built in.
  • by eric434 (161022) on Tuesday March 18 2003, @12:11AM (#5534643) Homepage
    the Ambient Orb runs off a wireless network... no computer needed, and you can control it from anywhere in the world (theoretically). To manage that, you'd have to build an 802.11b -> relay interface, at least - if not a cellular one.

    Now, assuming you don't want to muck about with that (and who does), your best bet would be to not use relays in the first place - they're loud, slow, and not gradual. Use a Basic Stamp from Parallax [parallax.com] and write some code to output a PWM (Pulse Width Modulated) voltage to three different pins - one for each color. (Chances are you'll be using either one 4-pin, 3 color LED or 3 leds (red, green, blue). Infrared or UV leds could be interesting, but aren't recommended...) Then you can either leave the BASIC stamp connected to your serial port and controlled via DEBUG or SERIN (IIRC) commands from your host computer (and write some corresponding code for the host), or you can leave it standing alone and interface to it using any one of the who-knows-how-many add-on boards Parallax sells. (you might want to check out the Communications [parallax.com] page - that modem looks like a good thing to try)
    • by spongman (182339) on Tuesday March 18 2003, @12:37AM (#5534756)
      alternatively, scrounge some simple electronics components (bread board, power supply), build yourself an oscilloscope [sourceforge.net], get an Atmel AVR microcontroller [avrfreaks.com], connect it to your computer using a parallel port interface [lancos.com], compile code with GCC [avrfreaks.com] and upload it [lancos.com] to your device.

      Note: some assembly required, batteries not included.

    • Don't use a Basic Stamp. They're overpriced and low on performance. The interpreter really takes the zing out of the microcontroller...say, in a similar way that certain OS's can change the operation of your desktop computer....

      Really, you can get a small PIC (since that's where most of the hobbyist development resources are right now) in a 16-or so pin package you can toss on a Rat Shack breadboard. Get one with an onboard UART and life gets even simpler. The next step is to write code to take a string of values, and PWM a few pins according the the values. After that, everything depends on the computer side.

      My room at school had indicator LEDs (one mounted in the door peephole - go figure) for new email, and a robotic webcam running off a 486 webserver.

      If you want to get fancy, use USB.

      I have a PIC board (way overspecced for this application, of course) and two USB boards on my desk right now, that could do the task with an hour of coding and soldering a few LEDs.
      • by wirelessbuzzers (552513) on Tuesday March 18 2003, @02:22AM (#5535050)
        Just to get you started. It's mostly left over from my wireless buzzer project. Since PICs don't come with 3 PWM units, you can just:
        do_red: // software PWM for red color
        DECFSZ $redtemp, F //0x41, for instance
        GOTO do_green
        MOVF $red, W //0x51
        MOVWF $redtemp
        XORLW -1
        MOVWF $red
        MOVLW $redbit //bit number of red LEDs on the port, say 0x1
        XORWF PORTA, F

        do_green: s/green/blue/; s/red/green/;
        do_blue: s/blue/red/; s/green/blue/;
        If you want it to pulsate, substitute GOTO do_counter for the last GOTO do_red:
        do_counter:
        DECFSZ $counter_divide_1
        GOTO do_red

        // Check if the interrupt code wants our attention
        BTFSC $interrupt_attn, $attn_bit
        GOTO get_new_params // get new pulsation parameters, you can write this

        DECFSZ $counter_divide_2
        GOTO do_red
        MOVLW 0xF // approximate delay loop for 30 HZ update
        MOVWF $counter_divide_2

        // if you're running at 4MHz, this code will be called about 30 times per second.

        BTFSS $pulsate_control, $pulsate_bit // Are we pulsating?
        GOTO do_red
        MOVLW $redbit || $greenbit || $bluebit
        MOVWF PORTA // reset the LEDS
        DECFSZ $step_counter // check if we should go opposite
        GOTO calccolors

        BTFSS $pulsate_control, $fixed_num // Do we have a fixed number of cycles?
        GOTO invert_deltas

        DECFSZ $num_pulses
        GOTO invert_deltas

        CLRF $pulsate_control // not pulsating anymore
        GOTO do_red

        invert_deltas:
        MOVF $num_steps, W
        MOVWF $step_counter // reload the step counter
        COMF $red_delta, F
        INCF $red_delta, F // invert the delta registers
        COMF $green_delta, F
        INCF $green_delta, F
        COMF $blue_delta, F
        INCF $blue_delta, F

        calccolors: // actual color adjustment
        MOVF $red_delta, W
        ADDWF $red, F
        MOVF $blue_delta, W
        ADDWF $blue, F
        MOVF $green_delta, W
        ADDWF $green, F
        GOTO do_red
        I'm a bit rusty on my PIC, so check the mnemonics and look for typos. Initialize $steps to be the number of "frames" to take to wax or wane in color, $red / $green / $blue to the initial color (in 256ths), and $red_delta, $green_delta, $blue_delta to be the change per step. You can control these from a USB or serial interface without too much pain. Just have your interrupt code set $interrupt_attn bit number $attn_bit. To do only a fixed number of pulses, set the bit $pulsate_control -> $fixed_num, and set $num_pulses to the number of half-pulses you want to do. IE, set it to 1 for a fade, 2 for a pulse, 3 for a pulse then a fade...

        In terms of hardware, you'd need the jack for the port, the power cord, a PIC chip, a transistor for each color, and a bunch of LEDs/resistors of each color. Easy stuff really. Let me know what you come up with. If you use USB, I'd be especially interested, as I have a Mac (no serial port). Good luck!
  • by wikkiewikkie (596205) on Tuesday March 18 2003, @12:14AM (#5534660) Homepage
    So I can easily keep track of the ever-changing terrorism threat level.
  • Simple stuff here (Score:4, Informative)

    by Froze (398171) on Tuesday March 18 2003, @12:23AM (#5534696) Homepage
    Get ahold of a cmos 4066 this chip has plenty of switching power throughput to handle a few leds. Hook the triggers to your parallel port and code a simple pulse width modulator routine to run the triggers. I don't know if the frequency you can achieve on a parallel port would be high enough to prevent flicker, but some capacitors should go a long way to smoothing that out, if not. You might want some current limitin resistors in there as well, so you don't burn out your leds.

    BTW, this is rudimentary circuit design in almost any college course. If you want to seroiusly get into building cicuits like this check out "The Art of Electronics" by Horowitz and Hill. Might be a little expensive but will give you a solid foundation in circuit design.
  • by Olmy's Jart (156233) on Tuesday March 18 2003, @12:26AM (#5534705)
    Having done some large castings in casting resin (clear and with opaque or translucent dyes), I can tell you that it's not all that simple to just cast a ball that size either. The casting material is going to be expensive to begin with. And if you don't get the hardner mix ratio just right, that stuff it going to crack and craze like crazy (split a few "paper-weights" in half). It gives off heat (from the chemical reaction as it "cures") which can damage really thick objects, like a 6 inch ball. I'd be willing to bet that what they have is not "hobbiest grade" casting material. It's more likely commercial grade plexiglass type material with a translucent dye added. It might not even be chemically cured like epoxy resins but may be cure thermally or by UV light (former - likely, later - possible but highly unlikely). Plexiglass resins become soft and pliable as you warm them (within reason - moderately high heat burns them easily) but casting resin does not - it cracks and crazes and shatters. The dye would be similar to the casting dyes you would get at a hobby shop. You MIGHT be able to cast a ball that size, if you are lucky, in casting resin but keep it away from large temperature changes and bright sunlight (which damages through both large temperature gradients and UV breakdown damage). You may find that this isn't a cost-effective "do it yourself project" after all.
  • Ah, glowing balls... (Score:5, Interesting)

    by nautical9 (469723) on Tuesday March 18 2003, @12:27AM (#5534718) Homepage
    ... yup, this is pure /. gold for jokes...

    But seriously, I've always wanted something like this for work. A simple status indicator whether the cluster of machines I'm responsible for is Working Fine (green), Having Issues (yellow), or Completely B0rked (red).

    Currently, I keep a persistent browser window open to a simple web-based script that checks on the status of everything and sets its background to one of those colors based on what it finds (it's quite a bit more verbose than just that should something be wrong, but that's not the point). This is fine and dandy for my use, but for the sake of being interupted during an emergency...

    It'd be really cool (and actually useful) to have a separate orb that glows the same color... so the next time my PHB runs in to tell me I forgot my TPS report cover sheet.. er.. to tell me that he's noticed a problem with the site, he'll first see the big red glow and realize I'm already aware of it.

    (that, and when I'm deep into a Quake match, and can't see the little window...)

  • Just imagine what you could do with one of these!

    Why, you could set it to blink green to notify you when ThinkGeek gets these things back in stock [thinkgeek.com]!!!
  • One easy method of doing what you describe is with some simple microcontrollers. Years ago I worked with Motorola 68HC11s using a serial interface. If you want to control LEDs, you should be able to hook them up directly without requiring relays. You could even adjust brightness by pulsing them quickly in software. Many modern microcontrollers have built-in serial port support as well as embedded flash and RAM.

    Of course controlling 8 relays or LEDs with the parallel port is much simpler.

    Since the parallel port output is basically just TTL levels, just buffer it through a 74LS244 or something similar and use that to drive the LEDs directly. You can directly control each of the 8 data pins on a parallel port by writing directly to the base I/O port (i.e. port 0x378 is the default for LPT1). It's easiest to use inverting output with TTL driving LEDs.

    Something like the following circuit:

    D0 ---|>---/\/\/\---| D0 = parallel port data pin 0
    |> is a buffer (i.e. 74LS244)
    /\/\/\ is resistor
    | (+5) is a 5 volt power source separate from the parallel port.

    Make sure that the ground pin of the parallel port is connected to the ground of your circuit. For the 5 volts, a 7805 is a simple solution when using a separate DC power supply.

    All of the above listed parts should be available at your local Radio Crap.

    When D0 is 0 (low) current will flow from the 5 volt supply, through the LED and resistor and from the buffer to ground. When D0 is 1 (high), no current will flow.

    When choosing a resistor, take into account the voltage drop across the LED. Blue LED's typically have a higher voltage drop than red or green. Red LEDs are typically around 0.7 volts whereas blue can be upwards of 3v.

    Also make sure that whatever buffer you use can sink the appropriate amount of current. Most LEDs typically will take up to 15-20ma of current. It might also make sense to use an inverter instead of a buffer since the above circuit will cause a LED to light when the data bit is 0. a 74LS04 is a cheap easy-to-use inverter chip that is readily available.

    With 20ma of current, choose a resistor based on the voltage.

    Use the basic equation, V = I*R, where V is voltage in volts, I is current (in amps) and R is resistance in Ohms.

    For example, for a red LED with 20 ma with a 5 volt source use:

    R = (5 - 0.7) / 0.020 = 215 ohms. Since resistors come in standard values, choose the next highest value, i.e. 220 Ohms.

    For blue, with a 3.6 volt drop you would use

    R = (5 - 3.6) / 0.020 = 70 ohms. The closest match is 68 ohms, but it's usually best to error on the side of caution so choose the next larger value.

    One thing you do not want to do is use the parallel port to drive LEDs or relays directly as you could possibly damage it. TTL outputs typically are not designed to output much current and are typically better at sinking current than sourcing it.

    Note that I'm no expert on this and I'm sure you'll see better solutions listed here.

    -Aaron

  • by morcheeba (260908) on Tuesday March 18 2003, @12:37AM (#5534755) Journal
    Quick answer: combine RJ45 web server [slashdot.org] with serial relay driver [maxim-ic.com] and presto!

    There are lots of these serial relay drivers ... google for it. They have all sorts of nice features (current limit, fault detection, cascadability and are controlable through the parallel port (you have to bitbang the data and clock bits). The webserver above has 3 general purpose I/Os - enough to control a relay driver.

    But, you probablly want an actual A/D converter [maxim-ic.com] (preferably with a current output) or a digital potentiometer. [maxim-ic.com] There are lots of mfgs of these products, but Maxim is pretty liberal with samples (plus they have some neat innovative products!)
  • by oaklybonn (600250) on Tuesday March 18 2003, @12:38AM (#5534760)
    I've been using the delcom usb chipset (http://www.delcom-eng.com/) on Mac OS X and Windows for doing various IO control things. Their eval board is very cheap and does the (trivial) amount of work to wire the pre-programmed USB chip to the usb cable, with some breadboard space to boot.

    The engineering staff has been good to work with as well.

    Also, they seem to sell a product almost exactly like what you describe, with bright LEDs in a diffraction grating, based on the same chipset. I don't know if it has quite the diffiusion you're looking for. (But it does have a buzzer!)

    Otherwise, my advice would be to use the parallel port (very easy to program, unless you're a mac user and you don't have one ;-) and don't use relays. In order to drive a relay, you'll need a transistor to switch the coils, and if you've already got the transistor, well, you can see where thats going!

  • by studboy (64792) on Tuesday March 18 2003, @12:39AM (#5534763) Homepage
    In these two projects, you hook up wire and sme stuff to the serial port. They both include circuit diagrams, theory (for modifications), and Linux software:

    - two LEDs and a switch [linuxfocus.org]

    - TTY control [sourceforge.net]: 7 buttons and 3 leds.

    I built a simpler version of #2 last week, and it was a lot of fun and very easy!
  • Sounds easy enough (Score:3, Interesting)

    by orz (88387) on Tuesday March 18 2003, @12:44AM (#5534775)
    I'm more of a CS than an EE, but having dealt with the hardware side a little bit, it sounds pretty easy:

    You can just steal or buy some testing / teaching equipment from the local EE department... I think things that can hook up to a PC and drive simple signals are common and cheap and allow software to interface with them trivially. My local EE department has hundreds lieing around, though I've never used one, and don't know what they're called.

    Or, if you want to build everything yourself, that shouldn't be too hard either. Get a cheap programmable chip (unless you know more than I do about a serial port... it might be possible to do with a simple non-programmable chip that just latches values from the pins at the right time). I used a PIC16F876 at one point... it's basically a miniature computer on a chip, with IO designed for interfacing with things in a programable manner... it worked well, and is cheap ~ $4 or $5 (and you can get them for free if you ask... they give away lots of samples to students). I think it had some built-in module for interfacing with a serial port, but if not that should still be possibly manually, with some assembly coding. The chip didn't have any digital-to-analog converters on it that I can recall, but with LEDs I think switching them on and off really fast for varying periods of time is better than driving them with an variable signal anyway. It also was not capable of driving as much current as I suspect you want, so you'll need external amplifiers, but a handful of discrete transistors works fine for that purpose (and is dirt cheap). The only thing I can think of that you might actually have to pay for is the power supply for the whole thing. And maybe a board to soder on.

    Hm... come to think of it, I don't know how to write out to the serial port on any OS more modern than DOS. But you can probably figure that out with a tiny bit of googling.
  • Portable? (Score:4, Insightful)

    by supabeast! (84658) on Tuesday March 18 2003, @12:55AM (#5534811)
    How about designing a portable version? I would gladly pony up a pile on cash for an orb that fits in my pocket, allowing me to track money, family, friends, and the health of my networks just by looking at the colors!

    This thing this where cool tech should be going. Make it small and wireless and you have a killer app.
  • Check out Circuit Cellar Magazine [circuitcellar.com] -- they are a steady stream of articles and advertisements covering just the thing you want to do.

    While you're reading it, also pay attention to PIC Chips [piclist.com] and Basic Stamps [parallax.com], which would be a great way to control your orbs without needing a PC (especially the cheaper PIC chips from someone like Microchip Technology [microchip.com])

    If you're married to the PC concept, you'll also find advertisements for devices which are controllable via USB. Kinda nice for furure serial-less PCs.

    Lastly, though it's a bit out of date at this point, take a look at "Controlling the World With Yor PC" by Paul Bergsmann (ISBN: 1878707159). Great stuff about parallel port interfacing.

    Good luck!
  • by fwc (168330) on Tuesday March 18 2003, @01:04AM (#5534844)
    All you need are the following:

    1) 25 PIN MALE DB Connector (like would plug into the parallel port) - OR, probably easier, grab like a 6' or longer 25pin Parallel Printer or extension cable and chomp the end which doesn't plug into the computer off.

    2) 8 superbright leds.

    3) 8 10K resistors.

    4) 8 2N2222 or other NPN transistors (Just go to radio shack and get a bulk package of "NPN switchint ransistors")

    5) 8 "smaller" resistors. Like roughly 500 ohm, but be prepared to experiment with the value. Lower value=brighter, but if you go too low you will burn out the LED. There *IS* a formula for the smallest permitted value. I won't go into that here.

    6) Perfboard to put it all on

    7) 9 or 12V DC wall-mount supply (or similar).

    A little background:

    The parallel port on the PC has 8 outputs, on pins 2-9 of the 25 pin connector. The ground for these are on pins 18-25.

    You can technically get away with just wiring the led directly to an output port, then to a resistor which then connects to the ground. Google for "parallel port led"

    However, it is likely that you will need more current than the parallel port will provide. For this you can use a transistor to act as a solid state switch.

    Here's a description of the schematic:

    For each output pin:

    1) Wire the output pin on the parallel port to one side of a 10K resistor.

    2) Wire the other side of the 10K resistor to the base pin on the transistor.

    3) Wire the emitter pin on the transistor to circuit ground.

    4) Wire from the collector pin on the tranmitter to the pin closest to the "flat edge" on the LED.

    5) Connect the other LED pin to the "smaller value" resistor.

    6) Connect the remaining pin on the "smaller" value resistor to the + wire of the power supply.

    ALSO, do the following:

    1) Connect the ground pins (18-25) of the parallel port connector to the "circuit ground" mentioned above.

    2) Connect the "-" wire of the power supply to the "circuit ground".

    You can test this before plugging into the computer by plugging the DC adapter in and then jumpering between the + wire of the power supply and each output pin on the cable you are going to plug into the computer. The corresponding LED should light.

    I'd recommend just doing the first led first to make sure everything works.

    NOTE: YOU CAN BLOW OUT THE COMPUTER PORT IF YOU DO THIS WRONG. I HAVE NOT CHECKED THE ABOVE DESCRIPTION SO IT MIGHT BE WRONG AND MAY CAUSE THIS EVEN IF YOU FOLLOW THE INSTRUCTIONS EXACTLY.

    If you need more LEDS on a given output (like 2 or 3 to get enough light), you can just connect a LED/resistor pair in parallel with the existing one (all of the LEDS are connected to the transistor, all of the resistors are connected to the + power supply connection, and each led is connected to it's own resistor).

    You basically drive this by outputting data to the parallel port. You output a single byte at a time - the most recent byte is what the leds are set to on or off.
    If you want to vary the brightness of the LED's you can actually do it by turning them on and off quickly in software. A simple timing loop which have the leds on 50% of the time would result in the leds being 50% dimmer than if they were just left on. Of course you have to do this fast enough so they don't "flicker" or blink.
  • The basic option (Score:3, Interesting)

    by Daniel Rutter (126873) <dan@dansdata.com> on Tuesday March 18 2003, @01:10AM (#5534856) Homepage
    People who don't care about their lamps having an IP address, and just want a hoopy colour-changing battery powered LED light thing, may be interested in the ones I reviewed [dansdata.com] (along with a variety of other LED lights) a while ago. There are a few products like this around now, but these ones are tough, and you turn them on and off by shaking them :-).
  • Color-Reactiveness? (Score:3, Interesting)

    by Bowie J. Poag (16898) on Tuesday March 18 2003, @01:19AM (#5534877) Homepage


    Now wait just a darn minute here..

    Using color to reflect the state of an object?

    Color-reactiveness? [linuxjournal.com]

    Oh wait, thats only for insane people! ;)

  • by Sowbug (16204) on Tuesday March 18 2003, @01:35AM (#5534921) Homepage
    Lotsa links here...

    First of all, the 2002 Burning Man project [sowbug.com] I did that involved a couple hundred RGB LEDs spinning in a persistence-of-vision-based nighttime animated display. Here [burningman.com] is the best picture of it. This [sowbug.com] is the page about the development details.

    The LEDs I used were manufactured by Kingbright [kingbright-led.com]. The model I used, the LF819EMBGMBC, is big (10mm) and relatively bright for an RGB LED. I couldn't find any U.S. retailers that actually told the truth about whether they stocked them, so I ended up buying 400 directly from Kingbright for I think a little more than $2.50 each. I still have a few left.

    Atmel AVR microcontrollers [atmel.com] are just a few bucks each, easily programmable with the STK-500 [digikey.com] programmer, also cheap at around $80. I used the ATMega8, which was more than sufficient for my needs. I imagine the original Slashdotter could use one of the ATTiny MCUs, since it really needs only 3 or 4 I/O lines (fewer depending on how many helper circuits you decide to use).

    The boards were manufactured by PCBExpress [pcbexpress.com] and I was very happy with them. The CAD/CAM software was Eagle [cadsoft.de], which except for some crashing/redrawing bugs was really amazing. The version I used was free. I tried to buy it but CadSoft has (had?) a fairly crazy pricing scheme that actually left you worse off in terms of acceptable usage if you paid them money than if you used the free version.

    The best part of using the Atmel MCU was that GCC can cross-compile [avrfreaks.net] for it. So you're basically writing regular old C code but it runs on a little tiny piece of silicon. You'll want to subscribe to the quite active avr-gcc [avr1.org] mailing list. Save every message from Marek Michalkiewicz; in my opinion he's the god of GCC-for-AVR development.
    • I've used something like this as well, except to drive relays that drive reset buttons on a series of machines at uni.

      I agree with hotair's use of the ULN2803 chip; however, I think you need a 74HC373 octal latch. Basically when you send a byte to the printer, you need the latch to "catch" the byte and hold it after the signal goes away. The latch is controlled by 1 of the printer control lines that goes low when the data on the bus is valid (I think it is the STROBE pin).

      If you want more than 8 leds, you