What it does
You can text Barry commands to make him do things:
- Go Forward
- Go Backward
- Turn Left
- Turn Right
- Say "something"
- Speak the Time
- Use Tv SFX "exterminate"
- Use Tv SFX Dalek Gun noise
Commands may be prefixed with an integer and will be repeated that many times
Some badly distorted amp inside will produce a janky audio signal that sounds vaguely like what it would sound like if a Dalek were to say "Hello, world!".
How we built it
We bought an old Dalek toy, took the bottom off, pulled most of the wires and PCBs out. Then, tried for a few weeks to solder everything back together (still is very temperamental - if the head is turned all the way to the left, the ears don't light up. Also, if you squeeze on it it seems to work better).
Then, we created a spider-web of wires with an amplifier module and a motor driver to let us interface with the speaker built into Barry's base and the motors. Of course, as nothing ever goes as planned, the motor driver had faulty connections and the Pi refused to output any audio signal.
We wrote a Python program to listen for text messages via Twilio, parse them using a regex, and relay the commands on to a robot driver program.
Challenges we ran into
- The LEDs in the ear wouldn't connect properly to their sockets, despite trying everything: resoldering multiple times, hot-gluing them in place, dremmeling out the head to re-do Barry's brain, etc for weeks. Still doesn't work very well and we have to adjust it loads.
- Because electronics never works as well as simulators say it should, our amplifier -> rectifier -> LED & capacitor circuit to turn the ears on in response to Barry's voice didn't work either. They would either constantly be on or constantly be off. It worked perfectly for about 15 seconds and then I breathed out and it broke again. We eventually decided to control the ears directly via GPIO.
- The wires broke off of the motors a few hours into the hackathon, but since we couldn't solder we had to wrap the wires around the pins, resulting in an even worse connection than before. Also, the motor driver would only work if we squeezed the headers towards each other, so I wrapped Sellotape around them to give it a constant squeeze.
- We brought two Raspberry Pis with us, but didn't have the foresight to actually check that they have Wi-Fi built in - they do not. So, we borrowed a Pi 4 from the MLH hardware thingy which ended up not working (after determining this through an hour of experimentation and several dongles and adapters). So, we used one of our ones but plugged in a Wi-Fi dongle which worked fine.
- When our motors stopped working, for some reason we opened up the gearbox. This caused springs to fly everywhere and the gears to come loose, which set us back quite a bit too.
- The raspberry pi wouldn't output an AUX signal for some reason. (EDIT: We didn't turn the volume up sigh)
Accomplishments that we're proud of
- It works, despite the numerous issues we faced
- It still looks like a dalek
What we learned
- How to use the Twilio API
What's next for Barry the Dalek
Instead of using a GPIO pin to control the ear light, create a circuit where the audio signal closes a MOSFET when there is sound, and have a capacitor in parallel with the LED to make it fade in/out
Separate the command/GPIO program from the Twilio integration and connect the two using UNIX domain sockets or similar so multiple interfaces can be used (eg a direct shell program for use over ssh)
Finally, we'll release him safely back into the wild once we're done with him.