Moved the ESP32 to a battery supply to try to minimize line noise and played with the MCP sampling configuration a bit.
Here's the noise level with a 1 Mohm resistor between the input and reference, and the reference shorted to the driven ground:
Once again about 10 uV rms white noise, which will hopefully improve a bit in practice with a lower channel impedance.
To try and capture an EEG recording I clipped the driven ground to my ear (using a Ag/AgCl ear clip) and pressed male gold-plated jumpers into the top of my head (for reference) and the back of my head (trying to get near occipital lobe). I was hoping I could see the emergence/suppression of alpha rhythms while closing/opening my eyes but obviously the 0.1 in^2 gold pin interface isn't really ideal and I was just guessing as to the location of the visual cortex. The full recording is below:
Zooming in a bit it's obvious that my main noise source now isn't thermal, it's 60Hz mains, which is to be expected since I'm running pretty long wires that aren't twisted or shielded to my head and I'm a pretty good antenna (if I do say so myself):
most of the lower-frequency activity and saturation is probably just motion artifact.
So basically I think I'm pretty limited in what I can do at the moment without proper electrodes and a headset, so I've started putting together the OpenBCI Ultracortex Mark III headset, and will soon be able to try to get some proper EEG recordings with it. I'll also need to make an enclosure of sorts to secure the ESP32 module and my custom board to the headset, but that should be pretty straightforward as the headset already contains a mounting plate on the back.