DIY EEG Headset: Does my ADS1299-based architecture make sense?
Hi everyone! ![]()
I'm Mariana, a Information System undergrad from Brazil, and I'm building a DIY EEG headset from scratch for my thesis. I'm a complete beginner in hardware, but I've been studying every component carefully before purchasing anything.
Here's the architecture I'm planning:
• Ag/AgCl electrodes at Fp1, Fp2, F3, F4 (10-20 system)
• Passive RC filters at the input — anti-aliasing and RF protection
• ADS1299 as the analog front-end — internal PGA, 24-bit, 8 channels
• LiPo battery for isolated power supply (no wall power on the headset side)
• Optical isolator on the SPI data channel — to physically separate the headset from the ESP32
• ESP32 for Bluetooth transmission to PC
• BrainFlow for data streaming
Before I buy anything, I have a few questions:
1. Does this architecture make sense for a functional EEG headset?
2. Is the optical isolator on the SPI channel the right approach, or is there a better way to handle isolation?
3. Any components I should swap or add?
4. What are the most common mistakes beginners make at this stage?
Any feedback is hugely appreciated. Thank you!
Comments
Designing mixed signal analog / digital boards, is considered somewhat an art form. And many considerations must be met to achieve a good mixed signal design.
https://www.analog.com/en/analog-dialogue/articles/staying-well-grounded.html
The datasheet, section 12 Layout has good advice.
https://www.ti.com/lit/ds/symlink/ads1299.pdf
Thank you so much, wjcroft! Really appreciate you taking the time.
I'll study both resources carefully — the grounding article and the ADS1299 datasheet layout section. I had a feeling PCB layout would be one of the trickiest parts, and this confirms it.
If I run into questions as I go deeper into the design, would it be okay to follow up here?
Sure. Don't forget the 'Google Search OpenBCI' button in upper right column. OpenBCI Cyton schematics / layouts are here:
https://docs.openbci.com/Cyton/CytonSpecs/
Hello @nanapy I’m currently planning a new (modern) version of the Cyton board. I’m currently planning to use nRF52840 instead of the esp32. Tmo is a better option in many regards, but of course it depends what you’re aiming for. This is what I found out:
)
•EMI: ESP32’s WiFi transmitter outputs up to 20 dBm on 2.4 GHz, generating massive electromagnetic interference right next to an ADS1299 measuring microvolt signals. nRF52840 uses BLE at max +4 dBm with short duty-cycle transmit pulses — orders of magnitude less noise coupling into the analog front end.
•Power: ESP32 WiFi draws 150-200 mA during TX. nRF52840 BLE draws 5-10 mA. For a battery-powered wearable, that’s the difference between 2 hours and 20+ hours of runtime on a single-cell LiPo.
•Protocol: BLE 5.0 on the nRF52840 provides adaptive frequency hopping (automatically avoids congested channels), built-in packet retransmission (lost packets are resent automatically), and configurable connection intervals down to 7.5 ms — all critical for reliable, continuous EEG streaming. ESP32’s BLE stack is less mature and its WiFi stack offers no advantage for low-latency biosignal streaming.
•Ecosystem: Nordic SDK with Zephyr RTOS support, extensive documentation, and active community. Well-proven in medical/biosignal devices. ESP32 is great for IoT but not recommended for precision analog acquisition due to EMI.
Otherwise for the ads1299 part I would stay with the version that you can find in the open source plan. It’s very well planned. Wish you a lot of fun with your project
Best regards
Wow, thank you so much for this detailed breakdown! This is incredibly helpful.
The EMI point alone is convincing enough — I hadn't considered how much the ESP32's WiFi transmitter could interfere with the ADS1299 signal. And the battery life difference is huge for a wearable.
I'll switch to the nRF52840. Do you have any recommended module or dev board to start with for a thesis prototype?
Thanks again, and good luck with the new Cyton version!
I would go for the Nordic nRF52840 DK. For developing and testing your custom EEG board firmware, the Nordic nRF52840 DK imo is the best choice. It has an onboard J-Link debugger, all GPIOs broken out, and full Nordic SDK/Zephyr support — so you can develop your BLE NUS streaming protocol and SPI interface to the ADS1299 with proper debugging. Once the firmware works on the DK, it ports directly to the Raytac MDBT50Q module in your final PCB design since both use the same nRF52840 chip. Only downside is the price, but you can find probably an used one or ask a friend/colleague.