String Controller V1




Greetings, everyone, and welcome back!
Introducing the String Controller, a wearable game controller that will transform the way we engage with games. Unlike traditional controllers, this unique approach allows players to operate the controller with their natural finger movements, providing a more ergonomic and simpler experience.
Traditional game controllers need constant gripping, which can cause hand strain over time. But do we really need to hold them at all?
Our design has a wrist-mounted controller, which eliminates the need for holding a typical controller. Instead, it uses carefully placed limit switches that operate with finger movements, providing simple control by just curling or bending the fingers.
Each switch is linked to a lever mechanism, with a string connecting the lever to a ring worn on the finger. When the finger moves, the string pulls the lever, which triggers the switch.
We utilize two limit switches that are connected in parallel with the button inputs of our previously made SNES Mini controller.
This method provides an intuitive and ergonomic way to interact with games, reducing hand strain. It challenges standard control methods by allowing natural finger movements to drive games.
This Instructables is about setting up this basic string-based wearable controller, so let's get started with the build.
Supplies
These were the materials used in this project:
- Pocket SNES Controller
- Custom PCBs (Provided by PCBWAY)
- RP2040 Tiny
- Limit Switch
- 3D Printed parts
- 1mm Silicone String
SNES GAME CONTROLLER PROJECT



For this project, we are utilizing our previously made POCKET SNES controller as the base for this project. Base here means we are using this Pocket SNES as the main controller, and we will be adding our custom wrist-mounted contraption with this setup. Let's have a recap of the project: the RP2040-Tiny mini development board, which is an SMD or module version of the Raspberry Pi PICO, serves as the controller brain.
The RP2040 Tiny Module was installed on a controller-shaped PCB that had small SMD tactile buttons on one side and the RP2040 controller on the other. To increase the controller's grip, an enclosure is added to the bottom side of the PCB, making it easier to hold.
You can check out the full build guide about this project from the link below.
STRING CONTROLLER DESIGN





Let's have a look at the design of the Wrist Mount Part, which was really straightforward to put together. We just installed two lever switches near the knuckles of the hands, then modeled a holder to keep these two switches in place.
Each switch faces the finger; the first switch is for the index finger, and the second is for the middle finger. Our goal was to add a string with a lever to these limit switches, followed by a ring-like part that will be put on both fingers. Because the string is attached to the switch's lever, when pulled downward, the switch registers a click, which is how our controller works.
This was merely for testing whether or not this idea works; therefore, we only put up two limit switches, but we could modify this setup to operate five switches utilizing our five fingers.
After finishing the model, we exported the STL files for the Switch Holder and rings and printed them on our Creality K10 max with a 0.4mm nozzle and 0.2mm layer height.
PCBWAY SERVICE


For this project, we are reusing the SNES Mini PCBs provided by PCBWAY. The order was placed for a white solder mask with black silkscreen PCB.
PCBs were received within a week, and the PCB quality was outstanding. Here, we added a few design elements on the board's silkscreen layer to increase the aesthetic appeal of the project. PCBWAY made the custom layer properly, which shows their great PCB manufacturing capabilities.
Over the past ten years, PCBWay has distinguished themselves by providing outstanding PCB manufacturing and assembly services, becoming a trusted partner for countless engineers and designers worldwide.
You guys can check out PCBWAY if you want great PCB service at an affordable rate.
BASIC SETUP




- The assembly process for this small experiment was rather simple; limit switches were attached to their designated places on the switch holder part.
- We tied a knot on each Limit Switch lever to secure the 1mm string. The other end of the string is linked to the Ring Part.
- To wear this device, we attached an elastic belt salvaged from an old adventure wearable LED headlight.
PAIRING WITH SNES CONTROLLER








This is the main section of the project, which involves connecting the limit switches to the SNES controller.
- We begin by soldering connecting wire to the first Limit switch's COM and NC terminals. We then route the wire through the opening on the back side of the holder and install the limit switch in its place.
- We then repeated the process with the second Limit switch, connecting one wire to the COM terminal and then to NC, but this time we added a single short black wire to the COM terminal, which will be connected to the first Limit switch's COM terminal. This will link both limit switch COM terminals in parallel, allowing us to connect this wire to the GND of the SNES controller.
- The three wires from the limit switches (COM, First Limit Switch NC, and Second Limit Switch NC) are connected to the SNES controller buttons. We connected a COM wire to the GND terminal of the SNES Controller. The first limit switch NC wire is attached to the left button, while the second switch NC wire is connected to the right button.
After attaching the wires, our setup is complete; now we'll add the new code to the SNES Controller and test it.
CODE


Here, we're using a revised version of the code from the previous SNES project. This code works with PICO as well as any HID-enabled Arduino or other development board, providing for smooth integration and functioning across multiple platforms.
Let's have a Code Breakdown, and it's a simple one.
Adafruit TinyUSB is added, which enables USB HID support on RP2040, allowing it to function as a gamepad.
Button Input Setup
Next, we define 12 button inputs, mapped to GPIO pins and use an array for cleaner code, simplifying pin initialization and scanning.
HID Report Descriptor
This section is the descriptor that defines the controller as a USB HID device with 12 buttons. It tells the operating system how to interpret input from the controller. Each button has a corresponding bit (pressed or not).
USB HID Setup
This section creates a USB HID object (usb_hid) to manage data transmission and defines the HID report buffer (report), which stores button states before sending them.
Pin Initialization & USB Connection
This section Configures button pins as INPUT_PULLUP to detect presses and Initializes the USB HID device, setting the descriptor and polling rate, then Waits for the device to mount before proceeding.
Handling Button Input & Sending Reports
This Section in the loop Ensures the loop updates every 10ms for smooth input processing and Prevents unnecessary processing, improving efficiency.
Detect Button Presses & Update HID Report
This part Scans each button, checking if it is pressed (LOW state) and uses bitwise operations to efficiently store 12 button states in 2 bytes
Send HID Report
This section Sends the HID report to the computer, allowing button presses to be recognized.
After uploading the code into our SNES Controller setup, we utilize a website called game pad tester to test that our button input functions correctly. Using this site, we were able to confirm that our device was functioning.
RESULT





The end result of this experimental project is a wearable game controller that operates exactly like a standard one. What's the key difference? Instead of pressing buttons, movement is controlled using finger movements.
This was achieved through a simple string-based approach in which a limit switch is linked to a string. When the string is pulled downward, the switch triggers, pulling a GPIO pin to GND, which is detected by the Raspberry Pi Pico. This clever contraption allows intuitive movement control with only finger motions!
To put this to the test, we opened Broforce and mapped our controller in the Controller Mapping option. We set the first limit switch to move backwards and the second to move forwards.
We could control our character's movement with both fingertips, effortlessly moving it forward and backward. We couldn't use all of the features because the setup only had two buttons, but for an experimental project, this demonstration was ideal.
This Project was a success!
WHAT'S NEXT?

This experimental project successfully brought to life the wrist-mounted string controller, which allows two buttons to be controlled with simple finger movements. However, this is only the beginning; the ultimate goal is to create a full gauntlet-style device that serves as a one-handed controller, utilizing all five fingers and wrist movement to interact with various limit switches.
The next step is to design a complete gauntlet, drawing inspiration from Iron Man’s MK2 prototype or similar designs. The goal isn’t just to refine the concept but to push boundaries—creating a wearable controller that can handle AAA titles and stand toe-to-toe with traditional gamepads.
For the time being, this project has been completed, and all of the necessary details, including PCB files, code, and other information, are all attached.
Thanks for reaching this far, and I will be back with a new project pretty soon.
Peace.