ECE 4760: Final Projects

Eye Mouse

An infrared eye-tracking system

Michael Wang (msw234@cornell.edu)

John Fu (sf323@cornell.edu)

"An eye-tracking and head gesture system"

project soundbyte

Our final project moves and clicks a mouse cursor on a computer screen by tracking where the user's eye-movements using infrared eye-tracking technology and a gyroscope.

The motivation for this project came from thinking about applications of infrared technology. We narrowed our ideas down to eye-tracking because of its potential benefit to the disabled and the lack of accurate, inexpensive eye-tracking devices out there.

highlevel

John using the Eye Mouse

3. Eye-tracking LEDs and Phototransistors

There are typically two configurations used when tracking eye position with infrared reflection. One configuration uses pairs of LEDs and phototransistors (Figure 3a)

highlevel

Figure 3a) Emitter-Detector Pairs

while the other configuration features a single LED to illuminate the eye and multiple phototransistors to receive the reflected signals.

highlevel

Multiple Phototransistors

We used the configuration shown in Figure 3b) because the other configuration relies on the LEDs having a narrow beam profile to ensure that the light from one LED does not interfere with multiple phototransistors. The only LEDs we could find that had a narrow enough beam profile were the 5 mm LTE4206 LEDs in lab, which are too large for our design to have multiple fit across the span of our eye. We attempted to find 3 or 1.8 mm sized lensed LEDs with narrow beam profiles, but we could not find suitable ones. Therefore, we decided to purchase small, wide-angle LEDs for illuminating the entire eye. We ended up going with the CQY36N because of its almost spherical beam profile and small size (1.8mm).

highlevel

CQY36N Infrared LEDs

For our design, the phototransistors also had to have a sharp beam profile for good directional detection. Fortunately, the phototransistors available in lab, the LTR4208, are both small enough and have a narrow enough detection profile for our design.

highlevel

LTR4208 Radiation Pattern

4. Gyroscope

We used the ITG3200 gyroscope breakout board from Sparkfun Electronics. We decided to purchase this board because of its small size, 3-axis output, and ease of connection. The gyroscope uses the I2C interface to the microcontroller.

highlevel

ITG Breakout Board

The hardware portion of the gyroscope was relatively simple. According to the Sparkfun hookup guide, we needed two pullup resistors for the SDA and SCL lines, a jumper connection between the CLK pin and the internal clock, and a 5-3.3 V regulator to power the gyroscope. Below are the schematics for this part.

highlevel

ITG Breakout Board

5. Wireless Transmitter and Receiver Circuits

Taking inspiration from previous groups, we used the Radiotronix RCT-433-AS transmitter and the Radiotronix RCR-433-RP receiver. We used Meghan Desai's transmitter and receiver libraries. We also took inspiration from the USB Wireless Tilt Mouse + Minesweeper project from Spring 2010 for the capacitor and inductor values used in these circuits.

highlevel

Receiver on the base station. Circuit taken from USB Wireless Tilt Mouse + Minesweeper Project

highlevel

Transmitter. Circuit taken from USB Wireless Tilt Mouse + Minesweeper Project

The inductor-capacitor network is effectively a low-pass filter which smooths out voltage ripples from the power supply. The inductor in series with the 5 V supply attenuate high frequency voltage noise, while the capacitor bypasses this noise to ground. We could not find 10 uF inductors, so we used 15 uF inductors instead. The larger the inductor, the lower the cutoff frequency of this filter, so the 15 uH inductor should do better than the 10 uH inductor at smoothing.

The ANT pins are the transmitting and receiving antennas. We connected a long piece of wire to both, but the receiver picked up clean signals regardless of the presence of the transmitting antenna.

6. Custom PCBs

In an attempt to make our eye-tracking system more portable, we copied the transmitter circuit onto a copper PCB. However, while we could power this PCB, the transmitter was not working. There was a minor short from VCC to GND (using a multimeter, we measured a resistance of 2.9 kOhms), causing us to re-solder the VCC connections. After resoldering, we got a resistance of 3 MOhm, and the connection between VCC and GND no longer beeped, which meant the short was taken care of. However,the problem still persisted. We suspect it may have been a bad solder connection on a pin, but at that point, we decided to focus on the software and go with the breadboard setup because we knew that it had no hardware issues.

highlevel

Transmitter PCB with Transmitter (on left)

We also soldered our own ATMega1284P microcontroller and serial communication module to use as a transmitter. However, the RS232 serial communication module did not work well when we tried to print to the screen. If we moved our heads too fast, the gyroscope would rapidly send data, causing the host computer to crash (BSoD). Fortunately, all of our code was saved in the Sublime Text 2 buffer, so we did not lose hours of work. Although this may seem unlikely, the BSoD happened 4 times before we stopped using the RS232 and switched back to serial output, at which point we did not encounter further BSoDs.

Another problem we encountered was burning the on-board regulator of the ATMega1284P. With Aadeetya and Roland's help, we desoldered the regulator by a combination of applying new soldering, using copper wicks, melting old solder using an iron and hot-air gun, and removing solder with the solder sucker. Thank you so much, Aadeetya and Roland. We could not have done it without their help.

highlevel

Final Hardware Setup

Back to Top