Hello, I’m Valeria Rosas — the designer and engineer of the Hand & Harmonica Switch. I’m currently a sophomore at Sonoma Academy with a deep passion for building inclusive and accessible technology that empowers others. Throughout the prototyping process, I embraced each challenge as an opportunity to problem-solve and improve. This journey has enhanced both my technical skills and my commitment to designing for equity and usability. If you’re interested in learning more or sharing feedback, I’d love to hear from you.
Contact information: valeriarosas708@gmail.com
This demonstration video showcases the functionality of my adaptive button panel, designed for accessibility and ease of use. The device features two highly responsive, easy-to-press buttons, each programmed to simulate a specific keyboard input when activated. Additionally, the panel includes a joystick for directional control. All buttons and controls are connected to a compact and organized hub, which houses an Arduino Leonardo and a breadboard for streamlined internal wiring.
Materials
Code
CAD
General Note:
You will not be plugging wires directly into the hub. Instead, all connections should go through either a Power Pigtail Barrel Plug Connector Cable or a Male to Female Wire Connector Adapter, depending on the type of wire. This makes it easier to connect/disconnect and interface cleanly with the hub.
Left Button:
Connect one leg of the button to digital pin 2 on the Arduino Leonardo.
Connect the other leg to GND (ground).
Right Button:
Connect one leg of the button to digital pin 3 on the Arduino Leonardo.
Connect the other leg to GND (ground).
Interface Setup for Buttons:
Instead of connecting these wires directly to the Arduino or hub, attach the 5V and Digital pin legs of the buttons to a Power Pigtail Barrel Plug Connector Cable.
This allows for easier swapping or removal when working with the hub.
⚠️ Make sure to use the diagonal legs of the tactile button for proper functionality.
Connect the VRx pin to analog pin A0 on the Arduino Leonardo.
Connect the VRy pin to analog pin A1 on the Arduino Leonardo.
Connect the SW pin to digital pin 4 on the Arduino Leonardo.
Connect the VCC pin to the 5V pin on the Arduino Leonardo.
Connect the GND pin to GND on the Arduino Leonardo.
Interface Setup for Joystick:
Attach the 5V and GND wires from the joystick to the Power Pigtail Barrel Plug Connector Cable, just like with the buttons.
The remaining signal wires (VRx, VRy, and SW) should go into a Male to Female Wire Connector Adapter for easy interfacing.
Here’s a clear diagram of the wiring. Refer to the instructions above for detailed descriptions on how to connect everything.
For the Buttons (Left and Right):
Each button has two wires coming from it.
To extend them, connect each of those wires to a longer wire and a male power plug connector (a simple plug that lets you connect and disconnect wires easily).
This makes it easier to move the buttons around without rewiring everything.
For the Joystick (Power and Ground Wires):
The 5V (power) and GND (ground) wires from the joystick are also extended.
These connect to another male power plug connector, along with a male wire adapter that helps plug into the Arduino or breadboard.
The Rest of the Joystick Wires (VRX, VRY, SW) should connect to a male/female wire connector
How to Extend the Wires (Step-by-Step):
Strip the Wires
Use a wire stripper or scissors to carefully remove a small bit of the plastic covering (called insulation) from the ends of both wires you want to join—about ½ inch is enough
Twist and Match the Wires
Match the same type of wire (for example: power to power, ground to ground, signal to signal).
Twist the exposed metal ends together tightly so they hold.
Add Heat Shrink Tubing (Optional but Recommended)
Before you twist the wires together, slide a piece of heat shrink tubing over one side of the wire.
After twisting the wires, slide the tubing back over the metal connection.
Seal the Connection. Use a heat gun or a hair dryer to shrink the tubing until it fits tightly over the twisted wires. This helps protect the connection and keeps it from coming loose. Repeat for Each Wire. Do the same for all wires you want to extend—buttons and joystick alike.
Final Tips:
Make sure no bare wires are exposed—they could short your circuit. Wires should not be under tension or pulled too tightly—this can break the connection. If you're unsure which wire does what, label them with small pieces of tape.
Step 1: Velcro Placement in the Hub
Refer to Image 1
Two Velcro strips have been hot glued to the floor of the hub.
These strips serve as the attachment points for the Arduino and breadboard.
The USB port cutout is on the right side—ensure it aligns with your board.
Step 2: Preparing the Components
Refer to Image 2
Apply soft/fuzzy Velcro to the bottom of both the Arduino and breadboard.
Ensure the Velcro pieces are aligned with the hard/rough Velcro inside the hub for a secure fit.
Confirm wires or pin headers are not obstructed.
Step 3: Mounting Inside the Hub
Refer to Image 3
Insert the Arduino Leonardo into the hub with the USB port aligning with the side opening.
Press it gently down to stick the Velcro in place.
Place the breadboard next to the Arduino, also pressing it down to secure it.
Double-check the fit—both components should sit flat and not move when the hub is tilted.
In this video, I'll walk you through how to upload the code. Make sure your Arduino is connected to your computer for it to work properly.
Attach Velcro to the 3D Print (No Joystick Side):
On the side of the 3D-printed base that does not include the joystick attachment, glue or stick a piece of Velcro.
Mount the Joystick:
Attach the joystick to the designated area on the 3D print using the built-in joystick attachment.
Velcro the Joystick Edges:
Stick Velcro around the edges of the joystick to help secure it in place.
Add the Foam Spacer:
Take a piece of foam with a hole cut in the center large enough to fit around the joystick. Make sure there's also an opening for the wires to pass through. Place this foam over the joystick.
Attach the Bottom Joystick Cap:
Place the bottom part of the joystick assembly on top to complete the setup.
Optional – Extra Stability:
For extra stability, you can glue the Velcro on the joystick to the matching Velcro on the 3D print
Insert the Button into the Base:
Take your 3D-printed base (the part with two empty square cutouts).
Glue the tactile button in place between the two square holes, making sure the legs and wires of the button stick out through the cutouts.
Attach Springs to the Corners:
Locate the indented circular spots in the corners of the base.
Glue your springs vertically into these indentations. These springs will help provide tension for the button press.
Secure the Top Housing:
Take the top part of the 3D print (with matching spring indentations).
Apply a small amount of glue into the spring indentations on the underside of the top part.
Carefully place the top piece onto the springs, lining up the indentations with the springs so they fit snugly and stay upright.
4. Add Velcro for Mounting:
Attach a piece of Velcro to the bottom of the 3D-printed base.
This allows the button to be securely mounted to your wooden board and repositioned as needed.
Make sure the button can still be pressed after assembly — don't over-glue or block the button motion.
Allow all glue to fully dry before testing your button.
Grab a Smooth Wooden Slab:
Choose a flat, smooth piece of wood to serve as your base. Sand it down if needed to remove any rough edges or splinters.
Attach Velcro for Flexibility:
Stick diagonal strips of Velcro across the surface of the wooden slab.
This angled placement allows you to adjust and maneuver attachments more easily, giving you more flexibility when positioning components like buttons, breadboards, or controllers.
Connect the Button Cables:
Plug the Power Pigtail Barrel Plug Connector Cables from your buttons into the matching ports on the hub.
Connect the Joystick Adapter:
Attach the Male to Female Wire Connector Adapter as well as the Power Pigtail Barrel Plug Connector Cablesf rom the joystick into its designated port on the hub.
Power Everything On:
Make sure the hub is powered so that current can flow to all components.
Test Each Input:
Press each button to see if it responds as expected.
Move the joystick in different directions to check for movement or input recognition.
Troubleshooting:
If something doesn’t work:
Double-check your wiring.
Make sure all connectors are firmly attached.
Ensure there are no loose wires or backwards connections.
Here's a video showing what the finished setup should look like.
Each sensor needs 3 connections:
Signal – to send pressure info to the Arduino
Power (5V) – to power the sensor
Ground (GND) – to complete the circuit
Sensor 1 (First Sip and Puff Sensor)
Controls the keyboard keys:
Sip → “e”
Puff → “g”
Wiring:
Signal connects to A2
VCC (Power) connects to 5V
GND connects to GND
Sensor 2 (Second Sip and Puff Sensor)
Controls the keyboard keys:
Sip → “f”
Puff → “h”
Wiring:
Signal connects to A3
VCC (Power) connects to 5V
GND connects to GND
Controls mouse movement and left-clicks:
Moving the joystick moves the mouse cursor
Pressing the joystick acts as a left mouse click
Wiring:
X-axis connects to A0
Y-axis connects to A1
Button connects to D2 (use a 10k ohm pull-up resistor if your joystick doesn’t already have one built in)
VCC (Power) connects to 5V
GND connects to GND
Connector Instructions:
Connect the joystick’s 5V and GND wires to a Power Pigtail Barrel Plug Connector
Connect the X-axis, Y-axis, and Button wires to a Male to Female Wire Connector Adapter
1. Sip and Puff
Thread the rubber tube of each pressure sensor through the small left and right holes on the front of the box.
Leave a few inches of tube exposed outside the box (for your mouth), with the rest inside.
Place the sensor itself inside the box, just behind its hole, with its wires pointing toward the back.
Insert the joystick from inside the box, pushing the top part of the joystick through the center hole.
Route its wires toward the back holes.
Take all the wires (from the two pressure sensors and the joystick) and guide them out through the 3 holes in the back of the box.
One hole per device or group of wires.
Once they exit the box, they will interface with your central hub
Bundle wires neatly before they exit the back of the box.
Mount the entire box onto your harmonica holder, facing forward.
Adjust the holder so:
Tubes reach your mouth comfortably for sipping/puffing
Joystick can be moved with your chin, lip, or nose
Connect the Harmonica Holder:
Take the two harmonica holder pieces and line them up so the bolt holes match.
Insert the bolts and twist them in by hand or with a tool.
Leave the bolts slightly loose if you want to adjust the angle of the headpiece.
Once it's in the position you want, tighten the bolts to lock it in place.
Attach the 3D-Printed Parts:
Take your 3D-printed attachment pieces and check that the lid fits properly over the controller.
Line up the holes on the lid and the controller base.
Insert a bolt through the aligned holes to hold the lid in place securely.
This video demonstrates how my head-mounted harmonica controller functions.