EyeLink: Eye-Controlled Wheelchair for People With Motor Disabilities
by HumanixTechLab in Circuits > Assistive Tech
99 Views, 1 Favorites, 0 Comments
EyeLink: Eye-Controlled Wheelchair for People With Motor Disabilities
šŗ Watch the full build video here: EyeLink: Eye-Controlled Wheelchair -Full Build Video
EyeLink is a low-cost, wearable eye-controlled wheelchair interface built for people with severe motor disabilities such as ALS, spinal cord injury, or cerebral palsy. The user wears a pair of modified safety glasses fitted with two infrared eye-blink sensors, a head-tilt IMU (MPU-6050), and a tiny ESP8266 microcontroller. By combining a deliberate head tilt with a specific blink pattern, the user wirelessly drives a two-wheeled motorized wheelchair base ā completely hands-free.
The transmitter (glasses unit) is a fully working, ready-to-use device costing approximately ā¹1,250 (~$15 USD) in components. The wheelchair base shown in this build is a functional prototype used to demonstrate and test the control system ā built on a simple two-wheel motorized chassis rather than a full medical-grade wheelchair conversion. The complete prototype system (transmitter + receiver chassis) costs around ā¹2,500 (~$30 USD). Commercial eye-tracking wheelchair systems cost ā¹4,00,000āā¹16,00,000 ($5,000ā$20,000) ā EyeLink proves that the core hands-free control technology behind such systems doesn't have to be expensive, even if a full wheelchair retrofit is a separate engineering step.
How you control it:
- Tilt head forward + double blink both eyes ā Move Forward
- Tilt head back + double blink both eyes ā Move Backward
- Tilt head left + double blink left eye ā Turn Left
- Tilt head right + double blink right eye ā Turn Right
- Return head to center ā Stop (automatic)
- Triple blink both eyes ā Cruise mode ON/OFF
- Short press button ā Emergency stop
The wheelchair receiver has a built-in ultrasonic sensor that automatically stops the chair if any obstacle comes within 35 cm, keeping the user safe at all times. Communication between the glasses and the wheelchair uses ESP-NOW, a direct peer-to-peer wireless protocol that needs no Wi-Fi router or internet connection.
This project was built to show that a student with basic electronics skills and a small budget can prototype real, working assistive technology that could change someone's life.
Supplies
TRANSMITTER (TX) ā Glasses
- WeMos D1 Mini (ESP8266) Ć 1
- MPU-6050 IMU module Ć 1
- IR eye-blink sensor module Ć 2
- LiPo battery 1100 mAh 3.7V Ć 1
- TP4056 USB-C charging module Ć 1
- Boost converter module (3.7V to 5V, MT3608) Ć 1
- Slide switch Ć 1
- Momentary push button Ć 1
- Safety glasses frame (transparent) Ć 1
- Connecting wires (assorted colors)
- Hot glue gun + glue sticks
RECEIVER (RX) ā Wheelchair (Prototype)
- WeMos D1 Mini (ESP8266) Ć 1
- L298N H-Bridge motor driver module Ć 1
- 300 RPM DC gear motor Ć 2
- 10Ć2 cm rubber wheels Ć 2
- Castor wheel Ć 1
- 18650 Li-ion battery 2500 mAh Ć 2
- DC barrel jack charging connector Ć 1
- HC-SR04 ultrasonic sensor Ć 1
- 5mm LED red Ć 1
- 5mm LED blue Ć 1
- 1000 ohm resistor Ć 2
- Rocker on/off switch Ć 1
- PVC foam board for chassis Ć 1
- Connecting wires (assorted colors)
- Hot glue gun + glue sticks
Tools Required
- Arduino IDE (free ā arduino.cc)
- Soldering iron + solder
- Wire stripper
- Small flathead screwdriver (for IR sensor trimmer calibration)
- Multimeter
- USB micro cable (for flashing D1 Mini)
Total Estimated Cost: ā¹2,500 (approx. $30 USD)
(Transmitter unit alone: ~ā¹1,250 / $15 ā fully working, wearable glasses controller. Receiver/wheelchair prototype chassis: ~ā¹1,250 / $15 ā functional test platform, not a full wheelchair retrofit.)
How It Works ā System Overview
yeLink has two parts that talk to each other wirelessly:
TRANSMITTER (TX) ā The Glasses
The user wears modified safety glasses fitted with:
- Two IR eye-blink sensors (one per eye)
- MPU-6050 IMU sensor for head tilt detection
- WeMos D1 Mini ESP8266 microcontroller
- 1100 mAh LiPo battery with USB-C charging
RECEIVER (RX) ā The Wheelchair (Prototype Base)
A motorized two-wheel drive base containing:
- WeMos D1 Mini ESP8266 microcontroller
- L298N H-bridge motor driver
- Two 300 RPM DC gear motors
- HC-SR04 ultrasonic obstacle sensor
- Two 18650 lithium batteries
HOW A COMMAND IS SENT:
- User tilts head in the desired direction
- User holds that position for 350ms
- User blinks the correct pattern
- TX glasses send the command wirelessly via ESP-NOW
- RX wheelchair motors respond instantly
The system uses ESP-NOW ā a direct device-to-device wireless protocol. No Wi-Fi router needed. No internet needed. Works anywhere.
Components and Circuit Diagrams
Updated with the boost module added, and I flagged something important ā your HC-SR04 ECHO pin outputs 5V but feeds straight into a 3.3V ESP8266 GPIO without a voltage divider. That's a real risk for readers building this. Let's add a warning note rather than silently fix it, since this affects anyone replicating your build.
Components and Circuit Diagrams
TRANSMITTER COMPONENTS:
- WeMos D1 Mini (ESP8266) Ć 1
- MPU-6050 IMU Ć 1
- IR eye-blink sensor module Ć 2
- LiPo battery 1100 mAh 3.7V Ć 1
- TP4056 USB-C charging module Ć 1
- Boost converter module (MT3608, 3.7Vā5V) Ć 1
- Slide switch Ć 1
- Push button Ć 1
- Safety glasses frame Ć 1
RECEIVER COMPONENTS:
- WeMos D1 Mini (ESP8266) Ć 1
- L298N H-Bridge motor driver Ć 1
- 300 RPM DC gear motor Ć 2
- 10Ć2 cm rubber wheels Ć 2
- Castor wheel Ć 1
- 18650 battery 2500 mAh Ć 2
- DC barrel jack Ć 1
- HC-SR04 ultrasonic sensor Ć 1
- 5mm LED red Ć 1
- 5mm LED blue Ć 1
- 100 ohm resistor Ć 2
- Rocker switch Ć 1
- PVC foam board chassis Ć 1
TX PIN CONNECTIONS:
- LiPo (+) ā TP4056 IN ā TP4056 OUT ā Slide switch ā Boost module IN
- Boost module OUT (5V) ā parallel to: D1 Mini 5V/Vin, MPU-6050 VCC, both IR sensor VCC
- IR Left Eye sensor ā D6 (GPIO12)
- IR Right Eye sensor ā D5 (GPIO14)
- MPU-6050 SDA ā D2 (GPIO4)
- MPU-6050 SCL ā D1 (GPIO5)
- Push button ā D7 (GPIO13)
RX PIN CONNECTIONS:
- L298N ENA ā D0 (GPIO16)
- L298N IN1 ā D5 (GPIO14)
- L298N IN2 ā D6 (GPIO12)
- L298N IN3 ā D7 (GPIO13)
- L298N IN4 ā D8 (GPIO15)
- L298N ENB ā D4 (GPIO2)
- HC-SR04 TRIG ā D1 (GPIO5)
- HC-SR04 ECHO ā D2 (GPIO4) ā via voltage divider (see warning below)
- LED ā D3 (GPIO0) via 100 ohm resistor
ā ļø Hardware Safety Note: HC-SR04's ECHO pin outputs 5V, but ESP8266 GPIOs are rated for 3.3V max. Do not connect ECHO directly to D2 ā use a simple voltage divider (1kĪ© + 2kĪ© resistors) to step it down to ~3.3V before connecting to the GPIO, or you risk damaging the pin/chip over repeated use.
Building the TX Glasses
1. Prepare the glasses frame
Take a standard transparent safety glasses frame. Hot-glue a small proto-board strip on each temple arm as a mounting platform for the sensors.
2. Mount IR blink sensors
Attach one IR sensor on each side, angled inward toward each eye at roughly 45 degrees. Position 2ā3 cm away from the eye. Adjust the trimmer potentiometer until the OUT pin goes HIGH only when the eye is fully closed. Test in a dim room for best results.
3. Mount MPU-6050
Hot-glue the MPU-6050 flat on the top center of the glasses bridge.
Connect via I2C:
SDA ā D2, SCL ā D1, VCC ā 5V (boost output), GND ā GND
4. Mount WeMos D1 Mini
Attach D1 Mini to one temple arm. Route wire harnesses along the frame. Secure with small hot glue dabs every 2 cm.
5. Add power system
Attach TP4056 charging module to outer temple edge.
Wire the power chain in this order:
LiPo (+) ā TP4056 IN+ ā TP4056 OUT+ ā Slide switch ā Boost module IN+
Boost module OUT (5V) ā split in parallel to: D1 Mini 5V/Vin pin, MPU-6050 VCC, both IR sensor VCC pins
Mount the boost module near the TP4056, and the slide switch somewhere easily reachable on the frame (outer temple edge works well).
Add push button on D7 with INPUT_PULLUP mode.
6. First power test
Before closing everything with hot glue:
- Power on and open Arduino Serial Monitor at 115200
- Tilt the glasses and verify AY and AZ values change
- Blink each eye and verify sensor outputs trigger
- Check boost module output reads ~5.0V with a multimeter before connecting any sensors
Building the RX Wheelchair Base
1. Build the chassis
Cut a rectangular box from 5mm PVC foam board.
Recommended size: 18 Ć 14 cm base, 8 cm tall walls.
This gives enough space for all electronics inside.
2. Mount the motors
Attach two 300 RPM DC gear motors at the rear corners.
Use hot glue and zip ties for strong fixing.
Fit rubber wheels onto motor shafts firmly.
3. Mount castor wheel
Press-fit or glue the front castor wheel at center-front of the base board.
This gives stable 3-point support while allowing free turning.
4. Mount HC-SR04
Cut two small circular holes in the front face of the chassis for the ultrasonic transducers.
Glue the HC-SR04 board behind these holes.
5. Mount electronics inside
Place components in this order inside the box:
- 18650 batteries at center (largest component)
- L298N motor driver next to batteries
- D1 Mini at the back wall
- HC-SR04 at front wall
- LEDs through small holes in front face
- Rocker switch through side wall
6. Wire everything
Follow the RX circuit diagram exactly.
Key connections:
- Battery (+) ā L298N VCC and rocker switch
- L298N 5V output ā D1 Mini 5V pin
- Both motors ā L298N output terminals
- HC-SR04 TRIG ā D1 Mini D1 directly
- HC-SR04 ECHO ā voltage divider (1kĪ© + 2kĪ© resistors) ā D1 Mini D2 ā do not connect ECHO directly, it outputs 5V and will stress the 3.3V GPIO over time
- All GND connections tied together (including the divider's ground reference)
Arduino Code ā Flashing the Firmware
Arduino Code ā Flashing the Firmware
BEFORE YOU FLASH ā Arduino IDE Setup:
- Download Arduino IDE from arduino.cc
- Go to File ā Preferences
- Add this URL to Additional Board Manager URLs:
- http://arduino.esp8266.com/stable/package_esp8266com_index.json
- Go to Tools ā Board ā Board Manager
- Search "esp8266" and install ESP8266 by ESP8266 Community
- Select Board: LOLIN(WeMos) D1 R2 and mini
REQUIRED LIBRARIES ā install via Library Manager:
- MPU6050 by Electronic Cats
- Wire (built-in)
- ESP8266WiFi (built-in with ESP8266 package)
STEP 1 ā Get the RX MAC address
Flash this simple sketch to your RX D1 Mini first:
cpp
Open Serial Monitor ā write down the MAC address.
Example: C4:5B:BE:C8:F6:27
STEP 2 ā Run MPU-6050 calibration
Flash the calibration sketch to your TX D1 Mini (with the glasses fully assembled and MPU-6050 mounted in its final position).
Keep the glasses still and level during calibration.
Note down the offset values printed in Serial Monitor ā you'll need these in Step 3.
STEP 3 ā Update TX code with MAC address + calibration values
Open TX_Glasses_FINAL.ino
Find this line near the top and replace with your RX MAC address:
cpp
Find the MPU offset variables and replace with your calibration values from Step 2:
cpp
STEP 4 ā Flash TX Glasses
Connect TX D1 Mini via USB
Select correct COM port in Arduino IDE
Upload TX_Glasses_FINAL.ino
Open Serial Monitor at 115200 baud
Tilt glasses and verify AY/AZ values appear and look stable near zero when level
STEP 5 ā Flash RX Wheelchair
Connect RX D1 Mini via USB
Upload RX_Wheelchair_v4.ino
Open Serial Monitor at 115200 baud
Should print: "Waiting for TX..."
Both code files are attached above in the Supplies section for free download.
Calibrating the Eye Blink Sensors
This is the most important calibration step.
Take your time here ā wrong calibration causes
false triggers or missed commands.
CALIBRATING IR BLINK SENSORS:
Tools needed:
- Small flathead screwdriver
- Arduino Serial Monitor open at 115200 baud
Step 1 ā Power on TX glasses
Step 2 ā Wear the glasses normally
Step 3 ā Keep both eyes OPEN
Step 4 ā Check Serial Monitor ā
no blink events should appear
Step 5 ā Slowly CLOSE your LEFT eye only
Step 6 ā Serial Monitor should show: L.blink
Step 7 ā If RIGHT eye also triggers,
turn LEFT sensor trimmer clockwise slightly
Step 8 ā Repeat for RIGHT eye
CALIBRATING HEAD TILT THRESHOLDS:
Step 1 ā Open Serial Monitor at 115200 baud
Step 2 ā Hold head in normal straight position
Note AY and AZ values (should be near 0-800)
Step 3 ā Tilt head FORWARD naturally
Note AY value (should exceed 4000)
Step 4 ā Tilt head BACKWARD
Note AY value (should be below -2000)
Step 5 ā Tilt head LEFT
Note AZ value (should exceed 4500)
Step 6 ā Tilt head RIGHT
Note AZ value (should be below -2500)
If your values are different, open TX_Glasses_FINAL.ino
and adjust these 4 lines at the top:
#define FORWARD_AY_MIN 4000
#define BACKWARD_AY_MAX -2000
#define LEFT_AZ_MIN 4500
#define RIGHT_AZ_MAX -2500
Change the numbers to match YOUR head movement values.
This makes the system perfectly calibrated for each user.
Safety Features Explained
EyeLink has 4 layers of safety built in:
SAFETY LAYER 1 ā Two-Factor Command Confirmation
Every movement requires TWO things simultaneously:
1. Head held in position for minimum 350ms
2. Correct blink pattern confirmed
This prevents accidental movement from
involuntary blinks or casual head movement.
SAFETY LAYER 2 ā Ultrasonic Obstacle Detection
HC-SR04 sensor on the front of the wheelchair
checks for obstacles every 100ms.
If anything is within 20cm ā motors stop immediately.
LED fast-blinks to alert the user.
Chair will not move forward until obstacle is cleared.
SAFETY LAYER 3 ā Communications Watchdog
If wireless signal is lost for more than 2 seconds
(TX battery dies, glasses removed, out of range)
ā motors stop automatically.
This prevents runaway wheelchair.
SAFETY LAYER 4 ā Hardware Emergency Stop
Physical push button on the glasses frame.
Short press = immediate motor stop anytime.
System starts DISABLED ā user must button-press
to enable before any movement is possible.
TURN SAFETY:
Turns are limited to 25% speed.
Turns auto-stop after 300ms.
This prevents full circle spinning from
a single turn command.
LED STATUS GUIDE:
OFF = Not connected
FAST BLINK = Connected, waiting for enable / Fault
SOLID ON = Moving or Cruise mode active
How to Use EyeLink ā User Guide
FIRST TIME SETUP:
1. Charge TX glasses via USB-C until LED turns green
2. Charge RX wheelchair via DC barrel jack
3. Slide ON switch on glasses
4. Flick ON switch on wheelchair
5. Wait 3 seconds for ESP-NOW connection
6. RX LED will fast-blink = connected, waiting
7. Long-press glasses button for 2 seconds to ENABLE
8. RX LED changes to slow-blink = ready to drive
DRIVING COMMANDS:
FORWARD:
- Tilt head forward and hold 350ms
- Double blink BOTH eyes together
- Chair moves forward at 50% speed
BACKWARD:
- Tilt head backward and hold 350ms
- Double blink BOTH eyes together
- Chair moves backward at 50% speed
TURN LEFT:
- Tilt head left and hold 350ms
- Double blink LEFT eye only
- Chair turns left (auto-stops after 300ms)
- Repeat for more turning
TURN RIGHT:
- Tilt head right and hold 350ms
- Double blink RIGHT eye only
- Chair turns right (auto-stops after 300ms)
- Repeat for more turning
STOP:
- Return head to center position
- Chair stops automatically
CRUISE MODE (straight corridor driving):
- Tilt head forward and hold 350ms
- Triple blink BOTH eyes
- Chair drives forward at 100% speed continuously
- Triple blink again to cancel cruise mode
EMERGENCY STOP:
- Short press the button on glasses
- Chair stops immediately from any state
DISABLE SYSTEM:
- press push button
- System locks ā no movement possible
- press push button again to re-enable
Results, Challenges and Future Improvements
WHAT WORKS:
- Wireless ESP-NOW communication between
glasses and wheelchair ā stable up to 10+ meters
- Eye blink detection with crosstalk filtering ā
reliably distinguishes left eye, right eye,
and both eyes simultaneously
- Head tilt detection ā accurately identifies
all 4 directions
- Obstacle detection stops chair within 20cm
- Emergency stop button works instantly
- Cruise mode works for straight-line driving
- Full rechargeable power on both units
CURRENT LIMITATIONS (Semi-Finished Prototype):
- Glasses wiring is exposed ā needs a cleaner
3D printed housing in next version
- Wheelchair chassis is PVC board ā needs
stronger material for real-world use
- Not yet tested on a real wheelchair frame ā
currently a proof-of-concept drive unit
- IR sensors sensitive to strong sunlight ā
needs shielding for outdoor use
CHALLENGES OVERCOME:
- IR crosstalk between two eye sensors ā
solved with 5-40ms gap filter in firmware
- Accidental triggers from involuntary blinks ā
solved with head-position + blink confirmation
- Uncontrolled spinning during turns ā
solved with 300ms auto-stop at 25% speed
- Safety during wireless signal loss ā
solved with 2-second communications watchdog
FUTURE IMPROVEMENTS:
- 3D printed glasses housing for clean wearable design
- OLED display on glasses for status feedback
- Universal mounting bracket for real wheelchairs
- Machine learning blink classifier for better accuracy
- Buzzer on wheelchair for audio obstacle warning
- Mobile app for calibration and settings
TOTAL COST: Under Rs 2500 (approximately $30 USD)
Commercial equivalent cost: Rs 4,00,000 - Rs 16,00,000
This project proves that life-changing assistive
technology can be built by anyone, anywhere,
with basic electronics skills and a small budget.