I have a gaggle of Echo Dots scattered around my house and they are great for controlling lights, giving traffic reports, setting alarms and timers, and telling me how many ounces are in a cup. When it comes to playing music however, a poor little Dot has a hard time rattling the windows. So I thought to myself, perhaps I just needed a bigger Dot. Let project MegaDot commence!
Step 1: Not Really Available on Amazon
Step 2: Plan the Overall Design
I decided that I wanted to make a pretty faithful upscale of my Echo Dots, not just a simple amplified speaker. My plan was to gut an old amplified subwoofer and pair of speakers I had laying around, build a new Dot shaped enclosure just big enough to hold those, recreate the LED ring and buttons, and embed a real Dot to provide the core Alexa functionality. The new LED ring had to faithfully reproduce the patterns from the embedded Dot, and the giant buttons had to be fully functional as well. This meant that I would be opening up the Dot to gain access to some of its internal signals, and adding an embedded controller for the LED ring. In the end I settled on a slightly over 8:1 scale for my MegaDot.
Step 3: Void Your Warranty
Once you accept that you won't be returning your Dot to Amazon, break out a small flat head screwdriver or knife and pry off the rubber bottom of the Dot, followed by the plastic insulator. Then remove the four torx screws holding the enclosure together. Carefully remove the internal assembly, consisting of two PCBs and a heatsink. Carefully disconnect the flex circuit from one of the PCBs (flip up the little lever and slide out the flex circuit) in order to separate them from the heatsink. To make sure you haven't already broken the Dot (a real concern I had), reconnect the flex circuit, plug in power, and ask Alexa a question. You won't hear a response (the speaker is still in the main enclosure) but you can see if the LEDs light up appropriately.
Step 4: Solder Some Tiny Wires
I spent a bit of time reverse engineering the IO board (the one with the buttons, LEDs, and microphones). There is an I2C LED driver chip controlling the 12 RGB LEDs. The manufacturer appears to be ISSI. We'll need access to the I2C bus to monitor the intended state of the LEDs. The buttons simply short their respective IO line to ground to indicate a press, so we will need access to those four lines as well. Finally, we need a ground line to properly reference the signals to our embedded controller and giant buttons. I soldered the seven tiny wires to the itty bitty parts/pins on the board and strain relieved them with a little hot glue. I terminated them to a screw terminal strip to make testing and final assembly easier and more robust.
Step 5: Tear Apart Your Subwoofer and Speakers
I had an old 15", 250W powered subwoofer to donate to the cause. I pulled the speaker and electronics, and set the old enclosure aside. I also had an old pair of 4.5" bookshelf speakers, and took those apart as well. Since those weren't powered, I ordered a simple stereo amplifier board to drive these (along with an appropriate power supply). A quick custom cable later, and I could drive all the speakers from the Dot's audio output jack. Of course they sounded pretty awful sitting loose on the table, but that would get much better once mounted in their soon to be built enclosure.
Step 6: Recreate the Light Ring
Internally, the Dot's processor communicates with the LED driver via I2C. I needed to monitor these transactions, recreate the register map, and expand the original 12 RGB LEDs out to the 128 RGB LEDs on the now much larger LED ring. I chose a programmable LED strip based on the WS2812 driver IC. It uses a simple one wire protocol to control the LEDs. A short pulse is a zero, a long pulse is a one, and after shifting out all the bits (3,072 in my case as there are 128 RGB LEDs, and each color uses 8 bits) you drive the line low for a longer pulse to latch the values. I prototyped the logic using a National Instruments NI ELVIS III, which includes traditional instruments (scope, DMM, etc.) for debugging and a user programmable FPGA for snooping the I2C and driving the one wire protocol. For deployment I used a National Instruments myRIO, since it is physically much smaller but can run the same LabVIEW FPGA diagram. I connected the myRIO DIO lines to the two I2C wires I previously soldered into the Dot, and one to the control line of the LED strip. I had to buy yet another little power supply for the LED strip.
Step 7: Create Some Giant Buttons
For some reason no one seems to sell giant buttons for upscaled Echo Dots, so I had to make my own. The moving portion is a simple piece of MDF on a hinge. I 3D printed a frame that served a few purposes: it limited the travel of the hinged MDF, held a captive compression spring to return the hinged portion when released, and gave me a place to mount a standard microswitch. These microswitches connect to the wires I previously soldered into the Dot. They act in parallel to the dome switches built into the Dot.
Step 8: Build the Main Enclosure
I started with a plywood base to hold the down-firing speakers (I know, side firing would sound better but that isn't how a real Dot is built). I wanted independent chambers for each speaker, so took apart an old shelf and started kerfing away. The shelves work great for kerfing because the laminate surface holds things together even if the wood cracks at a kerf. This let me create curved chambers around each speaker, maximizing the utilization of the interior space. Lots of hot glue and screws were used to hold things together and reduce air leakage and vibration. The speaker amplifiers and power supplies then got packed in around the chambers. Once all of that was mounted, I had to create the outer skin. I soaked some 1/8" plywood in water for an hour, then bent it around the frame. I left it clamped overnight, and the next day screwed and epoxied it into place.
Step 9: Build the Enclosure Top
I decided there really wasn't a good way for me to cut out the enclosure top by hand and have it come out looking right. Fortunately, my nephew has a hobbyist CNC machine. I drew up a quick design and a couple hours of cutting later I had a great looking top and engraved set of buttons. The remaining electronics and the Dot all mount to the underside of the top. Note the small holes in the center of the top, that is where the Echo Dot mounts. The holes allow sound to make it to the microphones, as well as light to the ambient light sensor. I removed the upper portion of the Dot enclosure so that it could be mounted directly against the top. I made lots of little compression brackets to hold everything in place. The LED strip comes in a rubber sleeve that is virtually impossible to attach with adhesive. I finally decided to cut up some file folders and glue them around the edge creating a little shelf for the strip to rest against when turned over. Time to place the top on the main enclosure and see how everything sounds!
Step 10: Find a Sturdy Cocktail Table
Coming in at 62 pounds and 27" in diameter, I couldn't just set MegaDot on the corner of an end table somewhere. It's not exactly subtle, but it does make for a great conversation piece. The audio sounds great, with plenty of bass from the 15" subwoofer, crisp midrange from the 4.5" speakers, and clear highs from the 1" tweeters. All of this while retaining the full functionality of an Echo Dot. Now when I ask how many ounces are in a cup, everyone downstairs can hear the answer...