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

side chair view.jpg
glasses.jpg
chair and glasses.jpg

šŸ“ŗ 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:

  1. Tilt head forward + double blink both eyes → Move Forward
  2. Tilt head back + double blink both eyes → Move Backward
  3. Tilt head left + double blink left eye → Turn Left
  4. Tilt head right + double blink right eye → Turn Right
  5. Return head to center → Stop (automatic)
  6. Triple blink both eyes → Cruise mode ON/OFF
  7. 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

c side view.jpg
glasses.jpg

TRANSMITTER (TX) — Glasses

  1. WeMos D1 Mini (ESP8266) Ɨ 1
  2. MPU-6050 IMU module Ɨ 1
  3. IR eye-blink sensor module Ɨ 2
  4. LiPo battery 1100 mAh 3.7V Ɨ 1
  5. TP4056 USB-C charging module Ɨ 1
  6. Boost converter module (3.7V to 5V, MT3608) Ɨ 1
  7. Slide switch Ɨ 1
  8. Momentary push button Ɨ 1
  9. Safety glasses frame (transparent) Ɨ 1
  10. Connecting wires (assorted colors)
  11. Hot glue gun + glue sticks

RECEIVER (RX) — Wheelchair (Prototype)

  1. WeMos D1 Mini (ESP8266) Ɨ 1
  2. L298N H-Bridge motor driver module Ɨ 1
  3. 300 RPM DC gear motor Ɨ 2
  4. 10Ɨ2 cm rubber wheels Ɨ 2
  5. Castor wheel Ɨ 1
  6. 18650 Li-ion battery 2500 mAh Ɨ 2
  7. DC barrel jack charging connector Ɨ 1
  8. HC-SR04 ultrasonic sensor Ɨ 1
  9. 5mm LED red Ɨ 1
  10. 5mm LED blue Ɨ 1
  11. 1000 ohm resistor Ɨ 2
  12. Rocker on/off switch Ɨ 1
  13. PVC foam board for chassis Ɨ 1
  14. Connecting wires (assorted colors)
  15. Hot glue gun + glue sticks

Tools Required

  1. Arduino IDE (free — arduino.cc)
  2. Soldering iron + solder
  3. Wire stripper
  4. Small flathead screwdriver (for IR sensor trimmer calibration)
  5. Multimeter
  6. 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

main chair.jpg

yeLink has two parts that talk to each other wirelessly:

TRANSMITTER (TX) — The Glasses

The user wears modified safety glasses fitted with:

  1. Two IR eye-blink sensors (one per eye)
  2. MPU-6050 IMU sensor for head tilt detection
  3. WeMos D1 Mini ESP8266 microcontroller
  4. 1100 mAh LiPo battery with USB-C charging

RECEIVER (RX) — The Wheelchair (Prototype Base)

A motorized two-wheel drive base containing:

  1. WeMos D1 Mini ESP8266 microcontroller
  2. L298N H-bridge motor driver
  3. Two 300 RPM DC gear motors
  4. HC-SR04 ultrasonic obstacle sensor
  5. Two 18650 lithium batteries

HOW A COMMAND IS SENT:

  1. User tilts head in the desired direction
  2. User holds that position for 350ms
  3. User blinks the correct pattern
  4. TX glasses send the command wirelessly via ESP-NOW
  5. 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

TX CIRCUIT_bb.png
RECEIVER CIRCUIT.png

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:

  1. WeMos D1 Mini (ESP8266) Ɨ 1
  2. MPU-6050 IMU Ɨ 1
  3. IR eye-blink sensor module Ɨ 2
  4. LiPo battery 1100 mAh 3.7V Ɨ 1
  5. TP4056 USB-C charging module Ɨ 1
  6. Boost converter module (MT3608, 3.7V→5V) Ɨ 1
  7. Slide switch Ɨ 1
  8. Push button Ɨ 1
  9. Safety glasses frame Ɨ 1

RECEIVER COMPONENTS:

  1. WeMos D1 Mini (ESP8266) Ɨ 1
  2. L298N H-Bridge motor driver Ɨ 1
  3. 300 RPM DC gear motor Ɨ 2
  4. 10Ɨ2 cm rubber wheels Ɨ 2
  5. Castor wheel Ɨ 1
  6. 18650 battery 2500 mAh Ɨ 2
  7. DC barrel jack Ɨ 1
  8. HC-SR04 ultrasonic sensor Ɨ 1
  9. 5mm LED red Ɨ 1
  10. 5mm LED blue Ɨ 1
  11. 100 ohm resistor Ɨ 2
  12. Rocker switch Ɨ 1
  13. PVC foam board chassis Ɨ 1

TX PIN CONNECTIONS:

  1. LiPo (+) → TP4056 IN → TP4056 OUT → Slide switch → Boost module IN
  2. Boost module OUT (5V) → parallel to: D1 Mini 5V/Vin, MPU-6050 VCC, both IR sensor VCC
  3. IR Left Eye sensor → D6 (GPIO12)
  4. IR Right Eye sensor → D5 (GPIO14)
  5. MPU-6050 SDA → D2 (GPIO4)
  6. MPU-6050 SCL → D1 (GPIO5)
  7. Push button → D7 (GPIO13)

RX PIN CONNECTIONS:

  1. L298N ENA → D0 (GPIO16)
  2. L298N IN1 → D5 (GPIO14)
  3. L298N IN2 → D6 (GPIO12)
  4. L298N IN3 → D7 (GPIO13)
  5. L298N IN4 → D8 (GPIO15)
  6. L298N ENB → D4 (GPIO2)
  7. HC-SR04 TRIG → D1 (GPIO5)
  8. HC-SR04 ECHO → D2 (GPIO4) — via voltage divider (see warning below)
  9. 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

glass side.jpg
glass front.jpg
side tx.jpg
back view of glasses.jpg

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:

  1. Power on and open Arduino Serial Monitor at 115200
  2. Tilt the glasses and verify AY and AZ values change
  3. Blink each eye and verify sensor outputs trigger
  4. Check boost module output reads ~5.0V with a multimeter before connecting any sensors


Building the RX Wheelchair Base

internal base.png
controller.jpg
internal.jpg

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:

  1. 18650 batteries at center (largest component)
  2. L298N motor driver next to batteries
  3. D1 Mini at the back wall
  4. HC-SR04 at front wall
  5. LEDs through small holes in front face
  6. Rocker switch through side wall

6. Wire everything

Follow the RX circuit diagram exactly.

Key connections:

  1. Battery (+) → L298N VCC and rocker switch
  2. L298N 5V output → D1 Mini 5V pin
  3. Both motors → L298N output terminals
  4. HC-SR04 TRIG → D1 Mini D1 directly
  5. 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
  6. 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:

  1. Download Arduino IDE from arduino.cc
  2. Go to File → Preferences
  3. Add this URL to Additional Board Manager URLs:
  4. http://arduino.esp8266.com/stable/package_esp8266com_index.json
  5. Go to Tools → Board → Board Manager
  6. Search "esp8266" and install ESP8266 by ESP8266 Community
  7. Select Board: LOLIN(WeMos) D1 R2 and mini

REQUIRED LIBRARIES — install via Library Manager:

  1. MPU6050 by Electronic Cats
  2. Wire (built-in)
  3. ESP8266WiFi (built-in with ESP8266 package)

STEP 1 — Get the RX MAC address

Flash this simple sketch to your RX D1 Mini first:



cpp

#include <ESP8266WiFi.h>
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA);
Serial.println(WiFi.macAddress());
}
void loop() {}

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

uint8_t rxMAC[] = {0xC4, 0x5B, 0xBE, 0xC8, 0xF6, 0x27};

Find the MPU offset variables and replace with your calibration values from Step 2:



cpp

// example — replace with your own values
mpu.setXAccelOffset(...);
mpu.setYAccelOffset(...);
mpu.setZAccelOffset(...);
mpu.setXGyroOffset(...);
mpu.setYGyroOffset(...);
mpu.setZGyroOffset(...);

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.