To graduate with an engineering degree from CSUS you must do a “senior project.” This project is meant to put all your engineering skills to the test and force you to work in a team for a year. I started my senior project Spring 2006 and initially proposed three project ideas:
- Wireless Electro-Oculargram
- I had recently read an article about measurable potential across eyes, and a project that had implemented it as a way to let disabled people type on a screen. The circuit itself didn’t seem too difficult and I thought it would be interesting to make a hand-held wireless device you could interface to a PC and use to move the mouse.
- I had numerous failed start-up attempts at doing a micromouse by myself in college, and I thought if I had a team to help maybe I could finish it.
- RC Force-Feedback system
- I wanted to put a wireless accelerometer on an RC car/plane/boat and have it send data back to the controller. The controller would have servoes on it and yank the control sticks when you get acceleration not cause by the controller (ex. if a wind gust hits the plane it would pull the stick so you could feel it).
- Member A
- Analog circuit design (amplifiers, filters, rectifiers)
- Member B and C
- Wireless design (transmitter and receiver)
- Embedded design, integration, PC software
Theory of Operation
The potential difference between the front and back of the human eye is around 0.2 to 1 mV. If you can amplify and read that signal, you can determine eye position without the need for cameras.
This is a basic overview of the circuit. Each eye axis is amplified with the instrumentation amplifier, filtered, the DC offset is determined, then rectified and split into four signals. The microcontroller was basically used as an analog to serial converter. The Atmega8 would sample the four ADC channels and generate a serial packet in the form of:
The software was written in C# with great help from Kevin (Kevin did more work on my senior project then any of my actual project teammates). It reads data from the serial port and graphs it to four pane windows.
Because the circuit has a fundamental time constant (large capacitance from the filters), the actual data roughly represents the acceleration of eye movement instead of position. For this reason, to calculate actual position the data must be integrated.
The layout was done in EagleCAD. I was extraordinarily short on time, and autorouted almost everything except the power and ground lines.
I had the PCBs made at a company I still use today, Sunstone circuits. There were surprisingly few errors on the board considering it was the first turn. The only major mistake was the incorrect footprint for the regulator (which wasn’t that bad), and the smd diodes barely fit the footprint.
The project was hard. In the end, I had basically done all the work: project presentations, reports, analog design, digital design, firmware programming, software programming (with help from a computer science friend), PCB layout, assembly, and testing.
During the semester I grew increasing frustrated with how little work my teammates did but looking back it turned out great for me. My senior project professor saw that I had done all the work and when it came time to get a job he pulled some strings to get me an interview at the company I work for now. Not only that, but the process of designing my senior project made me a much better engineer and gave me a great talking point for every job interview I had.