DIY Quad Stick
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.
Downloads
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
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)
- Joystick VRx → Arduino A0
→ Y-axis (joyY = A1)
- Joystick VRy → Arduino A1
→ Joystick button (joyBtn = D3)
- Joystick SW → Arduino D3
- Other SW pin → GND
- (Button uses INPUT_PULLUP, so it activates when pulled LOW)
→ Power for the joystick
- Joystick +5V → PCB board 5 Volt row
- Joystick GND → PCB board ground
Set Up Sip and Puff
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
Use these steps to set up the IR sensor.
IR OUT → Arduino D4
IR VCC → 5V
IR GND → PCB board ground row
Set Up LED Light
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.
- Arduino D5 → Resistor (220–1kΩ) → LED long leg (+)
- LED short leg (–) → GND
⚠️ The LED will NOT work if:
- The legs are reversed
- The resistor is missing
- The LED burned out
- D5 is not wired to the resistor
Assemble
- Start by threading the IR sensor through the cutout
- Thread the power into the Arduino
- Then fit the wired Arduino into the bottom section of the box
- Put the Sip and Puff on top of the Arduino
- Hot glue the PCB board and the joystick to the top shelf, being sure not to touch the saulder with the hot glue
- Align the holes with the light, the sip and puff tube, and the joystick
- Test
- Glue on the top
- Attach Velcro to the bottom of the box and the angled stand
- 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.