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 shapeways.com

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.



    • Organization Contest

      Organization Contest
    • Sweet Treats Challenge

      Sweet Treats Challenge
    • Remix Contest

      Remix Contest

    17 Discussions


    Question 1 year ago

    Its a bit late for commenting, but can you please figure out how to fit it for something other than a Samasung?


    1 year ago

    How about "M.O.S.E.S."?

    "Mobile Open-Source Entertainment System"? ;)

    Ulysses G

    1 year ago

    Wow thank you so much, maybe we could collaborate in the future!

    VoltGeUlysses G

    Reply 1 year ago

    Self taught, thanks to the internet and open source resources. : )

    Ulysses GVoltGe

    Reply 1 year ago

    Really cool man!yeah im still trying to find some good recourses.

    VoltGeUlysses G

    Reply 1 year ago

    Thanks bro, try downloading the Arduino IDE here: https://www.arduino.cc/en/Main/Software
    This is a free program that lets you get introduced to basic programming through their pre-installed code examples until you've built your way up to advanced algorithms. There are many microcontrollers you can buy very cheaply off Ebay to get started with hardware part of it as well.

    VoltGeMachine Lord Zero

    Reply 1 year ago

    Speed is listed as 20 mm/s, and my printing software only states "thick" for shell thickness, it does not offer me a numerical value.


    1 year ago

    Great first Instructable! Thanks for taking the time to share. I really like your design! Hey, are you using an emulator to play games or just getting them from the Play Store?

    1 reply

    Reply 1 year ago

    On the Google Play Store there are countless apps to play or emulate games of your choice. Here I am using "Gba+;" an emulator found on the Play Store.


    1 year ago

    I'm missing a part in your materials list: a flagship phone. By using one of those you could argue that this system is just as expensive if not even more expensive as modern consoles / handhelds.

    1 reply

    Reply 1 year ago

    Usually people buy gaming consoles on top of their previously owned devices such as phones. On top of that, how did you type this comment? Whether it was done via a PC, tablet or local library as long as it supports USB (which almost all electronics do) you should be fine.
    If you have any more questions please ask. Thanks


    Reply 1 year ago

    Each button is grounded, so the only variation in my circuitry is the pins to which they are connected. These are listed in the "connections" section.