talkiepi is a wifi "walkie" talkie for your kids and their friends. It provides a very simple "push to talk" interface. When you push the button and talk, all the other talkiepis in the channel will hear what is being said.
talkiepi uses Mumble for its voice communication protocol. Mumble is an open source, lightweight, high quality voice chat system designed for use by PC gamers. Mumble lent itself perfectly for this use case. There are already software clients for all platforms (Mac, Win, Linux, IOS, Android), meaning you can talk with your talkiepi using your phone or computer, and you're not limited to just talkiepi devices! By utilizing Mumble channels, user registration, and access control lists, you can configure different groups of talkiepis, just like using different channels on a traditional walkie talkie.
talkiepi is built utilizing a Raspberry Pi, USB speakerphone, some basic electronic components, and a 3D printed enclosure. talkiepi runs a mumble client that has been designed specifically for push to talk via the push button interface. After it is setup on your wifi network and the software is configured, talkiepi will require little to no maintenance to use.
talkiepi software on your Raspberry Pi
I have written an overview of the software and hardware interface at the github repository for talkiepi. An install guide can be found at https://github.com/dchote/talkiepi/blob/master/doc/README.md, which will step you through installing talkiepi on your Raspberry Pi.
On September 10th there was a pull request against the go-openal library that broke things on Raspbian Jessie, I have since forked the library and reverted the changes. talkiepi now uses my fork of the library and should now build again
I have added some notes regarding my wifi trouble on the rpi3 here.
Building a talkiepi
Build without an enclosure:
You can assemble a talkiepi with or without the 3D printed enclosure. I initially prototyped the GPIO stuff on a breadboard, and that would be more than sufficient to play with if you didn't want to commit to a full build.
Print an enclosure:
If you want to do a full build of talkiepi you can download the 3D models from the github repository. I printed my parts on my Monoprice Select Mini 3D Printer. I printed in PLA with 100% infill. You will need to rotate the models to print, but if you already have a 3D printer, you probably know what you need to do. If you don't own a 3D printer yet, there are many services that will print and mail you your parts!
- Raspberry Pi 3 Model B ~$35
- Micro SD Card
- US Robotics USB Speakerphone (USR9610) between $4 and $12 (really cheap)
- Short right angle / left angle mini USB cable
- 5 x M3 nylon screws + 1 M3x20 nylon standoff
- GPIO header connector (there are many options for this)
- 2 x 5mm LEDs with 5mm LED holders
- Pushbutton with LED
- 3 x 330ohm resistors
- 2 x M3x15 + 2 x M3x25 stainless bolts (for the case)
- 2 x M3x10 stainless bolts + nuts (for the speaker)
- Hookup wire + heat-shrink
The GPIO stuff
The GPIO interface usage is actually very simple. It is a push button with 2 separate LEDs for status indication and 1 LED within the push button that illuminates when it is transmitting.
You can use any type of header connector. I initially used one of these, but using smaller connectors (such as a 8 pin for the LEDs and a 2 pin for the button) makes it easier to fit and assemble.
Solder the 3 resistors to the ground pin, and solder your positive LED wires to the other pins.
Solder your negative LED wires to each of the resistors.
Slip on heat-shrink to protect from shorting. I put a larger piece of heat-shrink around all the resistors to keep them in a nice solid bundle.
Next up put together the button GPIO connector, you can either solder this on to your larger header, or like me, use a smaller 2 pin connector on pins 20 and 22.
Solder the 2 status LEDs on to their respective leads. Don't forget to slip on the LED holder boots and the heat-shrink before you solder!
The USB speakerphone
Taking the speakerphone apart is really simple. There are two screws hiding under the rubber feet and two more screws holding the speaker in place.
Leave the foam on the microphone; the talkiepi case actually utilizes that to hold the microphone in place.
I designed the enclosure to accommodate the Pi3 and the US Robotics speakerphone PCB specifically. Once you have printed the enclosure parts, I recommend you get a 3mm tap and tap the holes. If you don't have a tap, you can use one of your stainless bolts (carefully avoiding stripping out the holes).
Attach the right/left angle USB cable to the bottom right USB port of your Raspberry Pi. Mount the Raspberry Pi using the nylon screws. Use the standoff in the hole next to the 3.5mm audio jack.
Carefully unclip and disconnect the speaker from the speakerphone PCB and mount the speaker on the front panel using your M3x10 bolts+nuts. You will likely need to drill out the holes on the speaker to 3mm. Connect your GPIO harness to the Raspberry Pi.
Place the LED holders through the speaker cover and place the speaker cover and LED holders through the top panel, fastening the LED holders in place with their washers and nuts. Secure the LED push button in place.
Now slide the LEDs with boots into the LED holders (I used a little bit of silicone sealant to ensure they dont push out).
Now mount the speakerphone PCB with the USB port facing towards the rear of the case (same direction as the Pi USB ports). Use the other two nylon screws to secure (one into the case and one into the standoff). Connect the USB cable to the speakerphone connector, folding/tucking the excess cable in the space behind the USB ports. Ensure your GPIO leads are routed cleanly around the speakerphone PCB, and that nothing could be shorting.
Finally attach the top cover to the bottom. Be sure to feed the wires nicely, and that everything looks tucked out of the way inside. Again, check for any shorts before fastening the top with the M3 bolts.
Enjoy your talkiepi!
Thats it! You're ready to talk to another mumble client or, if you made two, your other talkiepi!
I attempted to do a paint finish, but I just don't have the patience, or workspace to do a good job of spraying something this small. I do however have a bunch of different colored PLA. Check it out in blue and now red!
I have a Raspberry Pi Zero, HubPiWi, and a USB battery pack.
I am going to attempt to build a much smaller and truly walkie, talkiepi.
Initial testing and some minor code tweaks and talkiepi is running on a Raspberry Pi Zero with HubPiWi.
Over the next few weeks I will be working on a new WALKIE talkiepi case design!