When I first saw the Adafruit Joy Bonnet for the Raspberry Pi Zero I know I had to get one and try it out. 🙂 I liked the idea of having a small RetroPie rig I could keep in my pocket.
As if I needed another reason to buy it, the back of the bonnet (aka hat or phat) says “It’s Dangerous To Go Alone! Take This.” — which harkened many fond memories of playing The Legend of Zelda.
Why did you design your own case instead of using something out there already?
From poking around online, on Thingiverse.com etc. I saw a couple of cases for the Joy Bonnet but didn’t see any I really liked. I did try printing this model which looked like it might be fun, bit I can see why the two ‘makes’ only show the prints and not the assembled unit. The fit and finish, even when printed on my well tuned printer was not what I wanted. I didn’t like how the top and bottom mated leaving a gap and didn’t like how the buttons felt/moved and tried post processing them by hand to improve things. I liked it in concept but not execution.
A while back I designed and built this RedHat Shadowman Sign and I was quite happy with how that case turned out so I decided to use similar techniques to build a case for this Pi Zero W + Joy Bonnet setup.
The Build Process
The first thing was to solder the headers onto the bonnet. I took the regular headers and installed them upside down — meaning the short end of the pins is what I wanted to preserve and the long ends went through the PCB and were clipped short after soldering. This worked great and was the perfect length for use with the low profile female headers on the bonnet.
On Adafruit.com I didn’t see any spacers of the correct height for this project ( The brass standoffs for Pi Hats they had were sized for full height headers) so I decided to print my own. You should be able to use an M2.5mm or #4-40 screw to secure the standoffs to the bonnet. I used #4-40 5/16″ long screws as that is what I had on hand and it worked out great.
With the standoffs in place I was able to assemble this rig and test things out. I installed the RetroPie OS (For Pi 0/1) image onto the 16GB class 10 micro USB card via ApplePi-Baker and used the HDMI and 2.5A micro USB power supply I had on my workbench.
Next up I designed a case using similar design details as I’ve used in the past. (2mm thick walls, tabs that can print in place without supports and chamfered holes for the screws etc.) This was also the first time I baked my name into the model as a designer — I hope folks don’t mind that too much, plus once assembled you’ll need see that again.
ASSEMBLY TIPS: Test fit your screws ahead of time and make sure your screw heads are flush with the bottom of the case. If you had some sagging, now is the time to clean that up with an X-acto knife or similar. I used 18-8 Stanless Steel #4-40 screws that were 3/8″ long to attach the Pi Zero W to the case.
Next up was designing a lid for the case and buttons that lined up with the buttons on the Joy Bonnet. I made two or three test prints of the lid and some buttons until I got a layout and movement that felt and looked right to me.
You’ll want 6 of the 5.5mm buttons and 2 of the 3mm buttons. They print in a couple of minutes so printing all the colors below was not too arduous a task. I also included STLs for buttons of a few other sizes I tested in case it is helpful to folks with printers that are tuned differently.
I test fit each button to make sure there were no bits or sags or anything that would impede button movement. Make sure they move smoothly.
Next test fit the lid to make sure it snaps into the case properly and is not bowed. If it is bowed make sure your print was clean and file the tabs and/or clean out the pockets/mortises (where the tabs lock into) until you have a nice clean fit.
Also make sure to remove the button on the D-pad before trying to fit the case lid.
I also filed to top of each button so they have a nice smooth feel when in use.
Additional Design Notes:
The area of the lid under the D-pad button is very thin — 1mm — so that the D-pad button can slide cleanly over it. ( I don’t like the cases that leave the metal and plastic guts of the D-pad exposed)
The front wall of the case (where the USB and HDMI ports are exposed) are 0.5mm thinner than the rest of the case so that the USB and HDMI cables fit securely into the ports. The two PCBs are pressed up against the interior of this wall and help maintain case rigidity on par with the rest of the case which is a full 2mm thick.
I printed the A,B,X and Y buttons in old school Non-USA SNES colors and I am happy with the results.
Printed on a Lulzbot TAZ 6 printer using ColorFabb nGen Red, Dark Blue, Light Green, Yellow and Black filament at 230 degrees C. I’ve found nGen to have minimal warping and got away with not having to print a brim. The only part that needed supports was the case bottom this way the top of the port opening was nice and clean/straight. When removing the support material be careful not to clip out the vertical support between the two USB ports as I did on one of my cases.
If you make a print of this case for yourself or remix it please be sure to comment here or on Thingiverse as I’d love to see what folks do with this project.
Happy Retro Gaming!