I want to develop the EOG algorithms to do something useful, but having three electrodes dangling from your head and plugged into a box is quite uncomfortable and annoying. This is a frustration that I have seen echoed in papers, for example Bulling and Gellersen report the difficulties of capturing a labelled dataset in their paper Robust Recognition of Reading Activity in Transit.
To help solve this issue I wanted to move all electronics onto a pair of glasses that can be worn to minimise the number and length of cables that might interfere with the data collection.
In order to do this I first needed to miniaturise the electronics. To achieve this I moved to a four-layer PCB, rather than two layer, and used 0402 passive components, rather than the 0603 size I usually use. With this I managed to reduce the size to 11x25mm. While it may look like there is plenty of space, most of the “free” space is taken up by vias. This could be significantly improved with the use of blind and buried vias, but that is expensive and many prototype services do not support them.
The circuit is identical to EOGee2, except that all test points and jumpers have been removed. The three terminals are connected to three pads in the corners of the PCB so wires can be soldered on – connectors would simply take up too much space.
Many of the chips I am using come in smaller packages or could be replaced by parts with a smaller package, however I chose to not use smaller parts because it makes it much harder to solder and given the COVID19 situation I don’t have access to a reflow oven. I even chose to use a larger package for the LMV324 (which is the SOIC-14 package) because it gave more space for vias in between pads which made routing easier. Overall I would estimate that the design could be easily reduced into 1/5th the area if solder-ability was no object. There is not much you can do about the USB port.
Next I needed to design the glasses.
Since I left university and lost my student license for PTC Creo I have been using OpenSCAD for mechanical design, however the only glasses you can design in OpenSCAD look like the ocular version of the cyber truck.
So I decided to take this opportunity to learn a proper CAD package – I chose AutoDesk Fusion360 and this is what I came up with.
While looking like normal glasses, they also have all the EOGee electronics integrated into them.
The PCB is mounted in the right arm on a small plastic standoff to keep the USB port flush with the surface and is held in place by a plastic bracket. This bracket is held in place on one end by a small clip and on the other end by the same bolts that attach the arm to the front.
There are also two M2 bolts which connect to the reference electrode and one of the signal electrodes. This allows cables to be attached using the standard snap connectors , as discussed in a previous article, but because these are close to the head the cables can be much shorter.
The left arm mounts the third and final electrode connection. We also need a way to get a wire from the right arm to the left, and this is done by using a recessed channel in the front of the glasses.
This channel runs all the way across the front of the glasses and has a number of plastic loops along the way to hold the wire in place.
The wire for the left electrode is shown by the red wire in the above diagram. The mounting surface between the front of the glasses and the arms have small holes and a recessed channel to allow a wire to connect from the right arm to the front of the frames and back on the left arm.
The total package is only 20g.
Altogether this allows all electrodes to connect directly to the glasses which reduces wire length and also reduces the inconvenience of having multiple electrodes on your head.
Here is a video of me using the glasses. I am using gold cup electrodes from OpenBCI with some Ten20 electrode paste.
During this video I do a number of sharp saccades, however I also do a smooth pursuit. During this pursuit you can see a couple of sharp jumps in the EOG signal. This is because during these pursuits the microcontroller readjusts the DC offset of the signal in order to keep it inside the ADC range as described in this article. This causes a large spike in ADC reading and the software doesn’t yet perfectly correct for which causes the signal to jump a little – this compensation has only been roughly tuned and could be improved.