Introduction: Steampunk Raspberry Pi Console/Case
Hi! My goal with this project was to make a really cool, steampunk themed, case for a Raspberry pi. For this case I made it a retropie based game console, but really it could be used for any raspberry pi based system. This is my first instructable, so please bear with me..I'll look to the comments for feedback and update where I can.
The goal of this project was to have the microSD card on the pi stay accessable, so that the image could be easily updated or swapped out. In addition, I wanted to keep the ports externally exposed, so that power, video, audio, USB, and networking were accessible externally from the case. And finally, I've built three different cases using this approach, so I want this instructable to be generic enough that someone can build this by mixing and matching ideas....for instance if you don't have a 3D printer, you can still create a really cool steampunk case by following this instructable.
I've entered this instructable into the 'First time Authors' contest...if you enjoy it, please take the time to give it a vote (button in the upper left). It'd mean the world to me. :)
In the end, you'll have a very cool discreet case that can sit on a bookshelf and be hidden, or be displayed to impressed friends and visitors. You can make it as discreet or as flashy as you want...so lets begin!
Update: I've added a preview video to show video of the finished project, and to show some details as backup to the photos in this instructable.
Step 1: First Things First...the Ingredients List
I want to start by going over the steampunk knick knacks I gathered. Please use this as a guide, and not a rule book...I'll describe what I got, but feel free to grab your own knick knacks that you think would look good. If you want to do a minimalist setup, then paint, some gears, and a knick knack or two can get you started (no book needed!). I recommend browsing the full instructable before buying any of the items below so you have an idea how and when they're used...this will help you choose styles, colors, and make decisions about which features you want or can do without.
Here's a shopping list, with a suggestion for sources:
- Bags of Gears - You can get these on Etsy or Amazon...I picked up two different colored sets of 100 for about 20 dollars US
- Raspberry Pi, Case, and Power supply- I ordered a CanaKit from Amazon, and went with a clear case. You'll spray paint this later, so the look isn't terribly important. If you are new to this, then this kit is likely what you'd want: Raspberry Pi Canakit
- Book Box - This is a box, that is meant to look like a book. This will be the outside of your case, so you'll want to choose something carefully here. I've done ones that had world maps on them, but also just generic patterns that look dated work well. The size of the box is up to you...I've done small boxes that are simple, but larger boxes allow for features such as 'windows' to be cut in to show off the innards. Here's are some examples:
- Book Box with world map
- Another cool box
Random bronze or metallic colored 'knick knacks'. You'll see that the point here is to create something that looks like it's functional, but really it's not. Some things I've found are shown in the pictures, and include: Fuses (tear away the paper to have a bare center with copper ends), Split bolts, Mechanical Lugs, steampunk ornaments such as skulls, octopuses, keys, etc. You'll likely want one 'centerpiece'..for mine I chose an Octopus with jeweled eyes. For sources, I found my local craft store had a good selection (Michael's is the name of the one here in the Pacific NW of the US
Rustoleum spraypaint - Find a metallic look...I like the hammered textured ones. I went with a hammered bronze, but you should feel free to branch out here if you wish.
Copper Tape - You don't need much..this does help greatly with cleaning up rough cuts
3D printer (Optional) - This will let you print out bezels to make your cuts look cleaner. Copper tape can work in a pinch as well.
Optional for any electrical effects (Gears or lighting effects)
22 gauge hook up wire - I recommend brown colored as it's easier to hide
Brownish colored paracord - You can use this to hide the wires and tidy things up. It also gives it a cool 20's insulated look to the wiring. You don't need much, maybe 6 feet
A metal chain (I used a bronze colored one). See 'finishing up ' for how it's used to get an idea of what you want.
Optional for lighting effects:
A clear plastic tube - If you want to do lighting effects, you'll want a clear tube to run the light through. I went to a place called Tap Plastics. One trick: Use a cellphone flashlight feature to light the end of a pipe, and see how far down the pipe the light goes. You can experiment with tinted plastic, clear, etc. to get different effects. I chose a clear plastic that had bubbles in it..these made the light look almost as if it was liquid.
Neopixel LEDs (one for each light effect) - Adafruit has these
22 gauge hook up wire - I recommend brown as it's easier to hide into the mix
Arduino Micro
Optional for moving gear effects:
Micro Servo - A small servo
3d printer - If you are following this you'll want to be able to 3D print the gears, and the stands. I'll show you how I did this.
Optional for the Window feature:
If you want to have a 'window' which shows the innards, you'll want a round piece of plexiglass, and likely a 3d printer to print a bezel to hold it.
4 bolts and nuts to hold the bezel to the box
Tools used:
Glue Gun
Hand saw/jigsaw/ drywall saw or similar
Super glue
The spirit of this instructable is that you take what you want from it. I'll show you how to do the three main effects I used...moving gears, colored LED light effects, and a 'window' to show it all off. You should feel free to mix, match, and add your own effects to your case. Even if you don't have many of the items above, you can still create a really mind blowing case with just the paint, some gears, and a book to put it into.
Step 2: Beginning - Laying Out Your Design
When I build these, I start out with a quick layout to get a feel for the size of the box vs. the Raspberry Pi, and to see how much room I have to work with, or to fill. I recommend the following approach:
- Place the Raspberry pi case in the corner of the box. You'll want it upside down so that the microSD card slot is facing up, and the ports are along the side and bottom of the case. This is essentially where it's going to live. You'll be cutting the case to expose the ports eventually. (See the first few pics above...one shows it before I painted the outer case, the second one shows after...double checking my placement)
- If you're doing lighting, make sure the GPIO pins of the Pi are exposed so that you can pull power off of them, and get it over to the Arduino. Make sure the Arduino has a place to sit, not too far away from the Pi. Place the pieces of plastic tube across the box to decide where the light rails will go.
- If you're going to do moving gears, you'll want to set those up next..you'll want them where they can turn freely, and where you can mount the servo close to them.
- The front of the book, when the cover is open, is a great place to add further decorations. You can place gauges, gears, ornaments, or other decorations here, and they'll be revealed when using the case while it's open.
- Please see the pic where I have the glass rods, gears, Arduino, and raspberry pi placed..this was in a 'large' case, and I had plenty of room to decorate. If you have a smaller case, you may want to pass on the gears, or simply do one light rod instead of two. The main thing is to experiment now with placement while you can change it up, and before you start cutting/gluing.
Step 3: Painting and Decorating the Raspberry Pi Box
The first actual decoration we'll do involves the raspberry pi case. before putting the pi in the case, you'll want to spraypaint it with the rustoleum paint...this will make the box look metallic, and much more expensive than the basic plastic that these cases are usually built out of.
This part is actually really straightforward...and if you want, you can paint and adorn the raspberry pi case and have a pretty decent looking project (My first attempt...this is exactly what I had done!).
Here's the steps and tips:
- Place the plastic case halves into a cardboard box
- Spray paint each half separately, focusing on the outside. Get even, complete coats on each..I recommend two coats as any clear plastic will take away from the look that we're going for.
- Once dry, verify that you have a solid covering, and then place the Raspberry pi into the case...it should snap securely closed
- Test fit it into the box, upside down, with the USB ports facing the bottom of the book, and the video/audio/power ports on the side where the 'pages' would be exposed. The SD card slot should be facing up, and accessible. This is important, as it sets the orientation and size of holes that need to be drilled/cut.
- Measure your pi case, including how far it is from the sides, and draw a rectangle on the outside of the case to give you a guide of where to cut. You'll want to do this on the end where the USB/Networking are pressed against the bottom (you'll drill holes later for the video ports). Once you have a solid drawing of where the pi case will be, you're ready to cut. Protip: Covering the inside of the box with plastic will prevent the upcoming wood shavings/sawdust from getting embedded in the felt that typically covers the insides of these cases. That'll help save cleanup in the future.
- Cutting the box is...challenging...the ones I've bought are made of pressed wood, and they are very sloppy to cut. In the pics you'll see a drywall saw, as well as nipper pliers, which I used. To start, drill some pilot holes which you can fit the saw into in the center of the box. Continue to cut away till you've got enough material clear to fit the pi case into the open slot...this should allow access to the USB and network ports.
- The sixth pic shows the rough hole that may result...to cover this, you can either 3d print a bezel, or you can cover it with the copper tape. Protip: For the copper tape, I recommend either wrapping the edges, or covering the entire part and then re-cutting through the tape to expose the ports. Either way, the copper should blend into the project.
- I printed a 3D bezel and painted it with rustoleum to match the case.
- This part is tricky and requires accurate measurements...place the pi into the hole you just drilled as a test fit, and then measure where the micro USB, HDMI, and the analog audio/video ports press against the side...mark these locations.
- Finally, drill holes where you marked the video and power ports from step 9...you'll want to use spade bits to make wide clean holes. Again, you can use copper tape to clean up the rough look of the drilled pressboard if needed.
Congrats! At this point you should have the pi solidly mounted into the book...with the appropriate ports exposed to be able to fully use it. I wouldn't glue it down however till the last step...for now enjoy being able to insert/remove it as you please...this will help with soldering to the GPIO pins in the future steps if you're adding servos/lights.
Things I'd wish I'd done better when building this portion: I think I'd like to try a build where instead of cutting such large portions of the box out, I instead try to only expose what is needed..and add battery power to the inside of the case. For instance, you could just run an HDMI cable to a port, and add an internal battery to run the pi. This saves some holes in the book on the side. Another idea is to use an xbox 360 controller adapter, or to use Bluetooth controllers, and to not expose the USB/Lan ports at all. These are just some of the build variation ideas if you want to save drilling into the box.
Step 4: Adding Moving Gears! (or Non-moving Gears!)
This step, for me, required a 3D printer. It was a concept that once I thought about it...I couldn't let it go and wouldn't quit till I had it fully working. It involved quite a few iterations on a 3d printer to get correct. The basic idea is that we'll build a 'stand' to hold three interlocking gears, which are run by a fourth, smaller, servo driven gear. I didn't get my gear ratios correct when doing this, so it results in a bit of grinding when they run. That being said, the effect, and look (even if they're not moving) through the window is extremely well received. If I had to do the project again, I'd probably elect to not make them move, as it added quite a bit of complexity. But I leave the choice to you, the maker. This step required a 3D printer and basic modeling skills for the choices I made.
1) I searched Thingiverse for gears that would fit my needs, and decided on: Steampunk Gears by Skriver. There are many more gears up on Thingiverse since I did my search, so you may want to scout around. If you're doing gears 'just for show' you can get much fancier.
2) Once printed, you'll want to measure the inner circle of each gear to find out what size 'axle' you'll need. You'll also want to lay them out to measure how far the axles need to be apart. Protip: If you setup the gears in a right angle like a letter "L" and measure distances, you'll be able to easily get a solid measurement between gear spokes, which helps modeling. Otherwise you're trying to model both the distance and angle...which I found to be tougher to get correct.
3) If you're going to have the gears move, you'll want to model a holder for the servo along with the gear holders. by having this be one piece, you'll be able to turn the gears without the servo slipping near as much.
4) Once you have the gears on axles, and a servo mounted...you'll want to paint everything. I again used the same rustoleum I used on the Raspberry pi case in the previous steps. Protip: Either de-case the servo, or hand paint it so that you don't get paint into the moving parts...it'll gum up the works if you do and wreck the servo.
5) Once you have your gears set...if you're going to expose them to a 'window' in the case as I did, it's a good time to measure out the gear placement in the box, along with the servo, and the window, so that you can be sure it'll all fit. I re-used the drywall saw to cut the circle for the glass, and then 3D printed a bezel to hold it in place. I'll cover this in detail in the next step, as the window can be used whether you do lights, gears, or any decoration really.
6) If you're going to display the gears in a window, I recommend printing a 'base' for the axles to sit on to bring them closer to the window...you don't want them to touch or come too close...but if you don't raise them they'll be so far down in the box that they won't be nearly as impressive. The white box in the pics above is my 'base', which I hadn't painted at this point.
Step 5: Creating the Window
The window is likely going to require a bezel, unless you've found a clean way to cut the box with accuracy such that you can mount the plastic 'lens'. For me, I wasn't having such luck, so in this step I again relied on a 3D printer to create a bezel, along with a simple 'bolt through' method to hold things in place. This came out quite a bit better than I imagined it would. The window, in my opinion, is one of the features that set this project apart from many others I've done.
Here's the steps I used:
- Place the plastic 'lens' over the book and get a solid idea of where you want to place it. Make sure to open the book, and place whatever you want below it, so you have an idea of what it'll look like through the window. Once you cut this hole in the box, there's no going back.
- I cut the hole with a drywall saw (just like the side holes earlier on). I don't know if this was the best way to do this, but it worked for me in this case. Protip: Again..whenever cutting, place plastic inside the box to catch the debris so it doesn't get embedded into the felt.
- 3D print a bezel piece which will go around the plastic. Print a second one so that you can have one on the top and bottom of the cover, sandwhiching the plastic in between.
- Drill 4 holes through both bezel pieces. The size should match small bolts which you'll use later to hold them together.
- Paint the bezel and bolts together...I chose the same color for this, though if I were to do it again I may choose a more silver color for the bolts to get them to stand out. In this case I once again reused the Rustoleum copper paint...this kept everything consistent.
- Once dry, thread the bolts through he holes you drilled, and use that to lock the plastic piece into the book cover. (Protip: If you're going to do much more decorating, you may want to have a backup piece of plastic to swap in later, or remove it at this point so that you don't scratch/dirty/ruin it.
At this point you should have a nice solid window into your box...and if you chose to go with gears, you can place them behind it to get an idea of where you'll want those placed before you get to wiring them. If you didn't choose to do gears, then this is an excellent time to place some decorations under the window to see how they'll look. You may notice the inside of the box is a bit dark unless it's directly lit...we'll fix that in the next step...lighting!
Step 6: How to Add Light Pipes
Light Bars - What are they?
The light pipes are the bars of light which you see going across the case. These bars are pieces of plastic, which have RGB LED's placed on the end...the resulting light gets reflected internally into the bars, making it look like a beam of light. This is another effect which really sets off this project, and can be used in quite a few different ways.
Before I go further, I want to credit where I got the idea...from the instructable Steampunk Network center by Raltel. He avoids micro controllers for his work, and went with a cool flickering yellow look, which gives the look of an aged bulb. If you're comfortable with electronics, I recommend looking into that approach to be aware of it.
Overall Design, and why I used an Arduino:
For my approach, I wanted the following in my design:
- Bright at 5 volts - I wanted the LED solution to be bright, but wanted to stay in the 5v power range to minimize the amount of power supply work I'd have to do in the box
- Colorful - I wanted flexability to not be stuck to a single color...ideally I wanted to choose any color, or to blend between them or do light animations
- Programmable - I wanted flexibility to update the code at a later time in case I wanted to do light patterns, flickers, or make them react to what was happening on the raspberry pi.
- "Just work" - If I switched out the raspberry pi program, I didn't want to have to inject code into the raspberry pi each time to get the lights to work again. This is why I added the Arduino.
Very simply, I added Arduinos to the boxes I created with lights. These Arduinos are 5v microcontrollers which I power directly from the Raspberry pi. In this way, when the Raspberry pi gets power, the Arduinos immediately boot up and start running their program. Similarly, when the Raspberry pi shuts down, the Arduinos will lose power.
Approaches - Static pixels vs. Neopixels
I built one of my boxes with Green LED's, and then added flicker code to the Arduino. The second, bigger box that I built with lights I used Adafruit Neopixels (Here's an example). These are incredibly bright, but even better, they have in/out wiring which allows you to easily chain them. This means less wires (and a cleaner setup) when adding lights to the box. Wiring up the electronics is a bit out of scope for this instructable, but if you are looking to learn, Lady Ada and the Adafruit team have the Adafruit Neopixel Uberguide.
Building the light bar
To build the light bar, I cut a piece of plastic pipe the width of the box using a hacksaw. It doesn't matter if the ends are a bit uneven...they'll get covered. On one end I used Mechanical Lugs...when you remove the screw out of these, you get a nice hole which can hold the light pipe on one end. Using a hot glue gun, I attached these to the side of the box, and that gave me a solid mount point for my plastic pipe.
For the other side, I used Raltel's technique of using the end of a gold RCA speaker cable (Picture). I had these left over from some old wires, so I was able to clip the ends off, unscrew them, and use the outer ring. If you don't have a cheap source, then you can use Mechanical lugs on both sides, or even just small brass fittings. You just want something that can hold the pipe, and that your LED / neopixel can fit into. If you have a bass fitting, or something that is considerably bigger than the pipe, then using a glue gun to fill in the gaps will help tighten things up as you assemble it. Test fit your light bar and the ends, but don't glue this side till the wiring and soldering are done.
Other light effects you can add
Not everything has to be the 'light bar'...I also added a single 'lamp' effect which I created..by mistake! I had placed a neopixel inside of a brass piece of tube...and it didn't exactly look great. It really needed to be diffused, as the result at that point was a bright, almost flashlight, which pointed up out of the box.
The fix was to fill the brass tube with glue from a glue gun...this diffused the light, and created an unintentional cool effect. I've labeled this in the pictures for this step so you can see it.
Wiring, and soldering
First thing you'll want to do is look at the Raspberry pi pinout diagram. This will show where you'll need to pull power for the Arduino...you'll want to connect to 5v power (pin 2 or 4) and ground (pin 6). You'll want to run these over to the Arduino Micro (you'll want to connect to Vin and Ground). This will supply power to the arduino when the Pi boots automatically. Before you solder the wires, I recommend covering them with brown paracord...this gives them an 'old wire' feel while also helping keep things clean. The pictures show the end result of this, along with some closeup of the wiring.
Coming off of the Arduino, you'll want to wire in the LEDs or neopixels. If you're doing LED's, you'll want to wire it into the Arduino as you see fit. If you're doing neopixels, you'll want to wire off of 5v power and ground, and also run a data pin to your first 'pixel'. Then from that pixel, you'll chain power, ground, and data to the next, and so on. I only wired one pixel on the side of my light bar...they're plenty bright to light the entire thing evenly if you're lighting it while it's straight.
My other approach, used for the smaller box, was to bend the plastic using heat..then adding two lights to each side to light the bar. This also works...just make sure you test your bent plastic before you glue it down, as light gets severely diminished when going around a corner with this technique.
Programming the light effects
For the programming, if you chose neopixels, you should use whatever pattern/color you like best. For me, I chose the default Adafruit library, and then used the Rainbowcycle portion. You can find a breakdown of it here and the library here.
If you're simply doing an LED flicker...then the logic is simple..two random numbers...one for how long the lights on (I used 200ms to 3 seconds), and a random number for how long it's off. I looped through the on/off for each number pair 1-5 times, then grabbed two new random numbers. I've sadly lost this code, but that should be enough for someone to reconstruct it. I don't think that's the best flicker code out there, but it looked pretty nice for my smaller steampunk case.
Adding Switches to control power
Lights are fun, but sometimes it's nice to have them either stop changing colors, to force a change of color, or to turn off entirely. I added a button, and two switches to the side of the case. The first switch is for the servo that went to the gears...as fun as that is to watch, it can get distracting over time (and I worried about burning out the servo). The second switch controlled the lights...in my case it stops the rainbow effect from changing colors. I also wired up a button to the arduino in case I wanted to add a program later to control which light pattern was going on. You should feel fee to add buttons if you want more control, or remove them if you need less. My recommendation is to put all of these on the bottom of the book, where the USB ports are. This will allow you to stand the book up and hide most of the electronics, as they'll be facing down.
Drilling holes in the box results in the same challenge as cutting it...the holes end up a bit rough and sloppy. I found that by covering the holes with some gears, you'll easily cover these holes while also making the switches look much cooler than they would. A bit of Rustoleum on them will get rid of the bright silver look as well.
Things I learned:
One thing about the Arduino Micro..you'll want to mount it on a pedestal of some sort so that it's lifted...this allows for a microUSB cable to get to it so you can program it in the future.
One other effect I want to note...which I attempted and learned from...was my attempt to light the raspberry pi case. When I painted my clear pi case, I masked off the bottom and the lower sides in hopes of adding a neopixel inside the case and creating a glow around the bottom. There wasn't sufficient room between the case, the amount I masked off, and the edges to really show any light. Also when the box was open, it was typically light, and so there wasn't enough brightness. I note this to both give the idea, but also to relay what I learned in failing.
Step 7: Finishing Up the Details
Steampunk Dials and Gauges
I want to give credit to the great Major Q, and his youtube steampunk gauge tutorial. I wanted small gauges, so I ordered some Kids party favor watches from Amazon. The steps are straightforward:
- Remove the plastic watch face
- Print out some gauges (Google is your friend here....it took me several tries to get the sizing right)
- Cut the gauges out, and place them into the plastic from the watch face
- I placed a strip of copper tape around the edge..this hid the edge, and gives the illusion that the gauge is metal backed. It also covers any clear plastic that may normally show through
Once you've created some gauges, you can affix them wherever you like..for me I put them on the back of the book cover to decorate it.
Chain to hold the book open
A really simple way to spruce up the project is to use a bit of copper colored chain to hold the book open such that the back is held just past a 90 degree angle. This will help show off the gauges, and makes it look as if the book has transformed into a 'console'. To do this, simply affix a chain from the cover of the book to the inside. The pics will show where to connect it, and how to hide any glue/imperfections with...you guessed it...more metal gears!
Glue anything that's not glued down
At this point, I haven't said necessarily to glue things down...but you should! By now your electronics are wired up, you've got your switches and such in place. You've also got your gears/window/lights all setup if you chose to go that route. You can always use extra gears to decorate an area that looks sparse, or shop for a few more pieces that give it that extra bit of pizzazz.
Setting up Retropie (Optional)
If you're using this for video games as a steampunk console, then you'll want to install Retropie. Again, this is out of scope for what I want to go over in this instructable, but there are great instructions over at: The official Retropie site. To really polish things off, I recommend David Marti's Steampunk Theme which you can download and install from retropie's theme gallery.
The reason I mark this as optional, is that you may decide to turn this into a full on computer, or use it as a Kali box, or many other options which a Raspberry pi is suited. The ports are all exposed with this design, so really you have no limits.
Thankyou
Thankyou for taking time to read through this instructable. Please leave your feedback and questions in the comments. I'm hoping this is the beginning of many projects I share on Instructables. This site has taught me many things, inspired me, and entertained me. I'm glad to begin to give back to the community. I hope you learned some tricks, and enjoyed this. Please share any builds you do in the comments below!