Integrated Hub Hand Switch
Mouth Joystick
Hello, my name is Neil Bansal, and I'm a 15-year-old boy from Northern California. I have recently developed a keen interest in engineering, and I love learning more about it every day, as well as helping people along the way. I think that harnessing technology in order to create cost-effective solutions for problems that people all over the world face by sharing knowledge that I have gained is one of the most effective uses of learning new things. My hope is to make this information so widely available that eventually, everyone will have access to these non-costly options that make life easier for those that need it.
Contact Information: neilkbansal14@gmail.com
*USER MUST HAVE A COMPUTER TO LOAD CODE ONTO ARDUINO*
MATERIALS REQUIRED FOR ASSEMBLY:
Amazon link included*
Materials (almost) always needed for each step
3D printed parts (Linked in the instructions)
Materials
3D Printed Parts
APIELE Momentary Push Button Switch (x1 per button)
Adafruit Tactile Button *top removed* (x4 per button)
Foam Core
Hot Glue
DC Jacks
CAD File(s)
Mastercode
Description: First, gather the materials:
• 3D printed button housing (pink part)
• 2 Apiele push buttons
• Foamcore strips
• 4 Adafruit tactile switches (tops removed)
• Hot glue
• 3D printed legs (x4 per button)
• Two foamcore semi-spheres
• Male and female DC jacks (x2 each)
• Soldering tools
Once ready:
Cut two strips of foamcore that fit into the rectangular recesses inside the pink button housing.
Glue two tactile switches (tops removed) onto each foamcore strip so that they line up with the finger placement recesses.
Hot glue the foamcore strips with buttons into their corresponding recesses inside the housing.
Tip: Removing the tactile switch tops and embedding them slightly with foamcore adds cushion and better haptic feel for repeated pressing.
Description:
Take one Apiele button and slide it into the central hole of the 3D-printed housing from the bottom.
Push until the black plastic overhang on the button prevents it from sliding through completely—this locks the button flush with the surface.
Repeat the process for the second button in the second housing (if assembling both simultaneously).
Tip: Make sure the button shaft is perfectly centered for reliable contact with the semi-sphere later on.
Description:
Insert four 3D printed legs into the recessed holes underneath the button housing, evenly spaced around the Apiele button. These legs support the base structure.
Take one 3D printed semi-sphere (this acts as the fake button users will press).
Cut a small square of foamcore and glue it to the center of the flat side of the semi-sphere.
Then, glue the foamcore side of the semi-sphere to the top of the Apiele button.
Why this matters:
The foamcore spacer provides clearance between the semi-sphere and the Apiele button. This ensures the fake button doesn’t constantly press on the Apiele switch and only triggers a click when intentionally pressed.
Tip: Make sure the semi-sphere is centered and stable when pressed—this helps guide the force directly into the Apiele switch and provides satisfying tactile feedback.
Description:
Solder the leads from each Apiele button to a male DC barrel connector. Note:
you may have to separate and strip the leads on the wire.
Then, solder the female DC jack wires following the instructions below.
🔌 For Button 1 (“U” key):
Connect male DC connector from Button 1 to the female DC connector.
On the female DC connector:
One wire → Digital Pin 7 on Arduino Leonardo.
Other wire → GND rail on the breadboard.
Ensure that GND rail is wired to Arduino GND.
🔌 For Button 2 (“Y” key):
Same steps as Button 1:
One DC wire → Digital Pin 8 on Arduino Leonardo.
Other wire → shared GND rail.
Reuse same GND rail for both buttons.
Description:
Secure all glued parts and ensure that the Apiele buttons smoothly press against the foamcore dome without sticking or misaligning.
Carefully press the foam dome to ensure the tactile buttons are clicking inside.
Plug each male DC jack into its corresponding female jack connected to the Arduino and test both buttons (“U” and “Y” keypresses) using a serial monitor or a test sketch.
Tip: If one or both buttons are not triggering, check wire polarity, solder joints, and Arduino pin assignments.
Materials
Male to Male, Male to Female, and Female to Female wires
MXP5010DP Pressure Sensor
KY-023 Dual-Axis Button Joystick
Heat Shrink/Electrical Tape
1/4" silicone tubing
3D Printed Shell & Mouthpiece
Hot Glue
Wire Strippers & Soldering Iron
CAD File(s)
Mastercode
Description:
Desolder all pin headers from the base of the KY-023 joystick using a soldering iron and wire strippers (tip/narrow setting).
Solder five male-to-male wires directly to the joystick’s pin holes.
Use 3–4 male-to-female wires to extend those wires if needed.
Secure all exposed solder joints with heat shrink or electrical tape for insulation.
Description:
Remove the rubber grip on the joystick stick.
Glue the joystick (facing outward) into the designated slot in the front of the 3D printed shell.
Align and glue the bottom of the 3D printed mouthpiece onto the joystick stem, forming a unified directional control.
Description:
Attach 1/4" silicone tubing to port P1 on the MXP5010DP pressure sensor.
Feed the other end of the tubing through the side hole in the shell, connecting it to the hole in the mouthpiece.
Glue the pressure sensor to the back wall of the shell, with metal prongs facing outward.
Insert female-to-male jumper wires onto the pressure sensor prongs.
Description:
Ensure all components are properly aligned inside the 3D printed shell.
Double-check that the joystick and pressure tubing sit comfortably within the mouthpiece interface.
Test mechanical movement to ensure the joystick stem moves freely and the tubing is not pinched.
Description:
🔘 Joystick (KY-023) Wiring
GND → Arduino GND
+5V → Arduino 5V
VRx → Analog Pin A0
VRy → Analog Pin A1
SW (Button press pin) → Digital Pin 2 (optional for advanced functions)
🔘 Pressure Sensor (MXP5010DP) Wiring
GND → Arduino GND
Vout → Analog Pin A2
V+ (Power) → Arduino 5V
Materials
3D Printed Parts:
1× Hub Body
1× Hub Lid
4× Lid Legs
2× Cylindrical Button Extensions (for side buttons)
Electronics
Arduino Leonardo & Breadboard
2x Adafruit Mini Tactile Push Buttons
Jumper wires (male-to-female or male-to-male as needed)
Tools & Supplies
Hot glue
Soldering Iron
Wire stripper/cutter
CAD File(s)
Description:
Print the following:
The main hub body
The lid
Four lid legs
Two cylindrical side button extensions
🧷 After printing, glue each lid leg into the indentations on the bottom of the lid. Make sure they are securely attached and fit snugly into the main hub body.
Description:
Before mounting components:
Route all wires through the holes in the bottom of the hub.
This keeps the setup neat and less cluttered on the outside.
Optional: Use zip ties or wire clips to manage longer wires inside the hub.
Description:
Insert the Adafruit tactile buttons through the square side holes of the hub. These holes are specifically designed to fit the buttons snugly.
Connect two female-to-male jumper wires to each button:
Use the prongs that are diagonally opposite each other on the button.
These diagonal prongs form a normally open switch when pressed (ensuring reliable input).
3. Carefully route the wires through the square side holes adjacent to each button slot. This allows the wiring to remain neat and internal once the lid is in place.
4. Once both wires are securely attached and routed, press the tactile button fully into the circular hole, ensuring it sits flush.
5. Once the wires are in place, and the button is positioned properly in the hub’s side hole:
Glue the tactile button into the hub using hot glue. Apply glue carefully to the sides—avoid getting glue on the button top or legs.
Insert the Adafruit tactile buttons into the side holes of the hub.
🔌 Wiring Instructions:
Use two legs of each button (the ones directly across from each other).
Connect one leg of each button to GND on the breadboard.
Connect the other leg of:
Button 1 to A2 on the Arduino
Button 2 to A3 on the Arduino
Description:
Carefully glue the cylindrical extensions on top of the tactile buttons.
These serve as the external pressable inputs.
Test that pressing the extensions cleanly triggers the underlying tactile switch.
Description:
Place the lid (with legs attached) into the top of the hub.
Ensure all components are secure and wiring isn't pinched.
Plug your Arduino Leonardo into a computer and test the buttons using your sketch.
Remapping Site
Click here