This instructable was created in fulfillment of the project requirement of the Makecourse at the University of South Florida (www.makecourse.com). Dubstep Kitty was invented by me, Justin Vincent Parker, in the year of our lord, 2015.
What is does Dubstep Kitty do?
This is my project, entitled "Dubstep Kitty." There is a proximity sensor located on the front of the box. When there is a change is distance of approximately 2 feet, then a sound of "meow" will be emanated from Dubstep Kitty. To clarify, this means that when someone walks in front of Dubstep Kitty, Dubstep Kitty will activate, thus making the "meow" sound once. On the fifth activation, instead of "meow-ing", Dubstep (Electronic) music will start to play, and the body of Dubstep Kitty will rise about 80 degrees (refer to the picture located above). The LEDs in the clear Dubstep Kitty tag on the front of the box will turn on, and start flashing. The arms of Dubstep Kitty will also start dancing, via going up and down in an alternating pattern (one arm goes up as the other arm goes down). After the 20 second music clip and dancing cycle ends, Dubstep Kitty resets. Thus, Dubstep Kitty will then "meow" when someone walks by (as previously mentioned). However, one thing to note is that 8 different song clips are loaded into Dubstep Kitty. Thus, each time that he dances to the music, it won't be the same repetitious song. Due to legal reasons, I can not upload the song clips. I also am against pirating files of music and such. However, take this as an opportunity to customize Dubstep Kitty by adding in your own music clips!
On the back of the white box, one can see that there is a green LED. This LED indicates whether Dubstep Kitty is ON or OFF. Directly below the green LED, there is an ON/OFF toggle switch: this turns ON or OFF all power to Dubstep Kitty. Directly below the toggle switch, is a female 1/8" audio-out port. This audio-out port is what you would want to use when you bring Dubstep Kitty to some loud gathering. Also, if you are an elderly person who is hard of hearing, this port could also be especially useful for you. The last port on the back of the box, is the female 5.5mm x 2.1mm port for the AC/DC adapter. Finally, there is a volume knob/rotator on the side of Dubstep Kitty.
Now it is time to get down to business!
Step 1: The Required Tools
- 3D Printer ( I used a Flashforge Dreamer with a layer resolution of 80 microns - However, any other 3D printer should work with varying results.)
- Soldering Iron ( I recommend soldering iron with a variable temperature knob.)
- Solder ( I recommend small diameter lead/tin solder - I used 0.3mm in diameter lead/tin solder. NOTE: You really need small diameter solder to make clean solder points on circuit boards. So use something close to 0.3mm in diameter lead/tin solder.)
- Desoldering Wick ( If you accidentally use too much solder, or solder the wrong thing, this can be used to remove the solder easily. Thus, I definitely recommend it. It's very cheap as well.)
- Heat Gun
- Wire Side Cutter
- Razor Blade / Box Cutter
Razor Proof Gloves
Sandpaper various grits (1000, P800, P400, P220). http://www.amazon.com/gp/product/B000CQ49X6/ref=oh...
Small phillips and flat head screw driver
- Circuit board vice holder (I used a PanaVise 209 Vacuum Base Pv Jr. which uses a suction-cup design. PanaVise also makes the PanaVise Model 201 "Junior" Miniature Vise which uses a screw-down design.)
- Wire Strippers (20-30 gauge and a higher gauge set that can do 10-20 gauge)
- Small Clamp(s)
Step 2: Required Dubstep Kitty Parts
- Arduino Uno
- 4 Tower Pro SG90 servos (I recommend you to purchase a few extra in the event that you accidentally fry them due to user error.)
- HC-SR04 Proximity Sensor
- Adafruit Waveshield ( you will probably have to buy the kit version - more on that later)
- 1 SD Card - a 1GB card will be more than enough.
- Blank PCB Prototyping Board (5cm x 7cm would be ok - this is the PCB prototyping board that has all of the wholes already drilled out.)
- 8 Small PCB board mounting screws - the shaft needs to be approximately 2.2mm in diameter (Sorry, I do not have the documentation for them.)
- Heat Shrink ( a variety pack is always a good investment.)
- 1 KG White & (very small amount) Clear PLA for 3D Printing. I recommend the Hatchbox white PLA and the Solutech Clear PLA.
- 1mm in diameter optical fiber - 2.1 inches or 53mm in length ( this is generally sold by the meter, so you'll end up having plenty of this left over.)
- 1 green 5mm LED
- 6 "Fast Flashing" LEDs (search on Ebay for "Fast Flashing 5mm LEDs")
- 3" diameter (77mm) 8 Ohm Speaker - the model number is GF0771 and it is manufactured by CUI Inc. ( I ordered mine from Digikey.com).
- 12V to 6V DC-DC converter (these are readily available on Ebay. Generally they have a 3A - a 2A rating would be ok as well.)
- 4 330-OHM resistors (standard 1/4 Watt)
- 1 male, and 1 female, 5.5mm x 2.1mm DC plug connector.
- 1 12V 2A AC/DC power supply that uses a 5.5mm x 2.1mm DC plug connector (there are different plug sizes so remember to check the item description/technical details!)
- 1 1/8" male to 1/8" female audio cord - the closer to 1 foot in length the better. Mine was 3 feet in length.
- Solid Wire - approximately 22 or 24 gauge
- 16 or 18 gauge wire (stranded or solid). 5 feet would be good: 2 feet black, 3 feet red would be ideal.
- 1 2A in-line fuse with fuse housing
- 6 bread board extension wires (male to female)
- 7 Dual pin terminal blocks (these are black and blue in the pictures located above.
- Extra female headers for the Arduino/Adafruit Waveshield
- Primer paint - I used acrylic but perhaps Enamel paint and primer would be better.
- Black, White, Grey, and Blue(for the eyes) paint - Once again, I used acrylic but maybe enamel would be better regarding the strength and durability of the paint coat(s).
- Clear Coat Paint Spray
- Foam tape - 2mm in thickness (single or double sided adhesion is fine)
- 1 tube of Bondo 907 Glazing and Spot Putty - 4.5 oz. - maybe a different substance would work better.
1 long 1/8" male to 1/8" male audio cable so one can make use of the audio-out port on Dubstep Kitty. A 12 foot long cable worked fine for me and my application.
Step 3: Printing the 3D Parts
NOTE: I am writing this assuming that you have the knowledge required to operate a 3D printer.
Attached to this instructable step are the STL files containing the parts for Dubstep Kitty. As I mentioned previously, I used a layer resolution of 80 microns with the Flashforge Dreamer. However, you are free to use whichever printer that you have access to, to varying results. The build size of the 3D printer needs be approximately 9.1” x 5.9” x 5.5” though. If your printer's build size dimensions are slightly smaller, import the STL files and see if it gives you an error or whatnot. Your splicing program that comes with your 3D printer should tell you whether it will work or not.
For the Cat Body
Use 0% infill (this is how I designed it)! Use 5 Shells! I had problems when I used 3 shells, so definitely use 5 shells!
I printed this 2 times, both times the supports under the cat's mouth broke off while it was printing (refer to the picture located above). There is no real need to panic. In both cases the end results were acceptable. Also, as you will notice in one of the pictures above, when it is printing the bottom of the tunnel inside of the cat body, it is a mess and does not provide full coverage. I had no problems with this imperfection when it came to passing the wires (discussed later) through this tunnel. And of course, no one can see it in the finished product: so it is not a cosmetic issue. I wanted to make this cat body as light as possible so that the leg servos could do as little work as possible.
For the lid with the cat legs
Approximately 5 Shells and 40% infill. I wanted this to be heavy duty as it is holding the weight of the cat.
For the lid with the speaker holder
3 Shells 100% infill. It needs to be able to bend while still being strong.
For the cat arms
5 shells 0% infill
For the Box
Approximately 3 shells 50% infill. I wanted this to be heavy to help to make sure that the box would not move when Dubstep Kitty was in the dancing cycle.
I printed my parts at perhaps a slower speed of 100mm/s print speed and 120mm/s travel speed. Thus, this combined with the 80 micron layer resolution ended requiring a lot of time for the prints. The body of the cat located in the pictures above for instance, took about 28 hours to print. I was in no rush, and I wanted to get the best results that I could. You can experiment with higher resolutions and faster print times if you deem appropriate.
Once you print these parts, much work will still be needed: we are no where near the finish.
Step 4: Sanding, Sanding, and Bondo-ing, Then Some More Sanding
So, as you may have noticed in the pictures from the previous step. Once you remove the supports from the cat body print, it will look like a plucked chicken. On these "plucked chicken" areas, I would recommend using like a 220 grit sandpaper. Once I got rid of these protruding areas, there were still dips(small craters) in the "plucked chicken" areas of the cat body. Apply the "Bondo 907 Glazing and Spot Putty - 4.5 oz." to this dips in the cat body print. It does not have to be perfect, you'll be sanding it lightly later.
After not having good luck with sanding the body of the cat to get rid of lines associated with the layer resolution of the 3D printer, I decided to essentially coat the whole body of the cat with the bondo by using kind of a spackling method (use as little as possible).
Now use something around 1000 grit sandpaper to sand these bondo'd areas. The bondo sands away really easily though, so don't over do it or else you'll be back to having the non-smooth dips that you initially ran into.
If you are a perfectionist such as myself you probably don't want to hear this, but repeat the above steps until you are satisfied with the results. This process took me a lot of time.
All other prints/parts
Well, the cat body was the definitely the hardest part to clean up. Minimal sanding will be needed on the other parts. I only used the bondo-ing technique on the cat's arms and legs to make sure that they were smooth like a baby's smooth novelty toy :P.
Step 5: Adafruit Wave Shield Assembly and Customization
The path I chose was to order the Adafruit Wave shield kit: http://www.adafruit.com/products/94 . I say "the path I chose" because I think that they have assembled ones in stock from time to time. Personally, I learned some things about how the shield was designed. Plus, I felt more comfortable with modding the shield than if I would have bought it already assembled.
Thus, assuming that you've bought the kit, follow this link to assemble it: https://learn.adafruit.com/adafruit-wave-shield-audio-shield-for-arduino/solder . This is wear having a circuit board holder such as the aforementioned Panavise would really come in handy.
Once that's completed, we need to modify a few things. First, we need to add in some female headers so that we can use every I/O pin on the Arduino Uno. And to answer your question, yes, we use every I/O pin on the Arduino Uno. Along with every hardware timer - but I digress. You'll need 3 2x1 and 1 6x1 female headers. If you don't have 2x1 female headers, no worries if you have longer ones available. Use your side cutters to cut them. You are going to loose one pin port of the headers, so don't bother being stingy and trying to save it. I was stingy the first time I tried to cut a 2x1 and I cut too much off. your 2x1, and whatever else you ever need to cut should have a decent amount of insulation left on the plastic side to which you are cutting. Exposed raw wire = bad/ recipe for disaster.
Now that you have the correct sized headers, solder one of them to pins 6 and 7, another one to pins 8 and 9, and the third one to the ground and ground pins. To clarify, the prongs/leads should slide into the already made holes. The already made holes and the pins are connected through the PCB Adafruit board. Next, solder in the 6x1 female header to the analog pins (A0 to A5).
Audio Output Customization
Foremost, for the electrically savvy, or wishing to one day become electrically savvy, I have attached the Adafruit Waveshield schematic to this step as a picture (located above).
Upon testing the Adafruit Wave shield I realized that the speaker output turns off when a 1/8" female plug is inserter to the audio-out on the shield. This is a problem as I was not planning on having the Wave shield and Arduino near the back of the box. Thus, upon studying the schematic I came to 2 choices. Option #1 would be to purchase and install a 1/8" female audio port that did not have this feature. Option #2 would be to connect the nodes labeled in the top right of the schematic as 2 and 3 together, and to connect the nodes 4 and 5 together as well. Refer to the picture above to see what that looks like on the circuit board. At this point you have 2 more choices. You can solder wires to connect these nodes, or you can do what I did: I just made 2 solder bridges.
For those who wish not to debate my reasoning (Jump to Here)
Thus, refer to the third picture located above that shows the underside of the Adafruit Wave shield. Solder the 2 sets of 2 nodes together. The red rectangle in the picture shows you where to put the solder.
Solder 2 different color 22 or 24 gauge solid wires to the 77mm speaker contacts. I would recommend braiding the 2 wires together so that they do not loose each other. You will then solder these 2 wires to the speaker location on the Adafruit Wave shield. This location is further mention in the Adafruit Wave shield instructions located on the Adafruit Wave shield Assembly link. However, just follow my instructions if you are comfortable with doing so. Examine the third picture, showcasing the actual Adafruit Wave shield board. There are only 2 nodes that are not soldered in that picture. You will solder the positive speaker wire to the inner-most node. And you will solder the negative speaker terminal to the outermost node - the node that is closer to the edge of the board.
Step 6: Preparing the Songs and Audio Files
Obtain the song clips that you want to use. These song clips will need to be approximately 20 seconds long optimally. I have attached 2 cat sounds that are ready to be used, along with the Nyan-cat song clip as an example/test.
For the audio clips to work with the Adafruit Wave shield, the files cannot exceed the maximum file settings: 22KHz, 16-bit, mono PCM. Also, they need to be .WAV files. For instructions on how to convert the song clips that you obtained to the necessary file type and such, please refer to these instructions: https://learn.adafruit.com/adafruit-wave-shield-audio-shield-for-arduino/convert-files
Use short names, 8 characters maximum, all caps, with no spaces. If you want to read more about this "8.3 file name" system, you can read about it on the wikipedia page: http://en.wikipedia.org/wiki/8.3_filename .
Step 7: Arduino Uno and Adafruit Wave Shield Software Setup Time
You will need the Arduino IDE if you do not already have it. Thus, go download it from Arduino.com if you don't have it already.
Loading the Libraries
You will need to add in the WaveHC library, along with the ServoTimer2 library. I have attached both of those libraries files to this step. To add the libraries, unzip the 2 libraries. Then click on the "sketch" tab, followed by the "import library" tab. In the event that you have a different version or whatever, just look for the "import library" tab. Once that is found, it will prompt you to locate the library that you want to import. Locate the library folders that you just unzipped, and import them one at a time.
Verify That the Code Compiles
Load up the attached Arduino Uno .ino file. Verify/Upload it before you go about customizing it. If you get an error, this could be due to the library files. Read what the error says at the bottom. If you are lost, google some of the keywords that make sense to you. Do not use the directory as part of your google search. Make sure that the code compiles without yielding errors before moving on.
Customizing the Arduino Sketch
I have left my song selection names in the file. You will need to change them in this step. I left the names to provide an example - so that it is easier for you to understand how to change them. Change the names of the files to the files that you created in the last step. Upload the sketch to your Arduino Uno.
Preparing the SD Card
Insert your SD card into your computer. You may have a port on your computer for this. If not, you'll need to get a USB to SD card adapter. Put all of the audio files that you created in the previous step, plus the cat sounds attached in the last step, directly onto the SD card.
DO NOT USE SUBDIRECTORIES!
Just put the .WAV files directly onto the SD card.
You can now put the Adafruit Wave shield onto the Arduino Uno: It is fine if you have already done this. If there is a problem with your customized code, you will need to remedy it at this point.
Step 8: Creating the Power and LED Resistor Board
You will now be making what is shown in the first picture located above. However, the female DC input Jack will not be attached/glued to the board as shown in the first picture. Refer to the hand drawn schematic located in the picture section.
Glue the 12V to 6V DC to DC converter onto the PCB board. Put on your safety glasses, and solder everything into place as shown on the hand drawn schematic.
For the ON/OFF toggle switch, remember to apply heat shrink as shown in the 3rd picture before attaching the wires to 2A in-line fuse and the DC female power jack.
Step 9: LED Preparation
Cut 2 pieces of solid wire 22 or 24 gauge, width a length of approximately 9 inches. Optimally one would use black and red wire. However, one can get by as long as they are different colored, and you remember this new standard that you are creating. Cut most of the long leg of the green LED off. This is the positive terminal of the LED. Solder on your positive colored wire. Then cut off most of the other pin of the LED, and solder on the negative wire. Apply heat shrink to these two locations. Try to use the smallest diameter of heat shrink that will fit over the exposed wire and the solder point. Use a heat gun to shrink the heat shrink. Make sure that the heat shrink gun is not aimed at your 3D printed parts or else you'll melt them. Let everything cool. Then twist the wires as shown in the picture located above.
Use this same method for preparing the 6 "fast flashing" LEDs. However, I'd recommend making the wires about a foot long instead of 9 inches, as was used with the green LED.
Step 10: Painting Dubstep Kitty
Hopefully you like jumping back and forth between the electrical and mechanical aspects. I found that it helped to keep the laborious tasks interesting.
Dubstep Kitty Paint Job
Now it is time to paint Dubstep Kitty (assuming that you completed the sanding and bonding step aforementioned). I used an acrylic primer, because I was using acrylic paints. However, as I mentioned previously, perhaps the enamel route would create a more robust paint job.
I wanted Dubstep Kitty to mimic my favorite cat, a grey Maine Coon. Thus, after the primer was on, I painted on layer after layer of solid grey paint until the bondo color was not visible anymore. I used a paint brush to do this, but a spraying method would also work to accomplish this part.
Final Paint Coating
Next, it is time for the final coat. I wanted Dubstep Kitty to have subtle black and white highlights, as I feel like that is what is common amongst the grey Maine Coons. I may be wrong but I digress. I basically mixed white, black, and grey paint together and then painted Dubstep kitty to achieve the highlights. Then I used a bigger brush to blend the colors together some more to make the highlights more subtle.
Applying Clear Coat
Use a clear glossy spray paint on each of the parts. Thin even coats are what you are trying to achieve. A few coats on each piece, with 20 minutes drying time in between each coating should be good.
Make sure that there is not wet clear coat spray between the part and the paper ( that the part might be drying on). If this happens, when you try to take the part off, part of the paint will also come off.
Allow 5-7 days for the parts to totally dry
Make sure not to place the parts on something that they could possiblely adhere to. Something smooth and solid like a countertop would be a good place to set them. Assuming that you have plates in your kitchen, those would work perhaps. Maybe even a baking sheet. I could also see tin foil working out well. You get the idea...
Step 11: Installing the Female Servo Gears
With the SG90 servos comes white levers and such. Take 4 of these, and cut off every thing except the circular part so that they look like the picture located above. Then glue them into the holes on the body of Dubstep Kitty. There is a hole for the female gears where each of the servos go. It will be a snug fit.
Step 12: Adhering the Dubstep Kitty Logo
Remember those 6 fast flashing LEDs and the clear printed "Dubstep Kitty" logo? Hopefully your answer is yes. Anyways, slide the 6 LEDs into the 6 holes in the back of the logo. The fitting should be pretty tight. However, you could add some glue to the back of them to help hold them in place if you'd like. Now slide those long LED wires through the holes in the front of the box. The logo should be just about straight at this point. However adjust it as necessary, and glue it into place with using as little glue as possible. Wipe away any excess glue that might be present. If you have clamps, clamp it into place to ensure a tight seal.
Step 13: Electric Box Assembly
We will now put all of the electronics into the box.
Place the Arduino with the Adafruit Wave shield near the front of the box, with the volume knob poking out of the volume knob hole. The goal here is to place this as close to the front of the box as possible. Use a marker to mark the location of where the Arduino needs to end up being. Then take off the Adafruit Wave shield and screw down the Arduino with 4 small screws. Unscrew the volume knob from the Adafruit Wave shield, trust me. Put the Adafruit Wave shield back on the Arduino Uno. One the Adafruit Wave shield is in place, slide the knob through the box slot and back onto the potentiometer. Screw it back in place, once the knob is correctly fitted onto the rectangle looking shaft.
Insert the male to female 1/8" audio cable into the Adafruit Wave shield. Push the female end into the hole located on the back of the box, at the bottom. It should be snug. We'll make it more secure later.
Insert the female power plug into the hole located on the back of the box, on the upper right side. It is the hole that is located away from the other holes.
Main Power Toggle
Undo the nut of the ON/OFF toggle switch and place it into the middle hole on the left side of the back of the box. Refer to the attached picture.
Main Power LED Indicator
Finally, push the 5mm green LED into the remaining hole on the back of the box. Yes it will be tight. This is a great thing.
Arduino Power In
Insert the male power plug into the Arduino power in plug.
Permanently Holding in those Connections on the Back
Apply silicone ( to the inside of the box ) to make sure that the female DC power in plug, and the audio out plug, do not move. I applied a generous amount to get an excellent coverage area. Your method could vary from mine here. As they say, there are many ways to skin a Dubstep cat :P
Bread Board Installation
At this point you can let the bread board be free in the box, which is what I ended up doing, or you could screw it down. If you found that it wobbles around in the box, then I'd recommend to screw it down.
Bend the lid/speaker part so that the speaker can be inserted, and thus held in place. However, It will still jiggle in there a little bit. Therefore, cut some small pieces of the 2mm thick foam tape pieces and adhere them between the speaker and the plastic holder. The distance is only like 2mm, thus, you do not need to stack them or anything like that. Just keep adding them in until the speaker does not move when the lid/speaker component is shaken.
Step 14: Servo Installation
Slide the 2 servos into Dubstep Kitty's arms. Then use the male to female wire extenders to run the servo cables through the body of the cat.
Attach a 2mm thick pieces of the foam tape to back of each of the leg servos. Then attach two small pieces of the thinnest cardboard that you can find to each of the backs of the leg servos. This padding creates a firm, tight, springy, seal for when the servo gears go into the body of the cat.
Before placing the Leg servos into the legs, run the arm servo cables through each of the legs/lid. As you may have probably noticed by now, there are holes in the bottom on the legs so that the wires can go through the lid. No one wants to see nasty nasty wires! The arm wires, along with the leg wires, will eventually be placed in the notches located on top of the leg servos. Just to clarify, the left arm servo wires go through the left leg, and the right arm servo wires go through the right leg. Put the leg servos in the legs now.
Step 15: Make the Necessary Servo / LED Arduino Connections
Connect the positive and negative terminals of the 4 servos to the breadboard as seen in the attached schematic.
Connect the following wires to the following pins on the Arduino:
Right Leg Servo - Pin 6
Left Leg Servo - Pin 7
Right Arm Servo - Pin 8
Left Arm Servo - Pin 9
With the fast flashing LEDs it does not matter too much which ones you connect to which pin (A3, A4, A5). However the 3 sets of 2 LEDs do need to be connected to A3, A4, A5. To clarify, we are talking about the analog pins on the Adafruit Wave shield. Remember that you added on this header during the customization process.
The Proximity Sensor needs to be connected as follows:
Echo - Pin A0
Trigger - Pin A1
GND - Either of the two ground pins that you made the header for on the Adafruit Wave shield.
Vcc - Pin A2
Note: The proximity sensor only uses about 15-20 mA of current, so drawing the power from an I/O pin is no big deal. It could also be said that using the analog pins to perform the Echo and Trigger aspect of the proximity sensor is a no-no due to them being slower than pins 12 and 13. However, the Adafruit Wave shield needed pins 12 and 13. So we just have to use what pins we have available. And consequently, this project uses every pin on the Arduino Uno.
Remember to connect the ground pin on the breadboard ( located on the top left in the attached picture) to the remaining ground pin header on the Adafruit Wave shield. If you do not do this, the servos will not function correctly.
Step 16: Test Test Test
Test every thing to make sure that it all works. Remedy any problems that you run into.
Make sure that all of the servos are in their NON-DANCING position. This is super important. So important that I am making a step to show how important it is.
Step 17: Bringing the Cat Together
Bringing the Cat Together
Bend the lid with the legs on it and put the cat body into position so that the servo gears insert themselves into the female gears located on the body of the cat. As you are doing this, make sure the the cat is in its "lying down" position. You may need to try this a few times to get the position correct.
Put some glue in the female arm gear, and adhere the arm of the cat. Remember to situate the arm so that it is in the lying down position. Let that dry. Then do the same for the other arm. Remember, cat laying down position! View the attached photo for a clear description of this position. Make sure that you use the glue very sparingly. The arms are meant to rotate after all. Thus, we are only mating the gear parts.
Step 18: Finalization
Screw in the 4 screws located on the lid. Make sure each of the screws goes through both lid components (Legs and Speaker lids).
Plug in the 12V AC/DC adapter.
Flip on the toggle switch to the ON position.
Let the Dubstep Kitty insanity begin.
Send Justin Vincent Parker free gifts of gold, silver, and a chance to meet Steve Wozniak, as a way to thank him for this divine Dubstep Kitty creation. Congratulations on your build!