Abstract
Have you ever used a video game or virtual reality (VR) controller that vibrates? The controller might vibrate when your character gets hit or when you crash in a racing game. This vibration provides additional information to your senses to help you understand what is happening in the game. What if you could feel these vibrations at different points on your skin through something you wear, like a glove? In this project, you will learn how to build and program your own customized glove with the same type of motors used in game controllers and cell phones.
Summary
Previous Arduino experience is recommended. See our How to Use an Arduino page for tutorials.
A kit is available from our partner Home Science Tools®. Additional items required that are not included in the kit. See the Materials section for details.
No issues
Objective
Design and build a haptic glove with built-in vibration motors.
Introduction
When you type on a physical computer keyboard, you can feel the buttons move up and down. The buttons are springy - it takes some force to push them down, and when you let go, they spring back to their original position. This makes it easy for your brain to register that you have pushed the button, even without looking at the keyboard.
What about touch screens on tablets and phones? There are no physical buttons that move up and down when you type. However, you might have noticed that your phone vibrates or pulses slightly when you tap on the letters to type out a text message. Your phone contains a tiny motor that makes it vibrate when you touch the screen. You can feel the vibration with your sense of touch. Even in the absence of a physical button, this helps your brain confirm that you have pushed something - it gives your brain feedback. This process of creating a sense of touch using forces, vibrations, or motion is called haptic feedback or simply haptics. "Haptic" comes from an ancient Greek word related to touch. Many other modern electronic devices, like smartwatches and video game controllers, use small vibration motors to create haptic feedback.
Now think about virtual reality. Virtual reality (VR) headsets can let people see things that aren't really there, like an object floating in midair in front of them. However, without haptics, you cannot feel that virtual object in front of you. One approach to this problem is to use haptic gloves or controllers that the user wears or holds along with the headset (Figure 1). These peripherals can vibrate to simulate the sense of touch for the user.

In this project, you will build your own haptic glove with built-in vibration motors. You will not connect the glove to a full-fledged VR system with a headset. However, using a microcontroller like an Arduino, you can make your glove react to different electronic sensors. For example, you can make the glove vibrate when the user moves their hand closer to an ultrasonic distance sensor. You could even use this behavior to program a simple motion-based game, for example, that challenges the player to hold their hand as steady as possible a certain distance from the sensor. How you program the glove is up to you!
Before you continue, you may wish to watch the following videos about the ultrasonic distance sensor and vibration motors you will use in this project:
Terms and Concepts
- Feedback
- Haptic feedback
- Haptics
- Virtual reality (VR)
- Microcontroller
- Sensor
- Ultrasonic distance sensor
Questions
- What are some different devices that vibrate to provide haptic feedback?
- Why is haptic feedback used in these devices? What does it communicate or tell the user?
- How could you incorporate haptic feedback into a wearable item like a glove?
Bibliography
- Finio, B. (n.d.). How to Use an Arduino. Science Buddies. Retrieved October 11, 2025
Materials and Equipment 
Recommended Project Supplies
-
Electronics Kit for Arduino, available from our partner Home Science Tools®.
- Note: This project will work with the Arduino UNO R3, UNO R4 Minima, UNO R4 WiFi, and compatible third-party boards.
- Windows or Mac computer. See this page if you have a Chromebook. Your computer will need:
- Access to the Arduino IDE, either installed local version or web-based editor. Watch this video for a comparison of the two options.
- USB port. The Science Buddies kit comes with a USB-A to C cable. The "C" end plugs into the Arduino, and the "A" end plugs into your computer. You will need an adapter or different cable if your computer only has USB-C ports. Watch this video to learn about the different types of cables and adapters.
- Additional parts must be purchased separately from the kit. Note that many parts are available in bulk on Amazon. You can purchase individual parts from electronics vendors like SparkFun, Adafruit, or Jameco Electronics.
- 5V DC "pancake" or "coin" vibration motor (5)
- N-channel MOSFET (5)
- Stranded hookup wire for connecting to your glove. Note: 22 AWG wire is commonly used for Arduino projects, but thinner wire will be more flexible (thinner wire has a higher gauge number).
- Solder and soldering iron
- Heat shrink tubing or electrical tape
- Heat gun or hair dryer (only required if using heat shrink tubing)
- Wire strippers
- Glove
- Glue
- Twist ties or zip ties
Disclaimer: Science Buddies participates in affiliate programs with Home Science Tools®, Amazon.com, Carolina Biological, and Jameco Electronics. Proceeds from the affiliate programs help support Science Buddies, a 501(c)(3) public charity, and keep our resources free for everyone. Our top priority is student learning. If you have any comments (positive or negative) related to purchases you've made for science projects from recommendations on our site, please let us know. Write to us at [email protected].
Experimental Procedure

Assemble and Test Your Circuit
- Cut 10 pieces of stranded wire, each about 1 meter long. How you color-code the wires is up to you.
- You could use one color for positive (typically red) and one color for negative (typically black or blue). Each motor needs one positive and one negative wire.
- Alternatively, you could use one color for each motor (red for one motor, green for the next motor, and so on). This will make it easier to keep track of which wires with which motor.
- Strip about 1 cm of insulation from the ends of each wire.
- Solder a short piece of solid-core jumper wire to one end of each wire to make it easier to plug them into the breadboard.
- Solder the other end of each wire to one of the motor wires. Be careful when handling the motor wires. They are thin and fragile. You can reinforce where they connect to the motor with a dab of glue to make it harder to accidentally rip them out.
- Use heat-shrink tubing or electrical tape to cover the exposed metal connections.
- Build the circuit shown in Figure 2. You can also access a Tinkercad Circuits version of the diagram here.
- Important: the left/right positions of the power (+) and ground (-) buses on your breadboard may be reversed from what is shown in Figure 2. If your power buses are on the left and your ground buses are on the right, you can follow the diagram exactly. If your power buses are on the right and your ground buses are on the left, you will need to adjust the left/right position of your connections accordingly. For example, the wire going from the 5V pin on the Arduino to the breadboard should always go to the power bus, whether it is on the left or on the right.
- Place your 5 MOSFETs in the breadboard. Each MOSFET pin should go in its own row, with the writing on the front of the MOSFET facing to your right.
- Connect the source pin of each MOSFET (toward the top of the breadboard diagram) to the ground bus with a jumper wire.
- Connect one motor's negative wire to the drain (middle) pin of each MOSFET.
- Connect each MOSFET's gate pin (toward the bottom of the breadboard diagram) to an Arduino pin. If you want to control the intensity of the vibrations instead of simply turning the motors fully on and off, make sure you connect to a pulse width modulation (PWM) pin marked with a "~". To use our example code, you should connect to pins 3, 5, 6, 9, and 10.
- Connect each motor's positive wire to the positive bus.
- Connect the ultrasonic sensor:
- VCC pin to positive bus (5V).
- TRIG pin to Arduino pin 13.
- ECHO pin to Arduino pin 12.
- GND pin to ground bus.
- Connect power from the Arduino to the breadboard:
- 5V pin to power bus (+).
- GND pin to ground bus (-).

- Download the haptic glove example code. Read the commented code so you understand how it works.
- Make sure the ultrasonic sensor is positioned on the table, facing upward, with nothing obstructing its view.
- Upload the code to your Arduino.
- Move your hand within 20 cm of the ultrasonic sensor. The motors should all start to vibrate.
- Move your hand away and the motors should stop.
- If the motors do not vibrate as expected, double-check that your circuit matches Figure 2 exactly.
Build Your Glove
Once you have confirmed that your circuit and code are working properly, attach the motors to your glove.
- Consider where you will place the motors. The glove in this project has one at the tip of each finger, but you do not have to put them there. For example, you could mount motors on the back or palm of the glove. Figure 3 shows a close-up of a motor attached to a fingertip.
- Think about how you will manage the wires so the user does not get tangled when using the glove. Figure 4 shows how each pair of wires wraps around the respective finger and then all the wires are connected on the back of the glove. Figure 5 shows how all 10 wires are bundled together using zip ties.
- Make sure you can put the glove on and take it off without causing any of the motors to fall off or any of the wires to tear. If the adhesive backing on the motors is not enough to hold them in place, you can use a small amount of glue.



Write Your Program
This part of the project is open-ended. The example code provided simply turns all five motors on full speed when an object is detected within a certain distance of the ultrasonic sensor. Can you make your code do something more interesting, for example, increase the intensity of the vibration gradually as your hand gets closer to the sensor? You can do this using the Arduino analogWrite function. See the Variations section for more ideas on what you can do for your project.
Ask an Expert
Global Goals
The United Nations Sustainable Development Goals (UNSDGs) are a blueprint to achieve a better and more sustainable future for all.
Variations
- Control the motors separately instead of turning them on and off all at once. What different sensations can you create by controlling the motors independently?
- Using one or more ultrasonic sensors, create a simple game using haptic feedback. For example, challenge the player to hold their hand as steady as possible a certain distance from the sensor. Increase the intensity of vibrations if their hand moves too far from the target position.
- In addition to haptic feedback, incorporate visual and/or audible feedback into your project using LEDs or buzzers.
Careers
If you like this project, you might enjoy exploring these related careers:
Contact Us
Our kits are developed in partnership with Home Science Tools®. If you have purchased a kit for this project, Home Science Tools® is pleased to answer any questions.In your email, please follow these instructions:
- Include your Home Science Tools® order number.
- Please describe how you need help as thoroughly as possible:
Examples
Good Question I'm trying to do Experimental Procedure step #5, "Scrape the insulation from the wire. . ." How do I know when I've scraped enough?
Good Question I'm at Experimental Procedure step #7, "Move the magnet back and forth . . ." and the LED is not lighting up.
Bad Question I don't understand the instructions. Help!
Good Question I am purchasing my materials. Can I substitute a 1N34 diode for the 1N25 diode called for in the material list?
Bad Question Can I use a different part?
Contact Support












