This project is submitted for

Details

Acquiring high quality electroencephalogram (EEG) signals within indoor environments is challenging. The high impedance nature of the measurement allows AC power frequencies to easily couple, overwhelming the tiny signals which correspond to muscle responses and brain activity.

This project aims to create a high performance but easy-to-use Arduino library which manages the simultaneous acquisition of many EEG signals. The powerful 32 bit ARM hardware of Teensy 3.1 will be used to acquire many channels at precisely 600 or 900 Hz sample rate... much faster than can be done on regular 8 bit microcontrollers which lack DMA and SPI FIFO buffering. The DSP extensions of the ARM Cortex-M4 processor will be used to implement deep notch filters to remove 50 or 60 Hz AC coupled noise, and other filter to reduce the data rate to usable levels without nyquist aliasing. The Cortex-M nested priority interrupt controller will be used to schedule the acquisition and filtering operations to occur automatically, so the Arduino sketch code is relieved of any responsibility for rapid, low-latency response.

Ultimately, the goal of this project is to make receiving high quality EEG measurements, free of corruption from AC power coupling, as simple as fully buffered Serial communication.

This project is NOT a final finished product. It's a software library with reference hardware, intended to allow makers to easily acquire high quality EEG and similar biopotential signals, solving the tough problems of fast, low latency signal acquisition and complex real-time digital signal processing to reject AC noise coupling.

I just found this project and I will be checking it out later because I'm not quite ready for it yet. But since Brett mentioned electrodes, I have a design for non-contact electrodes on github. The files are in kicad. You have to etch them on double sided pcb with one side solid copper connected to the input. I have measured an ekg with them through a T shirt. It was a little noisy but I think I can make improvements. I think the front end design can be a little different with active electrodes than without. I'm currently tuning my front end. I would love to get involved and help to create something cheap and open source. Mostly I like to experiment though.

Paul, hi. Would it be possible to stack the boards (possibly with external CS jumper lines or using Daisy idea) to get more than 8 channels? Would need to use ADS1299 since my app is EEG. Do you have some of these boards available? (I assume unpopulated and I would do SMT soldering.) Or suggest what board fab to use.

Goal here is to use the OpenBCI firmware with a bit of hacking to assemble a 24 channel system. Like the idea of your filtering, but also need OpenBCI compat. May be able to utilize parts of both.

Great project!

William Croft, OpenBCI

PS can you post board schematic? What ESD / EMI protection are you using? Are you using TI's recommended "star ground" idea to reduce noise. OpenBCI has separate power and ground planes, I think for both digital and analog power

Is the regulator on the Teensy going to be able to power 3x ADS1299 chips? 24 channels is the sufficient "magic number" of channels that enables standard 19 channel EEG recordings that are widely used in QEEG neurofeedback. 250 Hz is usually adequate, but 500 Hz is nice to provide also. Your downsampling idea is cool, however many EEG systems just provide the straight data.

Very cool!I just ordered components to build dry, active electrodes for an eeg myself! Is this project geared more towards sampling and moving bio-signal data, or processing and interpreting data from an EEG/EMG/ECG?I think this stuff is VERY intriguing but I have no first-hand experience. Have you built something like this before with success?