Gesture-Controlled Robotic Arm with Wireless Haptic Feedback

Robotic arms built around Arduino and hobby servos are a familiar student project. This design takes the idea a step further: instead of programming fixed joint movements in advance, the arm is controlled live by a wearable glove that senses how the operator’s fingers and wrist are moving, and sends that information wirelessly to the arm. A force sensor on the arm’s gripper then reports grip pressure back to a vibration motor on the glove, so the operator gets real, physical feedback on how hard the arm is gripping an object.

The project is built from two communicating units: a master unit worn as a glove, and a slave unit that is the robotic arm itself. Between them runs a 2.4GHz wireless link that carries motion commands one way and force feedback the other way.

Block diagram

Fig. 1: System block diagram showing the master glove and slave arm units linked wirelessly

 

The master glove reads finger bend and wrist orientation, packages this into a data frame, and transmits it over NRF24L01. The slave arm receives the frame, decodes joint angles, and drives its servos through a PWM driver. A force sensor at the gripper sends grip-force data back over the same wireless link, which the glove uses to drive a vibration motor.

Working principle

Circuit design and connections

Master unit: control glove

The Arduino Nano is the hub of the glove circuit. Each flex sensor forms a voltage divider with a fixed resistor and feeds an analog pin (A0 to A3 and A6). The MPU6050 communicates over I2C using the Nano’s A4 (SDA) and A5 (SCL) pins. The NRF24L01 uses the SPI bus (pins D11, D12, D13) plus two extra digital pins for CE and CSN (D8 and D7). The vibration motor is switched through an NPN transistor (2N2222) driven from a PWM-capable pin (D9), since the motor draws more current than an Arduino pin can safely supply directly.

Fig. 2: Master glove wiring diagram

Slave unit: robotic arm

The Arduino Uno mirrors the same SPI connections for its NRF24L01 module (D7, D8, D11, D12, D13) and the same I2C pins (A4, A5) to talk to the PCA9685 driver. The PCA9685 fans out to five servo channels covering base rotation, shoulder, elbow, wrist and gripper, and is powered from a separate 6 to 12V supply so that servo current spikes do not disturb the logic supply. The FSR402 sits in a simple voltage-divider circuit connected to a free analog pin (A0) on the Uno.

Fig. 3: Slave robotic arm wiring diagram

Power supply notes

Components used

Item Qty Notes
Arduino Nano 1 Master (glove) controller
Arduino Uno 1 Slave (arm) controller
NRF24L01 transceiver (+PA/LNA for range) 2 One per side, SPI interface
MPU6050 IMU 1 Wrist orientation, I2C
Flex sensors (2.2 inch) 5 One per finger, with 10k ohm divider resistor
PCA9685 16-channel PWM driver 1 Drives all arm servos over I2C
MG996R servo or equivalent 4-5 Base, shoulder, elbow, wrist
SG90 micro servo 1 Gripper
FSR402 force sensor 1 Mounted on gripper fingertip
Coin vibration motor + 2N2222 transistor 1 each Haptic feedback driver on glove
5V regulated supply 1 Logic side, both Arduinos and NRF modules
6-12V supply, 5A or higher 1 Servo power, separate from logic rail, common ground

Applications

Possible extensions

Conclusion

This project moves beyond a simple pre-programmed robotic arm by adding two subsystems that are genuinely useful for engineering students to build and debug: a wearable gesture-sensing glove, and a bidirectional wireless link that carries both motion commands and force feedback. It offers a natural entry point into topics like sensor calibration, wireless protocol design and closed-loop feedback control, while remaining buildable with common hobbyist-level components.