At Maker Faire I was showing a clone of the Oculus Rift built out of an iPad Mini.
This version was built with a 3d printed case wrapped around an iPad mini. The software and controller are the same I wrote about on my personal blog previously.
The case was designed in Sketchup based on the dimensions in the apple case guidelines for iPad mini and printed on the RepRap at the SB Hackerspace.
It turned out every iPad mini I tried in the 3D warehouse had the wrong dimensions, so I just created a box of the correct dimensions from the a PDF with iPad mini dimensions from the apple developer site.
Before 3d printing I printed paper versions of each piece on paper, and I cut out foam core to make sure things were the correct size.
For the first printed part I quickly noticed my design would take FOREVER to print quickly, but this also gave me a chance to find that the 3d printed part was coming out too small. I corrected for this by setting a 1.03 scale factor when slicing future parts.
I intentionally made the gap for the iPad mini 2mm too large on each dimension so that there would be some tolerance if the prints are just a little too small, and so that the plastic doesn’t scratch up the iPad. I lined the inside parts that touch the iPad with adhesive felt from a craft store.
Building this for yourself
You will need everything listed below:
- iOS Developer subscription to deploy on a device. ($99/year)
- Mac with Xcode (I am using Xcode 4 on OS X Lion 10.7)
- Access to a 3d printer.
- iPad Mini
- 3d printed parts (Two sides, top/bottom parts (identical), lens holding piece)
- Nuts and bolts. 12 3/4″ long 1/4 20 hex head bolts, and corresponding nuts.
- 4 Lenses (http://www.frys.com/product/4383195)
- Adhesive felt (I bought a 9×11 sheet for something like $1.50 at a craft store)
- Arduino Uno
- RedBearLab BLE shield (http://www.makershed.com/Bluetooth_Low_Energy_BLE_Arduino_Shield_p/mkrbl1.htm)
- Sparkfun Joystick Shield (https://www.sparkfun.com/products/9760)
- Power Source. A 9V battery with a barrel connector cable works fine. I used a MintyBoost.
- Two LEDs, a small pushbutton, and two 330 ohm resistors are used for status lights and a “Start” button. One LED/resistor are used to indicate power (between 5V and ground) and the other is between A2 and ground to indicate that the controller is connected. The small pushbutton for “Start” connects pin 7 and ground when pressed. None of these are required for the application in its current state.
The Xcode projects, Arudino sketch, and 3d models are on github: https://github.com/sphereinabox/iPadRiftPrototype
- Arduino/BleJoystickShieldArduinoSketch is the arduino sketch to send the joystick information over BLE.
- iOS/BLEJoystickShieldMobile is a test application for the arduino sketch that shows the position of the stick and all buttons.
- iOS/CameraProcessing is the virtual application to run on the iPad.
- Sketchup/ contains the Sketchup file for the current case design, and the STL files in case you’re working outside SketchUp.
I plan on porting the native portions of this to Unity 3d so that I don’ t have to build a game engine myself. Unfortunately, this will require the pro edition (even after the free iOS announcement today) because of the render-to-texture required.
[Also, I should finally get to try a real Oculus Rift in a week or two to see how it compares.]