DIY Quad Stick

by Chris_Huang123 in Circuits > Assistive Tech

73 Views, 1 Favorites, 0 Comments

DIY Quad Stick

Screenshot 2025-12-09 at 11.12.18 AM.png

I created a 3D-printed quad-stick controller with a mouth-operated joystick, an integrated sip-and-puff, along with an indicator LED, and Velcro pads for mounting an IR sensor. I designed it as an assistive device for people who have limited hand or arm mobility, allowing them to control a computer or game using mouth movements instead of their hands. By 3D printing it, I was able to make it lightweight, customizable, and much more affordable than commercial options.

Supplies

STL File

Download and print STL file below.

Downloads

Code

Download and run the Arduino Leonard code below.

Screenshot 2025-12-09 at 10.37.42 AM.png
Screenshot 2025-12-09 at 10.27.40 AM.png
Screenshot 2025-12-09 at 10.26.42 AM.png

Assemble the PCB by soldering 7 total pins to the board. You will need three 5-volt pins and four ground pins. To ensure that no short circuits will occur, place them a few rows away from each other. Once placed, solder the back to ensure that all of the 5-volt pins are connected, and then all the ground pins are connected. This makes it so that the whole row can connect to one pin on the Arduino, ultimately saving space. One pin from each row will be connected to the desired pin on the Aruduino to power all of them.

Set Up Joystick

Screenshot 2025-12-09 at 10.46.34 AM.png

Use these steps to wire the joystick. When testing if the X and Y axis are messed up, switch them with each other on the joystick. From the picture, you can see the different labels of each pin on the joystick, making it easy to connect properly.


→ X-axis (joyX = A0)

  1. Joystick VRx → Arduino A0

→ Y-axis (joyY = A1)

  1. Joystick VRy → Arduino A1

→ Joystick button (joyBtn = D3)

  1. Joystick SW → Arduino D3
  2. Other SW pin → GND
  3. (Button uses INPUT_PULLUP, so it activates when pulled LOW)

→ Power for the joystick

  1. Joystick +5V → PCB board 5 Volt row
  2. Joystick GND → PCB board ground




Set Up Sip and Puff

Screenshot 2025-12-09 at 10.47.56 AM.png

Use these steps to set up the sip and puff. It does not matter which pin is used for the ground or the digital pin on the SIP and Puff.


Pin 1 of the sensor → Arduino D2

That’s the signal pin.

Pin 2 of the sensor →PCB Board GND Row

That completes the switch.

Set Up IR Sensor

Screenshot 2025-12-09 at 10.57.01 AM.png

Use these steps to set up the IR sensor.


IR OUT → Arduino D4

IR VCC5V

IR GND → PCB board ground row

Set Up LED Light

Screenshot 2025-12-08 at 8.56.47 AM.png

Use these steps to set up the LED light. You will need to solder the resistor to the long leg and then to a male pin to fit into the Arduino. The long leg with the resistor will plug directly into the Arduino D5 and the other pin will go into the second Arduino ground pion and NOT the PCB board.


  1. Arduino D5Resistor (220–1kΩ)LED long leg (+)
  2. LED short leg (–)GND

⚠️ The LED will NOT work if:

  1. The legs are reversed
  2. The resistor is missing
  3. The LED burned out
  4. D5 is not wired to the resistor


Assemble

Screenshot 2025-12-08 at 8.56.33 AM.png
Screenshot 2025-12-08 at 8.56.41 AM.png
Screenshot 2025-12-08 at 8.56.53 AM.png
Screenshot 2025-12-08 at 8.57.00 AM.png
Screenshot 2025-12-08 at 9.40.06 AM.png
Screenshot 2025-12-08 at 9.38.08 AM.png
Screenshot 2025-12-08 at 9.42.53 AM.png
  1. Start by threading the IR sensor through the cutout
  2. Thread the power into the Arduino
  3. Then fit the wired Arduino into the bottom section of the box
  4. Put the Sip and Puff on top of the Arduino
  5. Hot glue the PCB board and the joystick to the top shelf, being sure not to touch the saulder with the hot glue
  6. Align the holes with the light, the sip and puff tube, and the joystick
  7. Test
  8. Glue on the top
  9. Attach Velcro to the bottom of the box and the angled stand
  10. If desirable, use the Sauldering iron to heat up the tripod attachment and melt into the bottom of the angled stand.


Remapping Keys

https://fascinating-travesseiro-5488ae.netlify.app/


Use this link in Chrome to access the key remapping app


To change the IR sensor type in the send command box" IR=" and then the desired key

Do the same for "sip=" and then the desired key.