Introduction: O.S.E.S. (Open-Source Entertainment System); Utilizing Arduino
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
Electronics
- Standard Tactile Switches (8) ----> $0.09 (Alibaba) https://www.alibaba.com/product-detail/push-button...
- Micro USB to Micro USB OTG Cable (1) ----> $4.00 (HakShop) https://hakshop.com/products/micro-to-micro-otg
- Perf board (2) ----> $0.65 (Alibaba) https://www.alibaba.com/product-detail/EUROPEAN-f...
- 30 AWG Wire (20 in.) ----> $3.50 (Ebay) http://www.ebay.com/itm/Breadboard-P-N-B-30-1000Ti...
Controller
- Arduino Pro Micro (1) ----> $1.38 (Ebay) http://www.ebay.com/itm/Pro-Micro-ATMEGA328P-5V-16...
Materials
- 0.75 Inch Screws (4) ----> $0.05 (Alibaba) https://www.alibaba.com/product-detail/High-qualit...
- Zip-ties (2) ----> >$0.01 (Alibaba) https://www.alibaba.com/product-detail/self-locki...
- Hot Glue Stick (1) ----> $0.03 (Alibaba) https://www.alibaba.com/product-detail/China-Manuf...
- 7 x 2 in. Wood Piece for Reinforcing
3d Printing
- XYZ da Vinci Mini 3d Printer (What I Used)
- 80 m. PLA Filament
Tools
- 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
* STL FILES BELOW *
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.
* CODE IS BELOW *
Attachments
Step 5: Schematics/Electronic Connections/Soldering
Configuration:
- (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.
Connections:
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.
- First we place them together, making sure they are aligned.
- Next we set our board over the back and screw the four screws into each corner, reinforcing and holding the design in place.
- 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
- Cut each perforated board into 1.8 x 1.4 inch pieces to fit the dimensions of the gamepad.
- Place the left-sided circuit board into the controller and secure with hot glue.
- 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.
- Solder the wires from the left-sided circuit board to the right-sided one.
- Once soldered, and wires are adequately lengthened, fasten the right-sided perforated board into position with hot glue.
- 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.

Participated in the
First Time Author Contest

Participated in the
MacGyver Challenge
17 Comments
Question 5 years ago
Its a bit late for commenting, but can you please figure out how to fit it for something other than a Samasung?
5 years ago
How about "M.O.S.E.S."?
"Mobile Open-Source Entertainment System"? ;)
5 years ago
Wow thank you so much, maybe we could collaborate in the future!
5 years ago
Where did you learn to program, and curcuit design?
Reply 5 years ago
Self taught, thanks to the internet and open source resources. : )
Reply 5 years ago
Really cool man!yeah im still trying to find some good recourses.
Reply 5 years 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.
5 years ago
Perfect!
5 years ago
Do you have numerical measurements for shell thickness and printing speed?
Reply 5 years 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.
5 years 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?
Reply 5 years 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.
Thanks
5 years 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.
Reply 5 years 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
5 years ago
isn't that breadboard photo a bit vague? :\
Reply 5 years 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.
Thanks
5 years ago
That is awesome! I really want to make one of these.