Designing and 3D printing a case for a Wireless Game Controller.
A project by:
Gabriel B. Soares
This is a project that I did for a coworker at Alarm.com. For halloween, he made a t-shirt with a 16 by 16 LED matrix, from which he can play games such as pong. In order to control the games, he built wireless game controllers each with an nRF24L01+ transceiver and an Atmega328p MCU. Since I have access to 3D printers at the Techshop and have experience making CAD drawings, he asked me to make a custom case for his controller. My involvement in this project was therefore only in the design of the case for the controller, and was not involved in the PCB design nor did I write code for this.
You can check out the project repository on GitHub for the controller. The controller will then be integrated with the LED shirt in the future. Through these two links you can download the source code for the project as well as the 3D drawing and STL files (for 3D printing).
The first thing I always do when I have to design a case for a device (I've done about three so far) is to get a hold of the thing that I am building the case for, grab a good pair of calipers, and start taking as many measurements as I can. This is so that I can create a 3D model of the device itself, and then have references to build the case around of it. I find this particularly helpful since it allows me to check for interferences in the final design and make sure that I won't run into issues once I take it to the 3D printer.
Some of the advanced PCB layout software allow you to export your final layout to an IDF (intermediate data format), which I can then open in Autodesk Inventor and get a 3D rendering of the PCB board and its components. However, I did not create the layout for the game controller board, and therefore had to take all the measurements to figure out the size of each component. The images below show my notes where I wrote down all the measurements of the board, and the 3D result once I created a rendering of what the board looked like. With the 3D model of the board, I could start creating the case.
I started with the simplest piece of the case: the bottom. There are not too many design requirements for the bottom piece other than it needs to accommodate the batteries, and have enough support so that the PCB doesn't move around as the controller is used. I began with a shape similar to that of the PCB, and began drawing sketches, extruding and modifying my design so that the case would not only hold the board but also be sturdy. Since the controller sides are large enough, I had to incorporate ribs that prevent the sides from flexing. Since this is a project that was only going to be 3D printed (not injection molded), I didn't bother adding draft angles to the walls or anything of the sort.
The toughest part to design on the bottom piece was the snapping mechanism that secures with the top part of the case. I decided to use a tab with a rounded profile which snaps into the opposite profile on the top. In the final result, this mechanism creates a very secure connection between the pieces and requires a large screw-driver to open.
The top part of the case was much harder to design since I had to accommodate for most of the electronic components (nRF24L01+, pushbuttons, on/off switch, joystick, etc). If I had designed the layout of the board and picked the components, I probably would have chosen different pushbuttons and on/off switches than the ones used. These components were very short, which meant that I had to create extension pieces that allowed the user to turn the device on/off and press the buttons. These extension pieces also needed to securely connect to the components on the board and not move when the controller is shaken.
Notice that the top piece has a rounded channel removed around the edge of the case, which mates with the tab on the bottom piece. The lip that protrudes out from the case was added in order to facilitate the opening of the case with a screwdriver.
With the top and bottom pieces of the controller fully designed, along with a model of the PCB, I could then mate all the components together and check that all the fittings were appropriate and that there were no geometry collisions.
Once I was happy with the design, the next step was to take my files to the shop and convert the 3D images into STL (Stereolithography) files, which can then be interpreted and sliced by the 3D printing software. At standard resolution, it took about 1hr for each side of the case to print.
I am very happy with how the final controller turned out, and most importantly, so was my coworker. I might have to print a couple more of these once he finishes writing the firmware for the controllers and is ready to be fully used. The only modifications I would make to this would be to try to use different components on the PCB in order to be able to reduce the size of the case (it fits comfortably in your hands, but could probably be less tall). I would also try to use different components for the button and the on/off switch so that I wouldn't have to use the extension pieces. Lastly, another nice feature of the 3D printed part is that it is see-through enough that you can see the LEDs that are on the board shine right through the layered plastic of the 3D printed part.