Robotic Hand
Created with Marco Frigo for our ECE 395 project
Demo
Robotic Hand Demo
Overview
We created a wired remote-controlled robotic hand. The remote utilizes flex sensors on a glove to measure the angle of each finger. The robotic hand receives this data to set servo angles for each finger. Originally intended to be wireless via Bluetooth, technical difficulties with the NORA chip required a UART wired implementation.
Hardware
The microcontroller is an STM32L031K6Tx running at 2.097 MHz, powered at 3.3 V using a DC regulator with decoupling capacitors. Finger sensors are amplified via LM358 op-amps and read by ADC channels. Servos are controlled with a PCA9685 I2C PWM driver. UART provides communication between the remote and hand.
- Microcontroller: STM32L031K6Tx
- Power: 3.3 V via DC voltage regulator (TC1262-330)
- Finger Sensors: 5 Flex Sensors (FS2-L-055-253-ST) with LM358 amplification
- Servo Controller: PCA9685 I2C-controlled PWM driver
- Communication: UART between remote and hand boards
Software
- Remote controller polls flex sensor ADC values, converts them to servo angles, and sends 5-byte UART commands.
- Servo controller reads UART bytes and sets PWM outputs for individual fingers using PCA9685.
- Timing delays and channel calibration implemented to handle sensor/servo differences.
Mechanical
Hand and finger segments were 3D printed from Onshape CAD models. Servos are mounted in the hand base, using strings to curl fingers. The remote controller PCB is attached to a glove, with flex sensors for input.
Future Work
- Enable NORA W36 chip for Bluetooth/WiFi wireless control.
- Replace flex sensors with alternate resistance-based sensors for different applications.
- Improve mechanical design for PCB integration and replace rubber bands with springs.
- Increase STM clock speed to reduce ADC polling delay.
Project Code / Report
Full project code and documentation are available on GitHub.