ardEEG
The lowest-cost way into brain signals. An 8-channel shield for the Arduino UNO R4 WiFi.
An ADS1299 on a shield reads EEG, EMG and ECG. The Arduino sends it over Wi-Fi to a Python script on your computer. Two scripts, one small battery, and you’re measuring. Built for students, hobbyists, teachers and embedded prototypes.
- Channels
- 8, plus REF and BIAS
- Signals
- EEG, EMG, ECG
- Converter
- ADS1299, 24-bit
- Sample rate
- 250 SPS
- Host
- Arduino UNO R4 WiFi
- Link
- Wi-Fi, UDP
Where to use it
From a first look at your own brain waves to an Arduino that reacts to your muscles on its own. Pick a use case and try the live demo.
Simulated signal to show the effect. Real recordings are noisier.
How to set it up
Seat the shield, connect the electrodes, put three settings into the sketch, upload, unplug, run the Python script. Eight steps.
-
1
Gather the kit
You need the WiFi version of the UNO R4. The UNO R4 Minima looks almost the same but has no Wi-Fi, so it can’t send the data.
-
2
Seat the shield on the Arduino
Line the shield up with the Arduino’s headers and press it down evenly until every pin is in. Besides power, the shield uses only five Arduino pins: four for SPI and one that says a new sample is ready.
Hover a pin to see what it does. Leave these pins free if you add your own hardware.
Hover a highlighted pin.
-
3
Connect the electrodes
Place the eight channel electrodes on the cap at 10-20 positions. Clip the reference to one earlobe and the bias to the other. The bias actively cancels interference.
This is the layout from the ardEEG paper. T5 and T6 are the older names for P7 and P8. Use any positions you need and follow the labels on the shield.
-
4
Put your network into the sketch and the script
Open
1.Send_data_via_wifi.inoin the Arduino IDE. It needs your Wi-Fi name, your password, and the IP address of the computer that will receive the data. The Python script needs the same IP.Find your computer’s IP with
ipconfigon Windows,ip addron Linux, or in Wi-Fi settings on macOS. Type your values here and copy the lines you need. -
5
Upload, then unplug the USB cable
Connect the Arduino to the computer with USB-C, pick Arduino UNO R4 WiFi as the board and upload. Then disconnect the USB cable.
The USB cable is only for uploading. During a measurement the Arduino must never be connected to a computer port or a wall adapter.
-
6
Power it from the battery
Plug the small power bank into the Arduino. It joins your Wi-Fi and starts sending packets. The battery keeps the person isolated from the mains and the signal clean.
Do
- Small 5 V power bank
- 1 A maximum, up to 1,000 mAh
- Short cable
Don’t
- A computer’s USB port
- Wall adapters or chargers
- Big, high-current power banks
-
7
Run the Python script
On the computer, run
1.Alpha_real_time.py. It listens for the Arduino’s packets and plots all eight channels live, with a band-pass filter.No graph? Check the Arduino is powered, the computer is on the same Wi-Fi, the name, password and IP are right, and the firewall lets UDP port 13900 through.
# once pip install matplotlib scipy # every session, same Wi-Fi as the Arduino python 1.Alpha_real_time.py
-
8
Check it works: a blink, then alpha
Two quick tests from the ardEEG repository. A hard blink throws a big spike onto Fz. Then close your eyes: after the 8 to 12 Hz filter, alpha waves grow and drop again when you open them.
Before you put it on anyone
- ardEEG is not a medical device and hasn’t been certified by any regulator. It can’t be used for any medical purpose.
- Run it from a 5 V battery only. It must never be connected to mains power, through USB or any other way.
- Upload the sketch first, then unplug the USB cable before the electrodes go on.
- Don’t use it with a pacemaker or other implanted device without asking a physician. Stop if the skin becomes irritated.