Introduction: DIY Functional Sonic Screwdriver
Last Halloween my oldest son Colin dressed up as the Doctor from Doctor Who and I cobbled together a Sonic Screwdriver for him from bits of junk I scrounged up in the garage. Upon seeing the Sonic Screwdriver my youngest son Sam decided he absolutely had to have one. Sam however declared that his screwdriver needed to work- he wanted more than just a cool looking prop.
He wanted a functional Sonic Screwdriver.
The neat thing about this project is you can easily tailor it to include all different kids of sensors to learn about the world around you. Inexpensive accelerometers, altitude sensors, barometric pressure sensors, GPS sensors, etc. are all readily available and you can make a custom Sonic Screwdriver to house whatever sensors you want.
Let's get started!
Step 1: Design
"They're scientific instruments, not water pistols!"
With the War Doctor's words in mind we decided that it would be really neat if Sam's screwdriver could monitor temperature and humidity and save the data to a micro SD card as well as display the temperature via a RGB LED. Sam has two hermit crabs (named Pickles and Sherman) and he thought it would be cool to be able to measure the temperature and humidity of their habitat... He also thought a flashlight function would come in handy (good for reading books under the covers) and of course it had to make a neat sound and have a big blue light on the tip for the "sonic" function. Since we were going to use a photocell to turn on the flashlight it was decided to log that data as well as the pressure on the force sensitive resistor pad that activates the blue light and sound.
While you could certainly 3d print the screwdriver body (a good option if you don't have access to a lathe) we wanted to make it out of metal- Sam's exact words were "It needs to be metal!" We thought about using a metal tube for the main part of the body but I thought the wood body would look cool and provide a nice contrast to the Aluminum end pieces. I needed a way to hold the force sensitive resistor and photocell in place so I decided to make brass pieces to mount them to the wood body. Turned brass pieces also provided a nice contrast for the LED end caps.
Step 2: Tools and Materials
The main materials used in the construction of this screwdriver are Aluminum, Brass and wood. The wood body was made from a piece of 1 1/4" diameter hardwood dowel I found in my garage. Aluminum and brass round stock and brass sheet can be ordered from Online Metals. The only other material used is a small section of 1/2" diameter acrylic tube.
I turned all of the screwdriver body parts on my Taig lathe. The Taig is a fantastic little lathe for small garage shop and with the inexpensive milling attachment it becomes an amazingly versatile tool.
Other items used:
Soldering iron- I use a Pace ST30 analog soldering station (purchased used on eBay.) The digital version of this is the ST50. Another really good choice is a Hakko FX-951. With either iron get a small chisel tip as it's probably the most useful.
Small gas torch
Wire strippers- I love these inexpensive wire strippers
Heat shrink tubing
About the electronics-
I purchased the vast majority of my parts from Sparkfun because they are a fifteen minute drive from my home (so convenient!) but Adafruit stocks many of these parts (or very similar parts) as well. I was particular about the Sparkfun humidity sensor because of its small size and analog interface. Sparkfun produces the Arduino Pro Mini and OpenLog boards but if you want to simplify things you could use a Adafruit Pro Trinket with the battery backpack. The Pro Trinket uploads code with an on board USB connector so no FTDI adapter is needed and the battery backpack makes connecting the battery and charging it a no brainer. If you want to add a high quality accurate sound effect use the Audio FX sound board.
The important thing is to design your Sonic Screwdriver circuit to have the specific functions you want and then design the body around the electronics.
For the size screwdriver and specific functions I wanted the following are the parts I used:
100 Ohm resistors
10K Ohm resistors
Step 3: Making the Housing
I made the main body from a section of hardwood dowel I found in my garage. I bored out the inside to 1" diameter and then turned down the outer diameter. The Aluminum pieces were turned on my lathe. The grooves were cut using a cut off tool and the center holes were drilled and bored out using a boring bar. Four slots were milled in the nose piece using a 3/16" end mill- these slots allow air to circulate around the sensors placed in the nose piece. A 1/2" diameter hole was bored in the front body piece and nose piece so a clear acrylic tube could be fitted. The acrylic tube has a slot cut in it so it can extend and retract- a small set screw in the front body piece locates the slot in the acrylic tube.
The rear body piece was turned in a similar manner as the front piece and it was hollowed out using a boring bar. Both Aluminum body pieces were then drilled and tapped so they could be held onto the wood center body with a couple of small button head screws. After all of the parts were test fitted they were given a brushed finish using a scotchbrite pad. Finally the acrylic tube was glued into the nose piece with super glue.
Sam and I spent many, many weekend hours out in the garage making these parts and he had a blast helping out!
Step 4: Creating the Brass Details
Beauty is in the details...
The brass details took a lot of time to make but I think they really made for nice accents on the finished piece.
I began with the holder for the 10mm blue LED that sits in the nose piece. This was turned on the lathe and the LED was glued in place with superglue. The holder for the 5mm white LED at the back end was also turned from brass stock and a groove was cut so an o-ring could be fitted so it could be removed- I did this in anticipation of fitting a charging jack at the end of the screwdriver.
Next came the brass holder for the photocell. The photocell has an flat oval shape so the center was bored and then an oval slot was milled in the piece using a 3/16" end mill. After test fitting the photocell a 3/8" diameter relief was cut in the wood body using a 3/8" end mill in my drill press so the photocell holder would sit flush on the wood body.
Once I was happy with the fit I made a mounting tab for the brass photocell body. A small tab was cut, shaped and then annealed with a torch- this makes the metal soft so it's easy to bend to match the curvature of the wood body. This tab was then silver soldered to the photocell holder using a torch.
The cover plate for the force sensitive resistor was cut from brass sheet, annealed with a torch and bent to match the wood body. The resistor has an adhesive backing but I figured there was no way it would properly adhere to the round wood body so the cover plate was devised as a way to hold the resistor in place while leaving the proper exposed round pad area. The ends of the force sensitive resistor slide through a small slot cut in the wood body underneath the cover plate- this makes it easy to attach the resistor to the electronics inside the wood body.
As a finishing touch I engraved my son's initials in the cover plate using an old pantograph engraving machine at my work. Another option that would be neat would be to hand engrave or chemically etch Gallifreyen symbols on the cover plate.
After the cover plate and photocell holder were finished I attached them to the wood body using very small wood screws.
Step 5: The Detail Bit That Wasn't Used
This was a really interesting bit that I made that I ended up not using but I thought it would maybe be useful if someone else wanted to use it in their own design.
The original idea I had was to have the OpenLog micro SD card be accessible via a slot cut in the side of the wood body- that way the card could be pulled out without having to open up the screwdriver. I made a brass cover plate for this in order to make it really easy to access the SD card but unfortunately it didn't work out as I ran out of room- I had to change the OpenLog board from a vertical to horizontal position and relocate it in order to make everything fit. If I redesigned the electronics inside the screwdriver by making a custom PCB I would be able to significantly reduce the amount of wiring and free up the necessary space.
I began by folding a piece of brass sheet at a right angle and then I cut a slot in it that matched the slot of the micro SD card holder so the card would slide through. Next two small triangular pieces were silver soldered on the ends of the bent piece- the outer edge of these matched the curvature of the wood body. Next I cut out and annealed an oval brass plate with a torch and bent it to match the curvature of the wood body. The angled brass piece with the slot in it was then placed on the underside of the oval brass plate. Lines were then drawn around the angled piece to determine how large to cut the opening for it to be soldered in. Once the angled piece was soldered in place with a torch all of the edges were trimmed/filed flush and it was given a brushed finish.
I was bummed I didn't have the room to make this piece work but maybe I'll be able to use this piece on the next version I make...
Step 6: Electronics
When designing the electronics for this I wanted to use as many off the shelf parts as possible so anyone could build it and easily modify it. The way the system works is the Arduino reads the sensors and spits out a value to the OpenLog to log it on the micro SD card. The value from the photocell is used to determine the amount of light available and then the white LED lights up accordingly. The force sensor reads finger pressure on the pad and then triggers the blue LED and sound effect. It's really a pretty simple circuit and it's easy to substitute or add all different types of analog sensors. I definitely recommend building the circuit on a breadboard first and running your code in order to make sure everything is working properly.
While the circuit design is relatively simple building it requires a bit of patience...
There's a lot of hardware that has to fit in a very small space and soldering all of the point to point connections can be a bit tricky when trying to make everything fit on a small piece of prototyping board. If you have some soldering experience you'll be OK but it's definitely not a job for a beginner.
I began by soldering the Arduino in place first, followed by the step up voltage regulator. The Arduino Pro Mini I used is the 5V version but the 3.3V version can be used as well- you just need to change two small details in the code (noted in the code) and change how the power from the step up converter is run. On the 5V version the power from the step up converter is connected to Vcc but on the 3.3V Pro Mini it needs to be connected to the Raw pin. That's the only difference so it's pretty easy to adapt it to whatever version you want to use- use whichever version best supports the voltage requirements of the sensors you want to use.
Once the Pro Mini was soldered in place I soldered in a header for the OpenLog. The OpenLog needs to be removable as the same pins that are used to program the Arduino are the pins used to send data to the OpenLog. On the underside of the board I connected these pins using thin gauge magnet wire in order to save as much space as possible. To protect the thin wires from abrasion (and possibly causing a short) I first put down a small strip of Kapton tape before soldering the wires in place. Once the wires were soldered I put another layer of Kapton tape over the wires. Kapton tape is awesome stuff- it stays put really well and the heat from the soldering iron won't damage it. You can also use it to hold wires in place while soldering, which is pretty handy.
Assembling the rest of the circuit is pretty straight forward. I tried to use the thinnest, most flexible wire possible in order to save space and reduce wire lengths by combining common power and ground lines. When I first wired up the temperature and humidity sensors with the LED in the nose piece I used wires that were too stiff so I later replaced these wires with some thin ribbon cable. I fully rebuilt this circuit twice in my quest to get everything to fit in the screwdriver body.
My family bought me a hot air rework station for Christmas this past year and let me tell you they are an awesome tool for taking apart circuits when you need to heat multiple connections at the same time in order to pull things apart. They are also also killer for heating up heat shrink tubing- make sure to use heat shrink on all of the connections to avoid causing a short circuit!
Once I got the circuit finished I powered it up and tested it out- worked like a charm! I was able to read data from the sensors and everything functioned as it should. Next I carefully stuffed the electronics inside the screwdriver body- and it didn't fit. Again. Darn it!
As it turned out the wires needed to be a certain length in order to be able to connect everything and be able to pull it apart and they took up too much space in the rear housing section with the USB charging circuit. Fortunately the solution was pretty simple- I just removed the charging circuit and made a two pin power connector using some header pins. That way I could just pull open the rear section of the screwdriver and connect the battery to the external charging circuit. In the future I might modify it so I just have a two pin charging jack on the screwdriver body so it doesn't have to be taken apart. Right now the power switch is press fit into a slot cut in the wood body as I haven't yet found a way to mount it to the body that looks good but I have a couple of ideas in the works...
Step 7: Programming and Data Logging
Programming is super simple if you're already familiar with Arduino. Just remove the OpenLog from the connector and connect a FTDI breakout board (or cable) to the header pins on the board to upload your code. When you're finished uploading the code just plug the OpenLog board back into the header. Make sure that your FTDI connector voltage matches that of the Arduino you're using. If you're not familiar with Arduino I wrote up a short guide here that will help you get started.
If everything loads properly the RGB LED should light up. The LED will change color as the temperature changes- when it's really cold it'll turn bright blue, then shift to green as it warms up and finally to bright red as it gets hot. When the force sensitive resistor is firmly pressed the large blue LED will light up and a tone will play. I kept it to a single tone as the sound effect from the TV show makes my dog go nuts- she hates it and runs away so I couldn't do that. I tried a lot of sounds and this tone didn't seem to bother her. When the photocell is covered by a finger the white LED will light up to full brightness and as more light is available the white LED will dim until it turns off.
To obtain the logged sensor data just remove the SD card from the OpenLog and download the .TXT files to your computer. If you want you can export the data to Plotly and make all kinds of cool graphs, make a Google Chart or upload it to the Sparkfun data site.
The code is included here for you to download. There are notes in the code about various connections and how to modify the code if you're using a 5V board.
Step 8: The Young Time Lord Inspects His New Sonic Screwdriver!
Once I got everything properly tested and fit together I presented the finished Sonic Screwdriver to Sam and he was absolutely thrilled. He had a lot of fun helping build it - he absolutely loves electronics, building things and working in the garage with me. He already has some ideas for improvements to his screwdriver and we spent some time the other day figuring out how to improve the battery charging process. I am very curious to see how he uses it and how long it takes his brothers to decide they want their own custom screwdrivers!
Helpful construction tips:
The biggest mistake I made was not thinking about how much space the wiring takes up. I really didn't want to make the screwdriver body any larger than necessary (it needed to be able to be comfortably held by a child) and even after carefully measuring all of the components and doing a lot of test fitting I still ended up rebuilding the circuit in order to make things fit. If I was to do it all over again (and I probably will) I'd make a smaller custom circuit board using as many surface mount components as possible. This would help to shorten wire lengths and really clean things up.
Test your circuit on a breadboard before beginning construction. Believe me when I say this will help you from ripping your hair out later when doing troubleshooting because something isn't working properly.
When assembling your circuit use a continuity tester after soldering connections/wires in order to make sure your connections are good and you don't have any shorts in your circuit. See the above comment as to why you want to do this. There's a great multimeter tutorial here.
I specifically chose to use analog sensors as I find they are a bit easier for beginners to interface with Arduino boards (compared to i2c and 1-wire sensors.) Adafruit has a fantastic series of sensor tutorials on their Learning System.
Now go forth Time Lords and make your own awesome Sonic Screwdrivers!
This was a really fun project- there are so many cool sensors available today that I can only imagine what people will come up with when making their own Sonic Screwdrivers. As always if there are any questions or you need help making your custom Sonic Screwdriver please don't hesitate to ask!