This project repurposes an old toy trivia game robot named 2-XL as a new face and voice for the Amazon Echo Dot.  Vintage 2-XL units can be found used in thrift stores/ebay/etc - but the main idea here could easily be applied to other retro robot toys and similar items.

We'll replace 2-XL's innards with a Metro Arduino-compatible board, a Wave Shield for generating audio, and an Adafruit Proto Shield to accommodate a simple audio input amplifier.

The project uses code from Phil B's excellent Voice Changer guide.

How it works

Audio

The audio signal is sent from the Echo to the amplifier, and then from the amplifier to the Analog input of the Metro.  The Metro then applies a pitch shift effect to the audio signal and outputs it via the Wave Shield's built-in DAC.  The signal is then sent from the Wave Shield to the preexisting speaker in 2-XL's chassis.

LEDs

Both LED eyes are controlled by a single pin on the Metro which allows them to be synchronized with the audio output.

Buttons

The four buttons on 2-XL's front panel are wired to digital pins on the Metro, which allows them to trigger playback of audio samples stored on the Wave Shield's SD card.

Power

Power is sourced from 2-XL's front panel jack and is turned on/off using the switch built into the preexisting volume pot. The volume potentiometer is not used in this guide but audio output could be wired through it if you prefer.

Caveats

Worth noting:

  • Echo's mics are unable to here new commands while it's voice is being output through the voice effects generated by the Metro.
  • Mounting the Echo inside 2-XL would have been preferable - but because of its built-in near-field microphones, the Echo needs to be mounted on the outside of the 2-XL enclosure.

What you'll need

Disassembly

First we'll open up 2-XL's enclosure - be sure to disconnect power and remove any cassette before starting. Remove the 12 screws on the back, put them aside for later use, then carefully open the enclosure.

Remove internal organs

To accommodate our new functionality, we'll need to remove 2-XL's 8-track cassette player and button assembly.  Desolder its wire connections, remove any screws and slide the carriage and button assembly out of the enclosure.

If you think you might want to restore 2-XL's original functionality in the future, be sure to label each wire during removal (taking reference photos is helpful as well)

LED eyes

The original LED eyes are dim compared to common 3mm LEDs available today, so we'll give them an upgrade as well. Desolder the wires connected to the eyes and then unscrew and remove the face plate.

Power Connections

Finally, desolder the remaining wires connected to the power jack and volume potentiometer. We'll wire power for the Metro to through these points later on.

Shield Assembly

2-XL's new brain will be a stack of the following three boards:

  • Proto Shield (for preamp circuit) w regular male headers
  • Wave Shield with female stacking headers
  • Metro 328 with female headers

For easier wiring, we want the Proto Shield to be on top of the stack, Wave Shield in the middle, and Metro on the bottom. To accommodate this arrangement, we'll need to assemble the boards in a specific way …

Header Swap

projects_male-and-female-headers.jpg
example images of male headers (left) & female stacking headers (right)

The Proto Shield kit includes stacking female headers which we'll solder to the Wave Shield.  We'll then take the male headers from the Wave Shield kit and solder them to the Proto Shield.

So, to assemble these two boards:

  • Follow the Proto Shield's guide - but solder regular male headers pins to the PCB, and omit the 6-pin ICSP male header.

  • Follow the Wave Shield guide - but solder stacking female header pins to the PCB.

Preamp circuit

The Echo's audio out signal is a bit too low for usage on the Metro's analog inputs.  To remedy this, we'll boost the signal using a simple audio amplifier circuit built on the Adafruit Proto Shield.

projects_2xl-preamp.png
preamp schematic

The amplifier uses a classic LM386 audio amplifier IC along with some resistors and capacitors.

While we're at it, we'll also include two additional resistors which will be used for connecting to 2-XL's facial LEDs:

projects_2xl-facialLEDresistors.png
ground connections with resistors for Power LED & Eye LEDs

Layout & Soldering

projects_proto-shield-layout1.jpg
suggested component arrangement for building preamp on Proto Shield

Using the above layout, mount all the components on the Proto Shield and solder them in place. Solder additional connections (show in green above) on the underside of the board using spare leads or solid core wire.

projects_2xl---proto-solder.jpg
this is me soldering

Next, use solid core jumper wire to make the remaining connections on the top side of the board (seen below in pink).

projects_proto-shield-layout2.jpg
connections to be made on the top side of the board using jumper wire

We'll be soldering more connections to the Proto Shield and Wave Shield later on, but first we'll tend to some software tasks …

Code & Programming

2-XL's new brain will be comprised of code adapted from the Wave Shield Voice project.  Download the code for the 2-XL Echo project from Github here:

Unzip the downloaded file and open the echo_2-xl.ino file in the Arduino IDE.

Install WaveHC library

To enable playback of wav files, download the WaveHC library for Arduino here and install it.  If you're unfamiliar with installing Arduino libraries, check out our tutorial here.

Once the library is installed, make sure everything is working by compiling the sketch in the Arduino IDE by choosing Sketch->Verify/Compile from the menu 

Upload to Metro

In the Arduino IDE, set the target board for Adafruit Metro by clicking Tools->Board->Adafruit Metro. If you don't see Adafruit Metro as an option, go here to install support for Adafruit boards. Next, choose the correct port for your board from the Tools->Port menu.

Connect the Metro to your computer via USB and upload the sketch using the Upload button in the upper left hand corner of the window.

Sound files

We'll use an SD card loaded into the Wave Shield to play audio samples. You can use the 2-XL samples I recorded - available here:

Make sure your SD card is formatted for FAT16 or FAT32 file system and place the sound files in the root directory. When you're done, insert the SD card into the slot on the Wave Shield.

Enclosure Wiring

In this step, we'll take care of the wiring which involves components mounted in the enclosure.  This will result in a lot of loose wires which we'll connect to the Metro/Wave Shield/Proto Shield stack later on.

To avoid confusing wires later, bundle each set of wires using a piece of electrical as you finish each step.

Button assembly

We'll use the 4 pushbuttons we removed from 2-XL's front panel to trigger sound samples.  But before we can wire them, we'll need to remove the PCB they're attached to.  Use a desoldering pump to desolder all the pins of the pushbutton assembly.  Once all the pins are free, remove the PCB from the pushbutton assembly.

Strip the insulation from a long piece of solid core wire and solder it to the middle row of pushbutton pins as seen below - this will be our connection to ground on the Metro.

Strip and tin five lengths of stranded wire and solder them securely to each pushbutton bottom pin.  If possible, use a different color wire for each button and black for the ground bus connection.

Once the buttons are wired, mount them back in the enclosure using the original screws.

Speaker

Next, we'll connect 2-XL's internal speaker to the output of the Wave Shield. Strip and tin two lengths of stranded wire and solder them to the speaker.  Use a light color wire for the speaker's positive terminal connection and a darker color for the negative terminal.

Power jack & switch

2-XL's preexisting power supply is capable of powering the Metro, so we can use it to power our project. We'll also use the switch in 2-XL's volume potentiometer to turn power on/off.

Route the power jack's ground connection from the jack's sleeve terminal to the potentiometer's switch using black wire stranded or solid core wire. Solder a longer piece of black stranded core wire to the remaining switch terminal and a long piece or red wire to the jack's positive terminal - these last two wires will be supplying power directly to the Metro.

Upgrade Eye & Power LEDs

Next we'll replace 2-XL's eye & power LEDs with brighter modern versions.  The Power LED will stay lit as long as the Metro is on. The two eyes will be wired in series and will flash in sync with the audio output.

The LEDs are held in place with melted plastic retainers.  These are relatively easy to remove by rocking from side to side until they're free from the white faceplate.  Remove each retainer, replace each LED with a new red 5mm LED - orient them with the shorter lead (negative/cathode) to the left and the longer lead (positive/anode) to the right.

Press the retainer clips back in place and bend each LED's leg outward. Bend the tip of each lead at a right angle to provide a hook for wires during soldering.

To wire the eyes in series, solder a short piece of wire connecting the anode of 2-XL's right eye to the cathode of the left eye. Solder long pieces of wire to the remaining LEDs as seen below.

Audio input

To get audio from the Echo to the preamp inside the enclosure, we'll mount a 3.5mm jack on 2-XL's back. If you don't have a panel mount jack, you can cut one end off of a 3.55mm audio cable, feed the cable through the hole in the back of the enclosure, and wire it directly to the preamp input.

To accommodate the jack we can widen one of the screw holes which was used to keep the 8-track assembly in place. Use a 6mm drill bit to drill out the hole til the jack fits snugly.

Mount the audio jack in the drilled hole and solder stranded wire to it's sleeve and tip terminals. Ground will connect to sleeve and the left audio channel will connect to the tip.

Metro wiring

Now we'll connect all those enclosure-mounted component wires to the 2-XL's new brain.  Two wires will be soldered to the Wave Shield, the rest will be soldered directly to the Proto Shield.

Audio Output from Wave Shield

Solder the speaker wires to the Wave Shield's audio output pads located near it's 3.5mm output jack.  Wire the positive connection to the pad next to the electrolytic capacitor and the negative connection to the pad near the edge of the board (see reference above).

Audio Input to Proto Shield Preamp

Solder the positive/signal connection from the 3.5mm input jack to the positive lead of leftmost 100µF capacitor on the Proto Shield (see diagram).  Solder the ground connection from the audio input jack to an available ground pad on the Proto Shield.

Button Connections

Solder the ground bus from the pushbutton assembly to an available ground pad on the Proto Shield. Solder each button wire to its corresponding pin pad on the Proto Shield:

  • Button 1 to pin 8
  • Button 2 to pin 9
  • Button 3 to pin A2
  • Button 4 to pin A5

LED Connections

Solder the power LED's positive wire to the 5V pad on the Proto Shield.  Solder the power LED's ground wire to the 150Ω resistor.

Solder the positive wire from the eye LEDs to the Analog 1 pad.  Solder the eye LEDs' ground wire to the 56Ω resistor.

Assembly & Usage

Assemble the shields by mounting the Wave Shield on the Metro, and the Proto Shield on top of the Wave Shield.

Use double sided foam tape or adhesive velcro to mount the Metro stack in the base of the 2-XL enclosure.

Close it all up

Carefully close the body back up while making sure not to pinch any wires in the process.  Screw the enclosure together using the screws we removed earlier and make sure everything feels secure.

Mount the Echo

Use adhesive velcro tape to mount the Echo Dot on the upper back of the 2-XL.  The tape I had didn't stick well the Echo Dot's rubberized base, so I peeled the rubber layer off and applied it directly to the exposed plastic beneath.

Connect the Echo's power supply and use the 3.5mm audio cable to connect Echo's audio out to 2-XL's input jack.

Use It

Connect 2-XL's power supply and power him up by turning the volume pot. On startup, the power LED should light up and a voice sample should play with synchronized eye LEDs. Use the Echo as you would normally - the weather, your shopping list, and even the news will take on a more chipper, robotic persona :)

This guide was first published on Aug 31, 2017. It was last updated on Aug 31, 2017.