Community /

SSVEP based BCI Speller

Department of Electrical Engineering UET Lahore

Project Overview

This project implements SSVEP technique of Brain Computer Interface in the form of speller. We cloned the Cyton board and WiFi-shield using OpenBCI designs (thanks to OpenBCI). We used the wet electrodes to capture the EEG signals, they worked fine with electro-gel. For data collection used the OpenBCI_GUI (thanks again to OpenBCI) to create csv files. For live working used test_wifi script from OpenBCI_Python modified in a way to collect data from WiFi-shield continuosly over WiFi direct mode and to process the chunks (implemented the filtration, signal processsing and classification). Actually two classifiers were used one to detect eye-blinks (to start or stop the app) and other to classify SSVEP frequencies. The speller app was designed in Unity, consisting of four blocks each with a different flickering frequency hence four classes to be classified. After classification communicated with the app using text file that is to select the block of interest. The demo video is here:

Complete Project Demo

Some findings:

1- I didn’t use the bluetooth at all. Referring to the thread: in OpenBCI forum.

2- When recieving data over WiFi, I tried to use LSL to transfer data to MATLAB and performed classification for live working. But it didn’t work, there was a delay of 5 to 10 secs because of the involvement of OpenBCI LSL layer, tried different configurations of LSL but all in vain. So I decided to use OpenBCI_Python to acquire data from WiFi-shield and it worked fine for me.

3- I couldn’t use SSVEP frequencies above 15 Hz which was one fourth of screen’s refresh rate. Above this frequency, in FFT plot the frequency gets distorted in near regions like no sharp peak at single frequency but several peaks in near regions like 14 to 16 Hz. One possible solution is using dedicated controller for screen flickering.

Leave a Reply