SSVEP based BCI game with my hardware WEEG [Video]

on Wednesday, July 6, 2016
I would like to share the status of my work. This blog post contains a brief description of the system and a demo video of a Brain Computer Interface game. The subject control a game character by looking at different flickering target. The result was great. The game character moves at a decent pace. I will describe more about this system in comming posts.

- WEEG (version 3.2) : Wireless EEG recording device with ADS1299
- Bluetooth module: HC05 to handle wireless data transmission

- Signal acquitition: Matlab GUI. Major functions in the background: Serial port data acquitition, Ring buffer to balance the datastream, real-time FFT, real-time configrable FIR/IIR filter, data integrity checker, event marker, game controller, and other signal processing functions.
- Stimulation: Flickering stimulation at 4 frequency (6.6Hz, 7.5Hz, 8.75 Hz and 12Hz) by Psychtoolbox 3 ( I built this stimulation software from stratch). Highly recommend this tool box for precise timing experiment (with Matlab).
- Game: Mario maze game ( written on Python). This game communicated with the WEEG signal acquitition via TCP. Insprired by this game

EEG montage:
- Bias drive at Left Mastoid
- Differential measurement at 1 channel: 0z-02

1 Zhu, D., Bieger, J., Garcia Molina, G., and Aarts, R.M.: ‘A Survey of Stimulation Methods Used in SSVEP-Based BCIs’, Computational Intelligence and Neuroscience, 2010, 2010, pp. 12


Marcin Jukiewicz said...

Hi. Where is reference and ground electrodes mounted?

Thong Vo said...

Ground electrode is on the left mastoid. The differential pair is Oz-O2. We can consider the Oz is the reference in this case.

Marcin Jukiewicz said...

Thx for fast reply.
BTW great work. What will be next? More stimulus? Another (higher) frequencies?
Good luck!

Unknown said...

Hi Thong, was your paper published?

Thong Vo said...

Hi there, yes, it is accepted. May I have your contact?

Marcin Jukiewicz said...

Can you share your code?

trung hau Nguyen said...

Glad to hear. Congratulation to you! Good job.

Thong Vo said...

I will share the code on github soon.

trung hau Nguyen said...

I had a problem how to find the correct positions of O1, O2. So I got the signal which does not correlate with stimuli frequency. Do you know the reason of that problem? Please give me some suggestions.
Thank you!

Hau Nguyen.

trung hau Nguyen said...

Hi Thong Vo, can you add me on facebook. My account is Hau Nguyen (PVEngineering, Ho Chi Minh city)

Chip said...

Very nice work! Getting stable flickering frequencies from a computer monitor has been a challenge for me. I'm glad that you have a system that seems to works well!

Chip aka. EEG Hacker (

Thong Vo said...

Hi Chip,

Thanks for your positive comment. Would you like to try my flickering software? I can publish it on my Github. It's a Matlab function based on Psychtoolbox. The software controls every output frame to the monitor, so a controlled flickering frequencies are presented. On the other hand, I tried the LED flickering set up which monitored by a micro-controller to achieve precise timing. However, the bright lighting scheme was too uncomfortable for subjects to play games.

Also, what is the best way to connect with you? I tried to send an email to your Creare email last month, but I haven't received any reply. I hope that we can collaborate if you have time.


Unknown said...


Cool work! I am also trying to use ADS1299 chip, but I do not understand how does the bias drive work. Can I just ignore the BIAS_IN, BIAS_OUT and BIAS_INV ports when I design the circuit? The problem has troubled me for a long time.
BTW, I read the ads1299 datasheet and to my understanding, the reference electrode can be configured as anyone of the eight channels, is that right?

It really troubled me for a long time. Please give me some clues.

Thank you very much!


Post a Comment