Introduction: O.S.E.S. (Open-Source Entertainment System); Utilizing Arduino

About: 15 year old inventor, hacker and electronics enthusiast. Hope you find my projects of use.

In response to the increased prices of modern portable gaming systems, hindering them extremely unconventional and inaccessible, O.S.E.S. was created. O.S.E.S. is an affordable, open-source and ergonomic entertainment system alternative.

This project is very easy to assemble yourself because all component and parts are easy to find and cheap on Digikey, eBay, Amazon, Alibaba, etc.

The enclosure and body of O.S.E.S. was designed in Autodesk Inventor and the STL files will be provided above so that anyone can 3d print it themselves.

An Arduino Pro Micro was used for this project because of its ability to communicate via USB to other devices, enabling it to emulate a keyboard. It is also very small, lightweight and consumes very little power. The code is self-explanatory and is also provided below.

Welcome to My First Instructable!

Step 1: Materials




3d Printing

  • XYZ da Vinci Mini 3d Printer (What I Used)
  • 80 m. PLA Filament


  • Soldering Iron
  • Electric Hand Drill
  • Hot Glue Gun
  • Wire Strippers (Optional)
  • Cable Cutters/Scissors

Step 2: How It Works

O.S.E.S. emulates a keyboard through the Arduino Pro Micro, which takes digital inputs from our tactile switches and sends signals to the device via the micro USB to micro USB OTG cable. This process tricks any USB-compatible device into thinking we're using a gamepad.

Step 3: 3d Printing

My designs are simple and easy to print, however if you do not happen to own a 3d printer or know of someone who does, there are always other alternatives such as your local library or websites that offer such printing services like

O.S.E.S. consists of three 3d printed parts: 2 halves of the controller base and the phone case; which is not attached to the main base for the purpose of enabling you to customize the case to fit your own device of choice.

My Print Settings:

  • 0.1 mm layer height
  • Shell thickness: Thick (My printing software does not offer a numerical value)
  • 90% fill density (change this to satisfy your preferred weight and density)
  • Filament type: PLA
  • Printing speed: 20 mm/s
  • Temperature: around 75 C


Step 4: The Code

The code is easy to follow and self-explanatory, even for beginners as it only uses one library: "Keyboard.h" and this is already built into the Arduino IDE so there's no need for additional downloads.


Step 5: Schematics/Electronic Connections/Soldering


  • (2) Perforated boards are used for splitting the circuitry up on either side of your device.
  • This yields an ergonomic feeling when handling all of the controls while gaming.
  • The up, down, left, right and select buttons are placed on the left side and the a, b and start buttons are placed on the the right side. This ensures that the classic "NES" controller feel is still present in O.S.E.S.


Pin 2 on Arduino pro micro ----> "Left" button on gamepad

Pin 3 on Arduino pro micro ----> "Right" button on gamepad

Pin 4 on Arduino pro micro ----> "A" button on gamepad

Pin 5 on Arduino pro micro ----> "B" button on gamepad

Pin 6 on Arduino pro micro ----> "Select" button on gamepad

Pin 7 on Arduino pro micro ----> "Start" button on gamepad

Pin 8 on Arduino pro micro ----> "Up" button on gamepad

Pin 9 on Arduino pro micro ----> "Down" button on gamepad

Step 6: Putting Our 3d Printed Parts Together

Assembly of the two base parts is extremely easy.

  1. First we place them together, making sure they are aligned.
  2. Next we set our board over the back and screw the four screws into each corner, reinforcing and holding the design in place.
  3. Lastly, set the phone case in the center with hot glue.

As a side note, all of this is unnecessary if your printer can fit the dimensions of the two parts together as whole. Obviously mine can not.

Step 7: Placing Circuitry Into Controller

  1. Cut each perforated board into 1.8 x 1.4 inch pieces to fit the dimensions of the gamepad.
  2. Place the left-sided circuit board into the controller and secure with hot glue.
  3. Run the left-hand side's perforated circuit board wires down it's slit along the cutout under the phone case and up the right-side's slit into the Arduino. Secure these with hot glue if needed.
  4. Solder the wires from the left-sided circuit board to the right-sided one.
  5. Once soldered, and wires are adequately lengthened, fasten the right-sided perforated board into position with hot glue.
  6. Finally, use (2) zip-ties to separate the wires from the middle of the right side of the controller to make room for the Micro USB to Micro USB OTG Cable.

Step 8: Play & Enjoy!

You will now be able to play any games possible with this device!

Hope you found my first instructable fun to follow and educating!

If you have any questions leave them in the comments or message me, I will try to answer them and offer any further assistance.

I will be releasing future projects that resolve common problems on instructables and my public Google Docs.

MacGyver Challenge

Participated in the
MacGyver Challenge

First Time Author Contest

Participated in the
First Time Author Contest