Introduction: DIY QuadBox
This project outlines the fabrication of a cost-effective assistive mouse controller designed for individuals with limited upper-body mobility, such as those with Cerebral Palsy. While commercial Quadsticks use complex optical arrays, this DIY version utilizes accessible modular components—specifically an analog joystick module and a digital sip/puff switch—to emulate a USB Human Interface Device (HID). The device allows the user to control a computer cursor via mouth movement and perform clicks via breath pressure. The addition of LED indicators provides immediate visual feedback on the device's mode or status.
Supplies
Electronics:
- 1xArduino Leonardo (Essential for USB HID) – Amazon Arduino Leonardo
- 1x5-Pin Joystick Module (Analog Stick) – Amazon Analog Joystick Module
- 1xPressure/Vacuum Switch (2-Pin Sip/Puff) – Two Pin Pressure Switch
- 1xIR Sensor Module (3-Pin) – IR sensor
- 3xLEDs (Standard 5mm, any color) – 2 Pin LEDs
- 3x220 Ω Resistors – 220 ohm Resisters
- 1xPerfboard (Prototyping PCB) – Prototype Soldering Board
- 1xSpool of 22 AWG Wire (Solid Core recommended) – 22 AWG Wire
- 1x Straw/Tubing for pressure sensor - 1/8 ID * 3/8 OD Silicon Tube
Hardware & Tools:
- 1xMicrophone Boom Arm Screw Insert (3/8" to 5/8" adapter) – Boom Arm Screw Insert
- 1x3D Printer & PLA Filament – 1.75mm Filament
- 1xSoldering Iron Set up – Solder Iron Kit
Attachments
Step 1: 3D Printing the Housing & Faceplate
The housing creates the physical interface for the user. It must accommodate the joystick module and the sip/puff tube.
- Action: Print the Main Body and Faceplate files.
- Settings: Use PLA filament, 20% infill, and 0.2mm layer height.
- Post-Processing: Ensure the mounting holes are clear so the joystick module can sit flush.
Step 2: Preparing the Electronics
Before soldering, lay out your components on the perfboard to ensure efficient spacing.
- Action: Insert the LEDs and Resistors into the perfboard.
- Action: Determine the placement for the Joystick module wiring (the module itself may need to be mounted remotely in the 3D print, connected via wires).
- Action: Prepare your wire lengths. You will need wires long enough to run from the sensors (in the head of the controller) to the Arduino (in the body).
Step 3: Wiring the Inputs (Joystick & Sensors)
Follow this wiring schema exactly to match the code requirements.
- Joystick (5-pin Module):
- Connect VCC → Arduino 5V
- Connect GND → Arduino GND
- Connect VRx → Arduino A0 (Analog Pin 0)
- Connect VRy → Arduino A1 (Analog Pin 1)
- Note: The SW pin is not used.
- Pressure/Vacuum Switch (Sip/Puff):
- Connect Pin 1 → Arduino Digital Pin 3
- Connect Pin 2 → Arduino GND
- Note: The code uses internal pull-up resistors, so no external resistor is needed here.
- IR Sensor (3-pin):
- Connect VCC → Arduino 5V
- Connect GND → Arduino GND
- Connect OUT → Arduino Digital Pin 2
Step 4: Wiring the Outputs (LEDs)
Follow this wiring schema exactly to match the code requirements.
- Joystick (5-pin Module):
- Connect VCC → Arduino 5V
- Connect GND → Arduino GND
- Connect VRx → Arduino A0 (Analog Pin 0)
- Connect VRy → Arduino A1 (Analog Pin 1)
- Note: The SW pin is not used.
- Pressure/Vacuum Switch (Sip/Puff):
- Connect Pin 1 → Arduino Digital Pin 3
- Connect Pin 2 → Arduino GND
- Note: The code uses internal pull-up resistors, so no external resistor is needed here.
- IR Sensor (3-pin):
- Connect VCC → Arduino 5V
- Connect GND → Arduino GND
- Connect OUT → Arduino Digital Pin 2
Step 5: Final Power & Assembly
- Action: Tie the 5V and GND rails on your perfboard directly to the Arduino's 5V and GND pins to power all components.
- Action: Carefully glue the components into the 3D-printed body. Ensure the Joystick is centered in the opening.
- Action: Melt the microphone insert into the base. [BE CAREFUL OF FUMES – DO OUTSIDE]
- Action: Upload the code to the Arduino Leonardo via USB.
NOTE: Yours should look much better than the photo provided.




