NameNetIDSection
Udit Paiupai3ECE 120
Arush Bansalabans3ECE 120

Statement of Purpose

The project is creating a custom controller for use with games on PC and, if possible, also video game consoles such as the Nintendo Switch and the Xbox Series X. The controller will have 2 joysticks, 4 face buttons, a directional pad/4 directional buttons, 4 shoulder buttons, 2 rear paddles, and 3 options buttons, and will use an Arduino to interface with the PC it is connected to via USB or Bluetooth. This controller will also have software that we make to add profiles to it, so you can map different commands to each button and save it. The profile currently in use can be indicated with LEDs. This controller is unique in its ability to store multiple profiles. We were also thinking of using a fingerprint sensor to switch profiles on the fly depending on the user, but decided against implementing it for now.

Background Research

We first looked up how to create a custom controller and found some videos on the topic. We also looked at some Arduino boards to find ones that had enough input ports for our buttons and sticks. We considered straight up buying controller PCBs but decided against it as they were a bit too expensive and hard to work with. Our main inspiration for this project was that we were both appalled at prices of official game controllers, so we thought 'Why not just make our own controller?'. We have thought of using fingerprint sensors in the past and thought it would be cool to implement it into a controller. Initially we had the idea of just making a basic controller, but then we thought 'We can do anything here, why not make it different?' so we decided to make it have extra rear shoulder buttons, be able to switch between wired and wireless through Bluetooth, and be able to have multiple control profiles.

Block Diagram / Flow Chart


System Overview

The joysticks, buttons, Bluetooth module, and slide switch all connect to the Arduino, which is powered by a battery. The slide switch works as the on/off switch for the entire controller, and is thus directly connected to the battery, so the Arduino actually gets fed power through the switch. The Arduino then processes inputs and outputs them to the computer or console that it is connected to, either by wire or via the Bluetooth module. It also outputs to the LEDs connected to it to signal whether it is on and what profile is in use at the moment.

Parts

Part NameQuantityUnit PriceVendorLink
Arduino Leonardo with Headers1$ 21.95Sparkfunhttps://www.sparkfun.com/products/11286
HC-05 Bluetooth Module for Arduino1$ 0Honors Lab InventoryN/A
Generic LEDs3$ 0Honors Lab InventoryN/A
9V D Battery1$ 0Honors Lab InventoryN/A
DC Battery Harness1$ 0Honors Lab InventoryN/A
5V Relay Module for Arduino1$ 0Honors Lab InventoryN/A
Analog 2-Axis Thumb Joystick with Select Button2$ 5.95Adafruithttps://www.adafruit.com/product/512
15pack Colorful Round Tactile Button Switches1$ 5.95Adafruithttps://www.adafruit.com/product/1009
16mm Momentary Push Button Switches6$ 0.95Adafruit

https://www.adafruit.com/product/1503

10pack 12x12x6mm Tactile Switch Buttons1$ 2.50Adafruithttps://www.adafruit.com/product/1119
SparkFun 16 Output I/O Expander1$ 6.50Sparkfunhttps://www.sparkfun.com/products/13601
SPST Slide Switch1$ 1.14Digikeyhttps://www.digikey.com/en/products/detail/cw-industries/GF-123-3011/4089772

Possible Challenges

Some challenges that we foresee in working on our project are figuring out how to actually solder stuff properly, as we do not have much experience with soldering, as well as learning how to CAD a shell for the controller, figuring out the wiring for the whole system and keeping it compact enough to fit in the shell, and learning how to set up an Arduino through code as both of us have very little experience with Arduinos and electronics in general.

Link to report: https://docs.google.com/document/d/1x-oxjfUqrxzzVkfECBFWMLgm2fJbiAKwGicpHj-w09k/edit?usp=sharing

Link to video: https://drive.google.com/file/d/1gz5LGN2rjD6PTFqbr5PIb_OUuZjT1oae/view?usp=sharing

References

[1]A. Joseph, "Interfacing Bluetooth Module (HC-05) with Arduino Uno", Arduino Project Hub, 2020. [Online]. Available: https://create.arduino.cc/projecthub/akshayjoseph666/interfacing-bluetooth-module-hc-05-with-arduino-uno-f5209b. [Accessed: 02- Dec- 2021].

[2]"Choosing an Arduino for Your Project - learn.sparkfun.com", Learn.sparkfun.com. [Online]. Available: https://learn.sparkfun.com/tutorials/choosing-an-arduino-for-your-project. [Accessed: 02- Dec- 2021].

[3]"Standard Arduino Comparison Guide - SparkFun Electronics", Sparkfun.com. [Online]. Available: https://www.sparkfun.com/standard_arduino_comparison_guide. [Accessed: 02- Dec- 2021].

[4]"SX1509 I/O Expander Breakout Hookup Guide - learn.sparkfun.com", Learn.sparkfun.com. [Online]. Available: https://learn.sparkfun.com/tutorials/sx1509-io-expander-breakout-hookup-guide/all. [Accessed: 02- Dec- 2021].

[5]"How to Make Your Own PC DIY Gaming Controller Using Arduino", YouTube. [Online]. Available: https://www.youtube.com/watch?v=bDikklGx-tM. [Accessed: 20- Sept- 2021].

[6]"Making a PC Game Controller with Arduino Uno", YouTube. [Online]. Available: https://www.youtube.com/watch?v=EkzCk_oesJk. [Accessed: 20- Sept- 2021].

[7]Heironimus, M., "GitHub - MHeironimus/ArduinoJoystickLibrary: An Arduino library that adds one or more joysticks to the list of HID devices an Arduino Leonardo or Arduino Micro can support.", GitHub. [Online]. Available: https://github.com/MHeironimus/ArduinoJoystickLibrary. [Accessed: 02- Dec- 2021].

[8]"GitHub - sparkfun/SparkFun_SX1509_Arduino_Library: Arduino library for the SX1509 16-I/O GPIO expander.", GitHub. [Online]. Available: https://github.com/sparkfun/SparkFun_SX1509_Arduino_Library. [Accessed: 02- Dec- 2021].





Attachments:

Untitled Diagram.drawio (application/octet-stream)
Untitled Diagram(1).png (image/png)
Untitled Diagram(2).png (image/png)
Untitled Diagram(3).png (image/png)

Comments:

Project Approved

Posted by weustis2 at Sep 28, 2021 00:02

Group #27

Posted by dbycul2 at Oct 01, 2021 17:30