4 HackEEG boards stacked, blinking their blue LEDs
I’ve been wanting to show this off for a long time, and I finally got the software working!
Up to four HackEEGs can be stacked, for a total of 32 EEG channels. That’s a short movie of the HackEEG python client
hackeeg_shell asking the Arduino Due driver to blink the blue board LED in turn. The blue LED is connected to an ADS1299 GPIO pin, so if we can blink it, we know we can send data to chip and configure it. So the whole stack of boards is working! 32 EEG channels!
That proved we can write to the chip. Can we read EEG data from it? Yes! Things are a bit slower with a stack of boards, since the multi-board software is still a work in progress. But we can read 500 SPS from all four boards without losing any samples:
$ hackeeg_stream --channel-test --sps 500 --samples 100000 --messagepack --quiet duration in seconds: 50.95084853300068 samples per second: 1962.675850927789 dropped samples: 0
Notice we’ve set the sampling rate to 500 samples per second (SPS) but we got almost 2,000 samples per second. That’s 500 SPS x 4 boards = 2000 SPS total.
In the movie and the demo above, the HackEEG is not connected to EEG electrodes– I’m testing using the
--channel-test option, which turns on a combination of ADS1299 internal test signals. It’s digitizing its own test data. In a later update I’ll show the whole setup connected to OpenBCI so we can look at the EEG data graphically.
4 HackEEG boards stacked
Why are things slower with four boards? With one board, we can read 16,000 samples per second, with four we should be able to do 4,000 per board, right? Theoretically that’s true. But in practice, there’s more overhead to deal with – we have to configure 4x as many boards, there are 4x as many interrupts happening, we have to do more conditional checks when running with 4 boards, etc. I hope to do some optimization in the next few weeks, and that might allow us to get to 1,000 samples per second per board, so 4,000 SPS total. It’s pretty close to that already.