Introduction: Ultimate Sonic Screwdriver

Ok so it can't do as much as an actual sonic screwdriver from Doctor Who, but it's a start. This project was sort of an extra little Christmas gift for my brother. You can find sonic screwdriver toys on Amazon, but aside from lighting up and possibly making a noise, they don't really have much function. I wanted to make a sonic screwdriver that actually had some different uses and settings. Further than that, I wanted to see how close I could get to a sonic screwdriver with the arduino sensors available in the world of today. So while this screwdriver is a long way off from being as cool as a real one, I did my best to pack it with as many uses as possible. It has:

  • An ultrasonic sensor- for measuring lengths out to 254 inches (~6.5meters) with an accuracy to the inch (plus a sonic device has to have some sort of sonic component)
  • A laser measurement sensor- the ultrasonic can't measure below 6 inches so to have a full range of measurements, I added this sensor which can measure out to a meter with mm accuracy
  • A Compass- for getting your heading from north the next time you're on an outdoor adventure
  • UV LED- for reading secret messages and possibly warding off vampires
  • GPS- for guiding you back to where you started if you get lost

and of course

  • blue LEDs- to provide light when you're exploring somewhere dark

I hope you enjoy. If you like it, consider voting for it.

Step 1: Materials

The materials come to about $200, but it depends on where you get them and what you might already have. I put the Adafruit links for a lot of the different electronics. Adafruit is sort of my go to for arduino tech. They also have links to tutorials on the product pages, which is super helpful in testing out the different electronics and getting them to work. You might be able to find cheaper prices elsewhere though. Amazon sometimes has Adafruit products for cheaper but usually not by much.

Adafruit Feather MO Basic Proto----------------------------------------------------$19.95

**You could also try using one of the other Feather MO boards to add Wifi, bluetooth, or some other extra functions.

Adafruit Ultimate GPS------------------------------------------------------------------$39.95

Monochrome 0.96" 128x64 OLED graphic display------------------------------$19.50

UV/UVA 400nm Purple LED 5mm Clear Lens - 10 pack-----------------------$4.95

Adafruit VL53L0X Time of Flight Distance Sensor - ~30 to 1000mm-------$14.95

Maxbotix Ultrasonic Rangefinder - LV-EZ0 - LV-EZ0---------------------------$26.95

Adafruit LED Sequins - Royal Blue - Pack of 5----------------------------------$3.95

Triple-axis Accelerometer+Magnetometer (Compass) Board---------------$14.95

Lithium Ion Polymer Battery - 3.7v 500mAh-------------------------------------$7.95

**If you want, you can use a portable phone charger and usb cable instead of the above battery. A phone charger gives the screwdriver the added ability of well being a phone charger. However, you need to connect an on/off switch to the wire between the battery and the Feather and it's harder to do that with a usb cable. A phone battery also makes the screwdriver a lot more bulky, especially if you are using thick wires.

Silicone Cover Stranded-Core Wire - 50ft 30AWG Red----------------------$4.95

**Disclaimer: I didn't actually use this wire. The wire I used was thicker, which made it a lot harder to get all the electronics in the screwdriver case. The above wire is what I wish I had used. Also it's imperative that you buy only red wire because nothing says "suspicious" quite like a pvc pipe filled with red wires :)

Potentiometer---------------------------------------------------------------------------$1.25

**I didn't use this either. Originally I was going to use a slide potentiometer to emulate the sliding motion the 10th Doctor's screwdriver had to change settings. When the slide potentiometer wasn't working, I ended up using a standard potentiometer that I already had on hand.

Slide Switch-----------------------------------------------------------------------------$0.95

** I used a slightly different switch I already had

Tactile Button switch (6mm) x 20 pack------------------------------------------$2.50

10k ohm Resistor---------------------------------------------------------------------$0.75

100 uF electrolytic capacitors-----------------------------------------------------$1.95

1"X2' PVC pipe-----------------------------------------------------------------------$2.18

3/4"X2-1/2" Galvanise Steel Pipe Nipple--------------------------------------$1.87

Colored Duct tape (I went with grey and gold but go with whatever colors call to you)

You will also need:

  • A soldering iron and solder
  • A hand saw
  • A drill
  • hot glue
  • wire strippers

Step 2: Wiring: Part 1

** The first picture shows the LEDs and Ultrasonic soldered to the Feather, but don't connect those yet.

Solder the following connections.

GPS======Feather

Wire Length- The GPS will be right next to the Feather (see the picture) so the wires don't need to be more than an 3 inches in length.

RX========TX

TX========RX

GND======GND

VIN=======3.3v

Compass===Feather

Wire Length- The compass will be right on top of the Feather so the wires should be roughly 1.75 inches in length.

GND======GND

VIN=======3.3v

SDA======SDA

SCL======SCL

ToF Laser====Feather

Wire Length- roughly 2.5 inches

GND========GND

VIN=========3.3v

SDA========SDA

SCL========SCL

Solder both SDA wires to the SDA hole on the Feather and both SCL wires to the SCL hole. You can use the prototyping section of the Feather if you want.

Potentiometer====Feather

end pin=========GND

other end pin=====3.3v

middle pin======A5

Solder a capacitor to both end pins. Make sure the (-) side of the capacitor goes to the GND pin as seen here.

Buttons=====Feather

Wire Length- roughly 3.5 inches

There are two buttons. For each button, connect one side of the button to 3.3v. Connect the other side to ground through a 10k ohm resistor (refer to this diagram from the arduino website). Make sure the resistor is the going the right way and try not to leave a lot of expose wire. For the first button, connect the side with the resistor to pin 5 on the Feather with a wire. For the second button, connect a wire from the resistor side of the button to pin 6 on the Feather.

Battery Pack Switch

Cut one of the wires from the battery. Solder one side of the cut wire to the end of the slide switch and the other side of the cut wire to the middle of the switch.

Finally, solder wires of about a foot in length to holes 9, 10, 12, 13, SCK, MOSI, MISO, and A0 on the Feather. Also solder two wires, each a foot in length, to ground and two more (also a foot in length) to power. Label each wire with the appropriate name with a piece of tape on the end.

Step 3: Making the Case

Originally, I wanted to make the casing for the tech out of different metal pipes like copper or bronze with maybe some steel or aluminum pieces so it would be sort of steampunk but modern. However, I didn't think the tech would like being housed in a metal case (especially the compass), and I needed to be able to cut and shape the pipes. Doing such things with metal pipes was beyond me, so I went with PVC.

Cut a length of PVC about 7 inches long. Screw the pipe nipple into one end of the PVC. When it gets too hard, use pliers and heat the PVC on a stove to soften it. Try and get the PVC to cover the threads of the metal pipe. Cut off a second piece of PVC 8 inches long. Do the same thing with this PVC and the other end of the pipe nipple.

Trim down the PVC a little bit if you want until it has the proportions you want (the screwdriver's probably a little long).

Next make an indent for the OLED display to "sit" on the side of the tube. Heat up one side of the 7 inch piece, being careful not to burn the PVC. Use a piece of wood to flatten out a section about the size of the OLED in roughly the same spot as the OLED display in the pics. Use the piece of wood to also press the very front of the PVC to change the end from circular to a bit of an oval.

Heat the 8 inch PVC on the side opposite to the OLED indent. Flatten the side of the PVC a little to a make it a little like an oval.

Let the PVC cool.

Cut a notch in the very top of the 7 inch PVC to fit the maxbotix ultrasonic sensor (pic above). Try to get the notch to be a snug fit for the ultrasonic sensor.

Use the drill to drill out a hole half an inch in diameter in the middle of the flat spot for the OLED. Then use a drill and saw to cut a rectangular hole in the 8 inch piece on the side opposite from the OLED indent (same area where you heated it up). You want to make the rectangular hole as small as possible but still be able to fit the Feather and other tech into it to put it in the PVC.

Finally, drill a hole in the 8 inch piece on the same side as the OLED for the potentiometer.

Step 4: Putting the Tech in the Case

Threading the Wires

Take the Feather and all the sensors that are connected to it and insert the foot long labeled wires from the end of the wiring step into the square hole in the longer (8 inch) PVC section. Thread the SCK, MOSI, MISO, pin 13, and pin 12 wires along with one of the ground and one of the 3.3v wires through the pipe and out of the hole in the OLED indent. Thread the other wires (A0, ground, 3.3v, pin 9, and pin 10) through the pipe and out the top. You should now have wires coming out the top and out a hole in the side.

Positioning the Feather

Guide the mess of tech into the tube. Make sure the potentiometer goes into the hole on the other side. The compass will sit right between the feather and the potentiometer. Make sure the compass is facing the right way. Whatever way the compass is pointing, you want the front of the screwdriver to be pointing in the same direction, so if the compass is saying it's facing north, the front of the screwdriver should also be facing north. You can check this with the tutorial for the compass on Adafruit. The GPS will sit right next to the Feather with the ceramic antenna facing out away from the pipe. The Feather will sit with the side with the reset button facing in. Make sure the USB port is pointing toward the back next to the GPS. The ToF laser will sit on top of everything else. The back of the laser (the side without the laser) will be back to back with the side of the Feather without the reset button. The buttons will stick out the side of the square hole so they can wrap around the outside of the PVC and be glued to it. Slide the battery wires followed by the battery in the back end of the screwdriver and plug the battery in the Feather. Smash the electronics down into the PVC as much as you can without breaking anything.

Covering the Rectangular Hole

Cut out a piece of flexible plastic from whatever you can find in your recycling bin. The plastic should be long enough to cover the Feather but not the GPS and wide enough to wrap around the tech in the rectangular hole and contact the PVC. Cut a small hole just big enough for the actual laser in the plastic where the ToF laser sensor is so the laser will get accurate readings. Then tape the laser sensor to the plastic. Wrap the plastic around the exposed rectangular hole as tightly as you can. Make sure the slide switch and the two buttons aren't trapped underneath it and are out from under it, and then, using duct tape, tape the plastic to the PVC. Make sure the USB port on the Feather is still accessible for a cable. Cover the PVC with the duct tape as neatly as you can. Be sure to strongly tape the slide switch connected to the battery to the outside of the PVC. Also be sure to not tape over the actual GPS antenna or the LED on the GPS board. Just tape the board around the GPS antenna. Last but not least, use hot glue to glue the buttons to the spot you want them on the outside of the PVC.

Step 5: Wiring: Part 2

Solder the following components to the wires threaded through the PVC. Trim the foot long wires if they are super long. Make them just long enough so you can access them and solder components to them.

OLED Display=====Feather

GND======GND

Vin=======3.3v

DATA=====MOSI

CLK======SCK

D/C======MISO

RST======13

CS=======12

Maxbotix Ultrasonic===Feather

AN=================A0

GND==============GND

+5================3.3v

UV LED======Feather

Connect the long wire of the LED to the wire connected to pin 10. Connect the short wire to the ground wire. Try to connect the wires close to the base of the LED. Then trim off the excess exposed wires of the LED. Wrap the connections in tape to prevent them from accidentally touching each other or another wire.

Blue LEDs======Feather

You can do different things with where you position the Blue LEDs on the screwdriver. I put three on the front facing forward and two on the top facing up so there would be light pointing out in front and the leds on the top would be easy to see and be used as indicators. However you decide to do it, connect the positive side of all five LEDs with wire and the negative sides of all five with a second wire. Then solder the negative wire to the ground wire from the Feather and the positive wire to the wire from pin 9 of the Feather.

Position the OLED on the indent on the PVC and arrange the LEDs and ultrasonic sensor in the notch at the front of the screwdriver. They shouldn't move around too much. You can use glue or tape if they do.

Lastly, cover the shorter PVC with duct tape as neatly as you can.

Step 6: Code

Apologies in advance. My code is a monstrous, duct taped splice of different bits of code that makes Frankenstein look like a single, coherent, put-together guy. I tried to show where I got all the different bits of code though. A lot of it is from Adafruit library examples. There's also some from a spark fun page and some more from a sweet autonomous vehicle instructable. Still more came from a geocaching project on Github. Remember to download the libraries for the OLED, ToF laser, compass, and GPS. Also, make sure you've added the Feather to the boards in the Arduino IDE. The tutorials off the links in the materials step can guide you through it.

Step 7: Using It

The slide switch turns it on and off. The potentiometer allows you to switch between settings.

Potentiometer values 500-600: GPS. When the GPS is locked on, the GPS LED won't flash as much. If you press button one, your current coordinates are saved. Then if you move somewhere else and press button two, the screwdriver will point the direction back to where you started.

Values 600-700: Compass. Shows your heading from north. LEDs light up if you're pointing north.

700-750: Blue LEDs

750-800: UV LED

800-900: Ultrasonic Sensor

900-1024: ToF Laser

In the future, I might add a piezo to add that wonderful sonic screwdriver buzzing sound. It would also be cool to add a setting that uses the ultrasonic sensor just as a motion sensor. You could then leave the screwdriver somewhere and have it buzz to alert you when someone's coming. It'll be fun to see what else I can add.

Special thanks to my brother for taking some of the photos when I realized I didn't have enough.

Hope you enjoyed this project. If you have any comments or questions, post away!

Arduino Contest 2017

Participated in the
Arduino Contest 2017