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:

  1. 1xArduino Leonardo (Essential for USB HID) – Amazon Arduino Leonardo
  2. 1x5-Pin Joystick Module (Analog Stick) – Amazon Analog Joystick Module
  3. 1xPressure/Vacuum Switch (2-Pin Sip/Puff) – Two Pin Pressure Switch
  4. 1xIR Sensor Module (3-Pin) – IR sensor
  5. 3xLEDs (Standard 5mm, any color) – 2 Pin LEDs
  6. 3x220 Ω Resistors220 ohm Resisters
  7. 1xPerfboard (Prototyping PCB) – Prototype Soldering Board
  8. 1xSpool of 22 AWG Wire (Solid Core recommended) – 22 AWG Wire
  9. 1x Straw/Tubing for pressure sensor - 1/8 ID * 3/8 OD Silicon Tube

Hardware & Tools:

  1. 1xMicrophone Boom Arm Screw Insert (3/8" to 5/8" adapter) – Boom Arm Screw Insert
  2. 1x3D Printer & PLA Filament1.75mm Filament
  3. 1xSoldering Iron Set upSolder Iron Kit

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.

  1. Action: Print the Main Body and Faceplate files.
  2. Settings: Use PLA filament, 20% infill, and 0.2mm layer height.
  3. 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.

  1. Action: Insert the LEDs and Resistors into the perfboard.
  2. 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).
  3. 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.

  1. Joystick (5-pin Module):
  2. Connect VCC → Arduino 5V
  3. Connect GND → Arduino GND
  4. Connect VRx → Arduino A0 (Analog Pin 0)
  5. Connect VRy → Arduino A1 (Analog Pin 1)
  6. Note: The SW pin is not used.
  7. Pressure/Vacuum Switch (Sip/Puff):
  8. Connect Pin 1 → Arduino Digital Pin 3
  9. Connect Pin 2 → Arduino GND
  10. Note: The code uses internal pull-up resistors, so no external resistor is needed here.
  11. IR Sensor (3-pin):
  12. Connect VCC → Arduino 5V
  13. Connect GND → Arduino GND
  14. Connect OUT → Arduino Digital Pin 2

Step 4: Wiring the Outputs (LEDs)

Follow this wiring schema exactly to match the code requirements.

  1. Joystick (5-pin Module):
  2. Connect VCC → Arduino 5V
  3. Connect GND → Arduino GND
  4. Connect VRx → Arduino A0 (Analog Pin 0)
  5. Connect VRy → Arduino A1 (Analog Pin 1)
  6. Note: The SW pin is not used.
  7. Pressure/Vacuum Switch (Sip/Puff):
  8. Connect Pin 1 → Arduino Digital Pin 3
  9. Connect Pin 2 → Arduino GND
  10. Note: The code uses internal pull-up resistors, so no external resistor is needed here.
  11. IR Sensor (3-pin):
  12. Connect VCC → Arduino 5V
  13. Connect GND → Arduino GND
  14. Connect OUT → Arduino Digital Pin 2

Step 5: Final Power & Assembly

  1. Action: Tie the 5V and GND rails on your perfboard directly to the Arduino's 5V and GND pins to power all components.
  2. Action: Carefully glue the components into the 3D-printed body. Ensure the Joystick is centered in the opening.
  3. Action: Melt the microphone insert into the base. [BE CAREFUL OF FUMES – DO OUTSIDE]
  4. Action: Upload the code to the Arduino Leonardo via USB.

NOTE: Yours should look much better than the photo provided.