Stream music anywhere in your house with these WiFi speakers

wifi_speakers

[Rui] needed an easy way to play music in several different zones from one centralized location, but he didn’t want to run any new wiring in the process.

He figured that the best way to do this would be to stream his music directly to his speakers over Ethernet. Earlier this year, he put together a handful of Ethernet-connected speaker nodes using a few Arduinos equipped with both Ethernet and MP3 shields. To interface with these speaker nodes, he wrote an application utilizing VLC’s network streaming engine. This software monitors his network for newly attached speakers, adding them to his inventory automatically. He can choose to play music on any set of speakers using a multicast audio stream.

The setup was pretty slick, but what about locations that didn’t already have Ethernet drops? He thought of that too, revising his design just recently. The newest set of speakers he constructed ditches the Ethernet board for a Wifly shield, all of which he crammed inside the speaker cabinets. Now, he has the ability to stream music anywhere he’d like, no matter what sort of infrastructure is in place.

If you have a need to do this in your home, [Rui] has made his software available for free on his site, so be sure to grab a copy.

Continue reading to see a short video of the speakers in action.

Comments

  1. tim says:

    Great idea, but I work for a hi-fi audio IC manufacturer so the poor sound quality is a real turn-off for me

  2. Jeremy says:

    I wonder how much much this project costs to stream 32kbps audio? I get that hacks are way more fun than buying something off the shelf, but in this case that would be better and probably cheaper. Apple’s Airport Express is $99 and streams CD-quality audio over Ethernet and wifi, and there are even open-source streaming apps now that will run on your OS of choice.

    On the other hand, I can’t point at my Express and say that I built it myself. Doing that was pretty cool. :)

  3. rasz says:

    all this could be replaced by TP-link TL-MR3220/WL-500G with USB sound card ….

  4. bogdan says:

    this is one step closer to those commercially available media players that cost…a lot. At some point i wanted to have music in the bathroom and decided to send the music via stereo fm radiov(there is a simple stereo modulator with an avr).
    That would be cheaper and simpler. now moving to ether/inter net, there is a way to make aj internet radio receiver with a router. that might still be simpler/cheaper.
    anyway, the best way to make things would be to make a device that can read a shared storage and not rely on streaming….

  5. lum says:

    Timing issues bwtn. channels and possibly other media(video/games) come to mind. You know sync and delay…

    Look into the AVB standards.

    http://en.wikipedia.org/wiki/Audio_Video_Bridging

  6. Randy says:

    Neat project – but it doesn’t look to be doing much in the way of buffering (unless the Ethernet library handles that). I think it’s actually transferring data from the Ethernet Shield to the MP3 Shield one byte at a time – and using digitalWrite to change the CS lines of the SPI devices.

    Using some of the ATMega’s RAM, or maybe adding one of those 32KB Serial SRAMs from Microchip, might help make higher bitrates work. There are probably some serious performance gains to be had replacing digitalWrite with a direct port write as well.

  7. cmholm says:

    The VLSI VS1053b decoder can handle high bit rates, and I believe the ATmega168 has the beans to move more data from the network shield to the mp3 shield. So, I’m guessing the 32kbps limit is a software issue, either in the PC server code or the Arduino.

  8. Ben Wright says:

    He still needs to provide power to the speaker location. I don’t see why it was easier to send the signal wireless and provide power at the speaker than to fish some wire in the attic to power
    the speakers.

    • Ryan says:

      The first annotation in the video states that the batteries used to power the speakers also power the circuit. Even if it did still require an external power source, this is still a much more portable solution.

  9. lwatcdr says:

    Why not us FLAC? Transcode the audio on the server to FLAC and then send the FLAC to the speakers. Flac is easy to decompress.

  10. bogdan says:

    from what i remember form some projects with ethernet a data rates of over 100kbps is achievable with an enc28j60, so there shouldnt be any problem achieving better quality. it might be a limitation with the arduino libs, they tend to be poor in terms of serious implementation.

  11. Sebastian says:

    I am using an FM broadcaster, and self build FM radios to stream music in my apartment – this way I can make sure that the buffering does not cause me pain.

    But I do lack the flexibility of having multiple zones.

    I love this hack – since it shows you that there is clearly no magic in those overpriced sonos boxes.

  12. james says:

    So (not including the wireless version) how much better is this compared to running speaker wire instead of ethernet cable?

  13. KingOfDos says:

    the best way to make things would be to make a device that can read a shared storage and not rely on streaming
    Who defines what’s “the best” for a specific location/setup?

    I’m using multicast for most of my audio and video, because it just works. This does matter when your streaming 7 TV channels to a network (and 8x radio + 2x ‘MPD’ = 10x radio).

    Oh, and the multicast stream can be restarted on the multicast-host (or temp. connection issues), without any issue on most clients. You’d see a flicker or still image for a few microseconds (or ‘no sound’ in case of radio).

    The best does not exist. Only the best for YOUR situation/requirements (and maybe knowledge).

  14. Hackerspacer says:

    How does this deal with the desyncing effect inherent in multiple speakers at various distances all playing the same sound at the same time due to the speed of sound through air, the delay induced by distance and echos / various speeds of sound wave reflection? Disney addressed and fixed that long go – you just hear a constant level of sound no matter where in the park you go (that has speakers). My method of solving the multiple speaker over ethernet problem was solved by using VLC but streaming (multicasting) over to individual atom based PCs. Yes, it somewhat like using an arduino to flash a led but damn it, $120 or so each CPU plus speakers gives you $200 or so per “speaker”. Plus you have the extra CPU available if needed for other things – and a full linux OS to boot. Takes more power to run though.

  15. Fozzy Bear says:

    That’s quite an IP STACK he has there!
    Wocka wocka!

  16. wvdv2002 says:

    If I had the time I would still like to try this using a PIC32, that microcontroller can decode MP3’s in software. You would need a wifi chip or use a PIC32 with build in ethernet controller. Output the decoded sound on two PWM channels with some low pass filtering. Cheap and reliable wireless sound. The PIC32 has enough RAM for buffering on chip enough power for decoding at least 192kbps streams.

  17. NATO says:

    My GOD, for all this work you get that crappy sound? How about just going and spending a few bucks on some decent wireles speakers? I mean, how much is your time really worth to you?

  18. umbongo says:

    i just did this with an openwrt usb router, a battery pack and a usb wifi card for the bathroom.

  19. DOT850 says:

    I’ve always wanted to know how complicated it was to do this. Very cool project!

  20. Tron781 says:

    I think this and the wired project are great, and people who crap on it are missing the point, you made something, while they bitched about this and that

  21. fireater989 says:

    What about those ethernet adapters that transmit your network through your wall power? You could just plug your speakers in and connect through that

  22. Marcus Chaves says:

    Where can I find the program code, this is exactly what I’m looking for. Thanks!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 91,307 other followers