The eeg-mouse is a project to attempt to control an on-screen pointer
using EEG signals.
This has potential application for adaptive equipment.
About the eeg-mouse project
Project goals
The main goal of the project is to build a device that allows use of
electrophysiologic signals to control a computer pointing device.
In addition:
Hardware and software that we develop will have a free/open source
license.
We prefer to use hardware and software that are free/open
source for our development efforts.
In the end the mouse should be usable with a headband that does not
require conductive gel. For prototyping, we'll use skin electrodes with
conductive gel (not needle electrodes).
For us, this is a hobby and learning project. It's important to
keep it fun, and take the time to learn along the way.
Current Status as of August 2014
We are able to record EEG signals and extract alpha and beta
activity, and use these to control a cursor in two dimensions. Our
tests allow the mouse to be moved with an average distance to target of
under 50 pixels, although there is a considerable amount of instability
in our control; we hope to improve this.
Here you can see a trial run:
Current Hardware
The
OpenHardwareExG platform pictured above integrates USB,
an Arduino Due compatible
microcontroller Atmel SAM3X (ARM Cortex M3 microcrontroller),
5kV of reinforced isolation (for safety),
a TI ADS1299 8-Channel 24-Bit analog front-end for capturing EEG signals,
DIN 42-802 touch proof connectors sockets, LEDs for lead-off detection
display and signal-in-use, all in a laser-cut acrylic case.
Custom-built sheilded cables from
EasyCap.de, with standard
snap connectors for the electrodes, and DIN 42-802 (touch proof
safety socket) connectors to go to the board. We suspect
off-the-shelf
unshielded ECG cables should work, too.
Ten20 conductive paste and disposable sintered
silver Ag/AgCl electrodes with snap connectors
from MedCaT.nl. When they start to
look shiny instead of the matte black of the silver chloride, we
re-chloride them by soaking overnight in plain household bleach
(thin bleach). We have also used disposable
adhesive electrodes
Current Software
firmware for the Arduino:
Initializes the ADS chip and sends the signals from the chip to the
computer via the USB port, in frames and in hex format.
serial-reader.pl:
Reads the data from the Arduino, outputs the raw hex frames to standard
out.
frame-parser.pl:
Reads the raw hex frames and converts them to comma delimited output.
The format of the output is: the letter 'C' (magic), lead-off
status Positive, lead-off status Negative, status GPIO1 to GPIO4,
signal from channels 1 to 8 in volts.
chan1-filter.pl:
just passes the information from the first channel to the next stage.
freq-split-smooth.pl:
splits the signal into three parts, alpha activity (7-14 Hz), beta
(20-26 Hz), and "baseline" (16.5-17.5 Hz)
window.pl:
a GUI for moving a pointer around the screen driven by the input from
the EEG.
(The authors may be persuaded to license
parts of their contributions under another FOSS license if GPLv3
is a problem for integration with an existing established project,
for instance linux kernel is GPLv2. Please contact us.)