Introduction: Oculus Thrift: a Poor Man's Approach to VR Gaming

About: I have been a tinkerer all my life and grew up loving taking things apart and piecing them back together into gadgets and gizmos a-plenty. Instructables had been my go to for hands on learning in a fun and fri…

Hello, instructa-buddies!

Today I am going to show you all how to make a cheap Oculus Rift like device. I am super excited, not only because this is such a fun project, but because this is my first instructables! What makes this project great is that other DIY VR Gaming rigs involve a transmitter + receiver, but this project does not, which allows for full degree of motion. Because of this I must thank `M8` for his contributions to this project as well as all of you fine people for being just so darn good looking.

Alrighty, lets get started!

Step 1: ​What You Will Need

Below is a list of the various components you will need for this project. They are split into three separate categories, and in some cases can be interchanged for a different service and or item('s).


1) Arduino Leonardo (or any board based on the same ATmega32U4 microcontroller)

1.1) Although, the Leonardo is small in compact in nature it is not absolutely necessary to have this exact Arduino Microcontroller for this project. You do have the option of formatting an Uno or a Mega in the same way. I am unsure how the wiring would be done for this particular setup, but if you wish to use a different Arduino, please follow the awesome Instructables below done by my good man atharva12:

Make arduino uno work like leonardo by atharva12 in arduino

2)9 Degrees of Freedom IMU

3) Bi-Directional 3.3V to 5V logic level converter

4)10k resistor

5) Tact Switch

6)Bread Board

7)Jumper Wires


8)Gaming PC: One with a higher end gaming card would be preferable, as the resolution is an important factor when your face is merely inches from the screen. A comparable gaming card that allows you to run your favorite game on HIGH to ULTRA settings should do just fine.

9) Smart Phone or Small High resolution Screen: This will serve as the receiving monitor for your VR setup. Network load is high in this instance, so please be aware that an external monitor (small and lightweight enough) would be preferable. As I am do have access to a monitor that meets the above criteria, I will be using my Smart Phone.

10) VR Goggles or 3D Glasses: When it comes to VR Goggles your options are almost limitless. Now a days there is a price point for every individual interested in the VR experience. Here are a few of the most popular VR Goggles available:

$15Google Cardboard

$43Starlight SL900 Virtual Reality Headset

$72Samsung Gear VR - Virtual Reality Headset

If you decide to use 3D Glasses (polarized or colored lens) really any generic pair will do. This may be the cheapest route, as the glasses are generally inexpensive, and the base install of iZ3D includes the standard Red+Blue 3D separation overlay. You can even get these glasses for free from the movie theater!

What? You're suppose to give them back after the movie is done? Oh......



11) A remote desktop viewer: I am personally using Chrome Remote Desktop as it is compatible with both Andriod and Iphone.

In addition to the above there are several other applications one could:

11.1)Kinoni Remote Desktop

11.2) Trinus Gyre




All of these products have there pros and cons (i.e. lag, sound, and over all stream quality), so try them all out and find your favorite.

Whats my favorite?

Well there is another software that offers a wired external monitor capability for smart devices called iDisplay. This software is free for Windows and Apple products, however, the app is currently listed a $20 (keep your eyes peeled as this goes on sale frequently). It works on Android and Apple products, and what makes this great is that you can turn your device into an external monitor that is fed video via the USB cable. It should also be noted that this options negates the aspect of network load + delay.

12) 3D Overlay Software: This can be done using iZ3d. This product offers a variety of 3D displays: One-person or multi-person, one-view or multi-view, using glasses or auto-stereoscopic. With iZ3D software, a PC becomes a universal 3D signal source that generates stereoscopic content for virtually any 3D display system, so that the user can play games, watch movies and pictures in 3D. Although, most of capabilities come with the purchase of the product, it does offer a 30-Day trial period. Please refer to the product documentation for more information on compatible games, if you so choose to use this.

Additionally, for SBS (Side by Side) specific setups you can use Tridef 3D or VorpX. Although, both of these are proprietary, I believe that Tridef 3D has a free trial for those of you who want to test it out before taking the plunge. This may be your best bet given that VorpX has been known to only work with specific VR Gaming headsets. More inofofmation on the specifics is available on the website above.

13) The Arduino compiler: This will allow us to compile the script that allows the Leonardo to interpret the Accelerometer + Magnetometer + Gyroscopic feed coming from the 9 DOF IMU.

Step 2: Wire It Up

Now for the nitty gritty. Grab all your Components and a clean work surface with good lighting, we do NOT want to put the Flux Capacitor in backwards.

First: We are going to ground all the boards using black jumper wires.

Second: Connect all their power sources; taking special note of the 3.3V source and the 5V source for the logic level converter.

Third: Hook up all the subsequent data connections.

If you have any additional questions about the wiring diagram above there are some wonderful illustrations on the Sparkfun website. Not only do they have a detailed hookup guide for the LSM9DS0 Breakout Board, but they also offer example code, which is linked below:


It is recommended to view the above in conjunction with the Pin Mapping diagram for the Leonardo found below:

ATmega 32U4-Arduino Pin Mapping

NOTE: The placement of the 10K Resistor allows the Tact Switch's signal to resolve back to zero. Without this, if the switch was pressed, the circuit would interpret the bounce in the switch as a high state and would remain there until the whole board was powered off. For more information on 'Pull Down Resistors' and their function within the circuit, please refer to the Arduino documentation below:

Digital Pins

The above diagram is very rudimentary so if you get the change I would recommend heading over to DigiKey and check out their SchemeIt app. They have hundreds of components to choose from and its a definite must when rendering circuit diagrams.

Step 3: Installation

Time to fire up your PC and install the previously specified services. Please bear in mind that there are several different software packages offered to provide the below services, so refer to 'Step #1' of this article for further information.

First: Install a remote desktop viewer

If you are using a Smart Phone, now is the time to turn that on as well and install your companion Remote Desktop Viewing App.

NOTE: If you are using an external monitor you may skip this step entirely. If using an Smart Phone as a monitor then proceed to install the IDisplay on both your PC and your Smart Phone.

Second: Install a 3D overlay.

Third: install the Arduino compiler from the Arduino website

Step 4: Compile

M8 did a wonderful job writing this code, even going as far as to take into account the rotation of the earth. Per his instructions to compile you must create a directory called SFE_LSM9DS0 underneath {install directory}/Adruino/libraries, and put SFE_LSM9DS0.cpp and SFE_LSM9DS0.h in that folder. Then proceed to run and compile the headMouse2.ino script in the Arduino Compiler. For additional information on how to add your own libraries to the Arduino environment, refer to the below documentation:

Installing Additional Arduino Libraries

At this point you should see the device load and start taking over the mouse control. Please be aware that when initially plugging in the device it will pause for 1 second to allow for calibration. You may find it to be prudent to lay the circuit on a flat surface when initializing to ensure an accurate reading is received. Also, please be aware that the code expects the device to be on the right hand side of your head, so make adjustments accordingly,

Step 5: Closing Remarks

Now fire everything up and enjoy your new frugal VR Gaming experience. Please be aware (as previously stated) the setup, which involves VR Goggles and a smart phone, is heavily network dependent. In that, you may experience delays in reaction time, as well as lag and or poor video performance. While I have Fiber Optic cable running to my house, as well as CAT 6E run throughout, I still experienced about a 10 milisecond delay in video feed. This is tolerable for most video games, however, on higher demand games that involve a lot of sporadic movement you may find it to be more visually pleasing to use 3D glasses and a multi monitor setup.

Where To Go From Here

The implementation could easily be altered to suit your liking. Here are some additions to this setup that I find make it more enjoyable universal and all together enjoyable:

1) A custom case. A 3D printer would be perfect for designing a sleak mount that holds all the components tight and compact. Although I have experience in 3D modeling I do not own a 3D printer, so to whom it may pertain, I think this would be a great next step in the project.

2) A bluetooth adapter for the Leonardo. This removes the need for the usb connection and slightly decreases the weight. Although your reaction time may go down this would allow you greater mobility when gaming.

3) As mentioned previously an external monitor would negate any Network related delays as it could be hooked directly into the PC. Although, high resolution external monitors are relatively cheap, I did not find it "Budget Frindly" enough to fit in this project. I am also just really cheap.

4) Finally, and I know its trivial, but a good quality pair of head phones would really take your VR Experience to the next level. It is one thing that I believe is most commonly overlooked, even-though, it provides that next level of immersion.


This project is a tinkerers dream. The sky is the limit when it comes to implementation and alterations. To that end, I pass this along to you fine people.

"What is it?"

"Your father’s lightsaber. This is the weapon of a Jedi Knight. Not as clumsy or random as a blaster; an elegant weapon for a more civilized age."

Remix Contest 2016

Participated in the
Remix Contest 2016

Arduino Contest 2016

Participated in the
Arduino Contest 2016