Close
0%
0%

A Workbench Companion, from an Amazon Echo Dot

Amazon's Echo device is a boring workbench accessory, so we gave it some animatronic eyes and a CRT mouth. Now my kids won't leave it alone!

Public Chat
Similar projects worth following
Amazon's Echo Dot device is all well and good for playing music in the kitchen, but as a workbench companion she's a bit boring. I still can't get past the fact that I'm talking to a small black hockey puck. Where is its personality? Where is its soul?!

My goal for this project was to build on the Echo platform to create something that feels a bit more like the robot creatures we all saw in the movies growing up. I'm talking about R2D2 and Johnny 5, and Max from "Flight of the Navigator." These weren't just computers, they were computer *creatures*—and they were exactly the kind of tech that we wanted in our lives!

So join me as we use some animatronic eyes, an Arduino, and a screen from an old television to try and make the Amazon Echo feel a bit more . . . alive!

Check out the full build video!

Parts and Tools

Parts:

  • 5" B&W CRT television
  • Amazon Alexa Echo Dot (3rd gen)
  • M2, M3, M4 screw assortment Amazon
  • M3 and M4 brass standoff assortment Amazon
  • 4x rubber feet Amazon
  • 2x TDA7297 12V audio amplifier Amazon
  • Adafruit 16-Channel 12-bit PWM/Servo Driver Amazon
  • 3.5mm audio splitter Amazon
  • 3.5mm male-male audio cable Amazon
  • Arduino Mega 2560 Amazon
  • Useful Sensor Sparkfun
  • Sparkfun Qwiic I2C connectors assortment Amazon 
  • 4.5mm clear acrylic, laser cut to designs
  • 5V 8A switch mode power supply
  • 2x DC-DC Boost Converter (5V-to-8V and 5V-to-12V) Amazon
  • C14 Male Power Socket with fuse and switch Amazon
  • Acrylic paint set, 24 colors Amazon
  • 3" speaker
  • 2x 12V 5.5mm x 2.1mmfemale female plug jacks Amazon
  • Elenco solid core hook-up wire kit Amazon
  • Elegoo Dupont wire assortment Amazon
  • Blu-Tack Reusable Adhesive Amazon
  • 30awg copper wire, various colors Amazon 
  • 6x SG90 servos Amazon
  • single-sided proto board, various sizes
  • Epoxy Resin for Clear Casting and Coating (for eyes) Amazon 
  • 3:1 Heat Shrink Tubing assortment Amazon

Tools:

Portable Network Graphics (PNG) - 223.22 kB - 08/05/2023 at 15:38

Preview
Download

Alexatron_MkI.ino

Arduino code

ino - 9.56 kB - 07/12/2023 at 21:56

Download

Plans for Base.dxf

Plans for laser cutting acrylic sheets for the chassis

AutoCAD DXF - 2.81 kB - 07/12/2023 at 20:42

Download

Plans for Layer 1.dxf

Plans for laser cutting acrylic sheets for the chassis

AutoCAD DXF - 4.69 kB - 07/12/2023 at 20:42

Download

Plans for Layer 3.dxf

Plans for laser cutting acrylic sheets for the chassis

AutoCAD DXF - 3.34 kB - 07/12/2023 at 20:42

Download

View all 6 files

  • 1
    Adding animatronic eyes

    I believe that the secret to creating truly meaningful human-computer interaction is to create some sort of emotional experience for the user. If we can make the user forget, even for just a few moments, that they are speaking with a computer—if we can inspire them to suspend their disbelief—then they will engage much more deeply with the machine.

    For our creature's eyes I used a 3D-printed animatronic eye mechanism designed by Will Cogley, which is a fast and relatively simple method for getting up and running with just a handful of parts. The eye movement and blinking are controlled by an Arduino via a 16-channel 12-bit PWM/Servo Driver from Adafruit. I originally used an Arduino Nano for this, but I accidentally destroyed it by sending it too much voltage, so I ultimately switched to an Arduino Mega 2560. (An Arduino Mega can analog sense up to 5V per pin, while an Arduino Nano can only handle 3V—more on this later.)

    The eyeballs were also 3D printed. I then sanded them and painted the iris pigmentation using acrylic paints. I originally made a silicone mold so that I could coat the eyeballs in a glossy resin (as recommended by this wonderful tutorial), but I had to change plans when I accidentally warped the shape of the eyeballs by applying too much heat (heat is necessary to purge air bubbles from the glossy resin). So instead I settled for applying a few drops of glossy resin only on the irises, which gave them just enough reflectivity to create a realistic effect. This small detail—a glint in the eye—is so important to give the illusion of life.

    I used a dedicated 5V, 8A power supply to power most of the components of this build: the Arduino, the six SG90 servos for the animatronics, the person sensor, and the amplifiers, but not the CRT or the Echo device itself (the Echo wouldn't operate without its own power supply, for some reason). The servos consume by far the most current, and this required a robust power supply. I originally tried to use a 3A power supply, but it just wasn't powerful enough and let to a lot of servo jitter. After I changed power supplies, allocating 1A per servo, the jitters went away. I used a boost converter attached to the same 5V power supply to generate 8V for the Arduino, and a 12V boost converter to power the two amplifiers.

    I wanted the eyes to always maintain eye contact with the user, and to do this I used a Person Sensor to track the user's face. This was a very convenient solution that was almost "plug-and-play." This sensor requires SparkFun's Qwiic cabling system to connect, and I ended up buying a Qwiic cable pack that includes a Qwiic-to-Dupont breakout cable so I could more easily integrate it with the Arduino. The Person Sensor works remarkably well for a $10 piece of kit, but its small design unfortunately didn't include any pin holes or screw holes to mount it to your build (pin holes have been added to more recent versions of the Person Sensor ). I ended up using a blob of Blu-Tack to stick it to the front of the animatronic eye module, which is fine for a prototype but not reliable in the longterm. A 3D printed mount that the sensor module could slide into would have been a better solution.

    I've been asked several times why I didn't just use a digital set of eyes on an LCD screen instead of the clunky, noisy animatronic mechanism. The answer is simple: I'm trying to inspire the user to forget that they are talking to a computer. Digital eyes on a screen would have been much simpler to build, but a real, moving, tangible set of 3D eyes does so much more to create the illusion of sentient life.

  • 2
    Hacking the Amazon Echo device

    The first few seconds of contact between user and machine are so important for establishing the relationship, so I really wanted this to be a very powerful moment. To do this I programmed a "wake" sequence that would initiate when the user calls the creature's name: from a dormant state with closed eyes, the creature blinks to life, looks around, and then immediately engages the user with eye contact. The Alexa platform allows you to choose from a short list of "wake words," so I changed the wake word from "Alexa" to "computer." I would have liked to customize this name, but that's just not possible yet with the Alexa platform.

    Another major limitation of the Alexa platform was how it uses the wake word: you must first say the wake word and then give it a command. This is annoying, as I wanted the creature to wake up as soon as it hears its name, as any living creature would (I didn't want to have to say, "Computer, wake up!", but rather just "Computer!"). After some investigating, however, I realized that the LEDs on the Echo device light up as soon as it hears the wake word. After probing around inside, I found a point on one of the Echo's boards where the voltage drops from 2.5V to 1.1V when the LEDs illuminate.

    I soldered a thin jumper wire to this point and connected it to one of the analog pins on the Arduino, and also connected the Echo's ground to the Arduino's ground. I then added a few lines of code to the Arduino script so that it constantly monitors that voltage signal: if the voltage on that line drops below 2V, the Arduino then initiates the wake sequence for the eyes (if the eyes were in a dormant state). With this little soldering hack we were able to get our creature to respond to its name in a more organic way.

    This hack worked well during testing with my Arduino Mega 2560, but when I was putting it all together for the final build I used a smaller Arduino Nano, and this posed problems. I couldn't figure out why the Arduino had stopped working. The reason was that when the Echo device is first powered on, it sends an inrush voltage on that same jumper line that is around 5V. An Arduino Nano can only handle 3V, so it fried the Nano completely. I thought about making a voltage divider circuit to reduce the voltage so I could continue using an Arduino Nano, but I was so eager to get our creature up and running that I just slapped in my Arduino Mega 2560 instead. This solved the problem, but visually wasn't quite as elegant.

  • 3
    Modifying the CRT to visualize the robot's voice

    Another key element to making this device seem more "alive" is giving it a mouth that moves when it speaks. I'm a huge fan of CRT of televisions (you can check out some of my CRT restorations here and here), so for this project I converted a small 5" B&W CRT television into an audio waveform visualizer. If you want to learn how to do this, be sure to check out my separate tutorial on building a CRT audio waveform visualizer.

    To get our creature's voice into the CRT, I plugged a 3.5mm splitter into the audio output port of the Echo device: one line connects to an amplifier and speaker, the other line connects to an amplifier and the CRT. To power these amplifiers I used a 12V boost converter attached to the 5V power supply. Each of the amplifiers has a potentiometer to adjust the output: for this project, one controls the volume of the sound coming out of the speaker, the other controls the amplitude of the waveform that we see on the CRT screen.

    I completely removed the television board and CRT from its chassis. To conserve space, I also desoldered the turner module and the radio board from the main board of the television. These were both mounted vertically, so removing them allowed me to significantly reduce the size of the board. This would become very important later in the build.

View all 5 instructions

Enjoy this project?

Share

Discussions

Lidia wrote 01/20/2024 at 13:48 point

En el código de Arduino me están dando errores, no encuentro que librería hay que meter para el sensor de persona. Además de que hay cosas sin declarar y me dan como erro. ¿Podrías ayudarme con ello?

  Are you sure? yes | no

rocknbarc wrote 08/02/2023 at 16:42 point

Very nice build ..  would enjoy building something like that myself ..  Unfortunately I dont have all the skills or personal time needed for that type of construction ..   Yet great job and hope you can change the Amazon platform to something a bit more realistic to make it more alive and functional.  I would have thought the eyes could control a lazy Suzan of some sort  to allow it to follow you if were to walk around. 

  Are you sure? yes | no

Matthias Boesl wrote 07/19/2023 at 22:02 point

The DXF files can be found and modified here too now for convenience https://cad.onshape.com/documents/2091fa76471a06572dfe1918/w/5e5745c8ce2cfbf1f437581f/e/fcefb5ce957fda6a3e49d1b9

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates