PiEEG Hardware ardEEG

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. 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. 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. 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. 4

      Put your network into the sketch and the script

      Open 1.Send_data_via_wifi.ino in 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 ipconfig on Windows, ip addr on Linux, or in Wi-Fi settings on macOS. Type your values here and copy the lines you need.

    5. 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. 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. 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. 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