F
FingerPulse-CV
Touchless hand gesture LED controller with OpenCV
0
Created on 24th July 2026
•
F
FingerPulse-CV
Touchless hand gesture LED controller with OpenCV
The problem FingerPulse-CV solves
Traditional human-computer interaction (HCI) and hardware automation rely on physical buttons, switches, or touch interfaces, which can be inefficient or inaccessible in hands-free, sterile, or industrial environments.
FingerPulse-CV solves this by providing a low-cost, real-time vision-based control interface:
- Touchless Hardware Control: Enables direct control of specific hardware pins (LEDs, relays, actuators) using simple hand gestures via a standard webcam.
- Granular Pin Mapping: Unlike generic finger-counting algorithms, FingerPulse-CV tracks individual fingers (Thumb, Index, Middle, Ring, Pinky) to trigger dedicated output channels independently.
- Accessible & Affordable: Works on basic microcontrollers (Arduino Uno/Nano) without requiring expensive sensor gloves or specialized hardware depth cameras.
Challenges I ran into
-
Serial Port Locking & Synchronization:
- Issue: Connecting Python and Arduino over USB Serial frequently threw "Permission Denied" errors when the Arduino IDE Serial Monitor or leftover processes locked
COM7. - Solution: Implemented explicit exception handling in Python using
pyserial, ensuring port safety and graceful socket teardowns on application exit.
- Issue: Connecting Python and Arduino over USB Serial frequently threw "Permission Denied" errors when the Arduino IDE Serial Monitor or leftover processes locked
-
Thumb Tracking Accuracy:
- Issue: Standard Y-axis landmark comparisons failed for thumb detection because the thumb moves laterally across the palm rather than folding down vertically like other fingers.
- Solution: Switched to calculating Euclidean distance between thumb tip/IP landmarks and key palm anchors using
math.hypot()for accurate lateral gesture recognition.
-
Data Overhead & Latency:
- Issue: Continuously streaming serial data every frame caused micro-lag on the Arduino microcontroller.
- Solution: Designed a state-checking system in Python that transmits encoded 5-bit binary payloads (e.g.,
10000) only when finger states change.
Discussion
Builders also viewed
See more projects on Devfolio