Build a box for the head. No, really, we used a box-making website for a laser cutter box and then modified it to have uneven sides. We will upload our STL files that we used for laser cutting. There is absolutely no reason why you can't make this box out of cardboard or whatever material you have lying around. You will need to decide what size mouth you would like and make sure to cut it out. We found it super handy to be able to take the head off to access the lights embedded in the head.
Construct the base and the neck. Yet again, we simply used a laser cutter and box-making software to make a base to hide all of the components (Raspberry Pi, Speakers, Microphone). Make it about twice the length of the box. For the neck, you can absolutely get creative here and use anything you find inspiring. For us, we used a 3D Printed sculpture from Thingiverse, Sculpture #08.
Add Tubing for Lighting. Yet again, this can be as creative as you want. We were a bit conservative with lighting. I acquired some wide, transparent acrylic tubing from a hardware store for about $7 that was perfect for the Neopixels. Cut holes throughout the base and the box for the tubing and then, for further points (and possibly better structure), use some sort of putty or sealant around the tubes.
Bring out your Neopixels! Okay, so now we get the WS2812b LED Strips and get testing. It will help you to fish them through the tubing and then cut them at the right lengths. Once you have every segment cut, you will need to solder some wires from each strip to the next in order to have them be controlled as one strip. In our case, we had one segment that was off on it's own part of the box and we had to run wire on the back side of the LEDs to connect it to the next segment. Don't worry, if you spray paint the tubing, no one will ever know!
Set Up Your Pi. So, the Raspberry Pi functions as the platform for our project. It will take inputs from a USB-dongle attached microphone and produce outputs through a speaker and the Neopixel strips. To begin this process, we need to first set up our pi to:
- Run Raspbian - https://www.raspberrypi.org/documentation/installation/installing-images/
- Connect to our local wifi network - https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md
- Use USB audio output
- I had to comment out dtparam=audio=on from /boot/config.txt and restart in order to get it to read from USB.
Install and Configure Festival TTS.
sudo apt-get install festivalWe installed a custom voice to get a British accented voice and made some custom configs in our .festivalrc file to get the voice to be deeper, but it can simply be used with the default voice in festival. To test out the voice, use:
echo "You are the weakest link, goodbye" | festival --tts