Show HN: Open-Source 8-Ch BCI Board (ESP32 and ADS1299 and OpenBCI GUI) (github.com)

54 points by simontheHWguy ↗ HN
Hi HN, I recently shared this on r/BCI and wanted to see what the engineering community here thinks.

A while back, I got frustrated with the state of accessible BCI hardware. Research gear was wildly unaffordable. So, I spent a ton of time designing a custom board, software and firmware to bridge that gap. I call it the Cerelog ESP-EEG. It is open-source (Firmware + Schematics), and I designed it specifically to fix the signal integrity issues found in most DIY hardware.

I believe in sharing the work. You can find the Schematics, Firmware, and Software setup on the GitHub repo: GITHUB LINK: https://github.com/Cerelog-ESP-EEG/ESP-EEG

For those who don't want to deal with BGA soldering or sourcing components, I do have assembled units available: https://www.cerelog.com/eeg_researchers.html

The major features: Forked/modified OpenBCI GUI Compatibility as well as Brainflow API, and LSL Compatibility. I know a lot of us rely on the OpenBCI GUI for visualization because it just works. I didn't want to reinvent the wheel, so I ensured this board supports it natively.

It works out of the box: I maintain a forked modified version of the GUI that connects to the board via LSL (Lab Streaming Layer). Zero coding required: You can visualize FFTs, Spectrograms, and EMG widgets immediately without writing a single line of Python.

The "active bias" (why my signal is cleaner): The TI ADS1299 is the gold standard for EEG, but many dev boards implement it incorrectly. They often leave the Bias feedback loop "open" (passive), which makes them terrible at rejecting 60Hz mains hum. I simply followed the datasheet: I implemented a True Closed-Loop Active Bias (Drive Right Leg).

How it works: It measures the common-mode signal, inverts it, and actively drives it back into the body. The result: Cleaner data

Tech stack:

  ADC: TI ADS1299 (24-bit, 8-channel).

  MCU: ESP32 Chosen to handle high-speed SPI and WiFi/USB streaming

  Software: BrainFlow support (Python, C++, Java, C#) for those who want to build custom ML pipelines, LSL support, and forked version of OpenBCI GUI support
This was a huge project for me. I’m happy to geek out about getting the ESP32 to stream reliably at high sample rates as both the software and firmware for this project proved a lot more challenging than I expected. Let me know what you think!

SAFETY NOTE: I strongly recommend running this on a LiPo battery via WiFi. If you must use USB, please use a laptop running on battery power, not plugged into the wall.

8 comments

[ 2.9 ms ] story [ 31.5 ms ] thread
This is very interesting. I was looking into the viability of something like this a few months ago and started seeing eye watering prices and closed off ecosystems. And many gotchas when looking into diy, more than I could justify learning about.
What is your goal with the Cerelog ESP-EEG?

During my mid-teens, I got this wild idea that I could reproduce the experience of psilosybe cubensis by learning to mimic the brainwave patterns through the practice of neurofeedback. I didn't have an EEG, but I learned about the OpenEEG project. Eventually I bought an OpenEEG-based MonolithEEG[0] during a summer where I was fortunate enough to be in west Europe.

Shortly thereafter, I realized I had no experience at all with electronics assembly, and the fever dream quickly evaporated. The MonolithEEG PCB was lost to time.

[0] http://www.shifz.org/moosec/index-Dateien/Page431.htm

(comment deleted)
> I’m happy to geek out about getting the ESP32 to stream reliably at high sample rates

Please do.

Cool project! How does this compare to something like the OpenBCI cyton?
This is a super cool project! Probably the most interesting neurotech hardware I've run across since OpenBCI was released.

It would be great to see a side-by-side comparison of Cerelog and OpenBCI data from the same session/patient.

A few questions:

- Could you clarify which parts of the project are licenced MIT, which are CC-BY-SA, and which are CC-BY-NC-SA? It seemed like the guide and the README had more restrictive language than the actual license file.

- What made you decide to start fresh, rather than adding the features you needed to the OpenBCI?

Thanks for making this! I'm very tempted to get one of these to do some ssVEP stuff.

Do you have plans to make a 16-channel (or 32-channel?) board in the future? In my area of research, 32 channels tends to be the recommended minimum for studies.