Switching from Backyard Brains To OpenBCI

I'm working on an open source project that was using Backyard Brain's Heart and Brain SpikerShield. I just found out Backyard Brains discontinued this item. So I'm looking to switch to openBCI.

I'm wondering if openBCI will do want I want:
The Heart and Brain SpikerShield sent a signal to my Arduino. I could get a representation of that signal in integer values between 0 and 1023 using the analogRead() function. Then I used the arduinoFFT library to analyze these values and give me the frequency of the brainwaves so I can then program the Arduino to do some action (ex: turn on an LED) if it detects certain brainwaves.

Can I get a similar signal with OpenBCI hardware into my Arduino so I can get the frequency using arduinoFFT?

Here's a little more context of my project including the code if it helps.

Also, I'm sort of a newb.

Comments

  • wjcroftwjcroft Mount Shasta, CA

    BrainFlow library is the new recommendation for receiving data from OpenBCI boards. These boards connect to a computer through a usb serial port.

    https://brainflow.readthedocs.io/en/stable/

    There ARE some Arduino's that accept usb host mode shields, that the usb serial port dongle could plug into. But it depends on the form factor of your Arduino. If that is possible, then you will need to run the BrainFlow library interface. I'm not clear that is possible from the doc link above. Most people use a laptop to interface.

    Regards, William

  • retiututretiutut Louisiana, USA
    edited April 2020

    Out of the box, you would do:
    OpenBCI Board (Cyton or Ganglion) -> Computer -> Arduino via Serial Port

    This process has been used to control a variety of robots and motors. :wink:

    Here is the Networking data sheet with a breakdown of the available data types:
    https://docs.google.com/document/d/e/2PACX-1vR_4DXPTh1nuiOwWKwIZN3NkGP3kRwpP4Hu6fQmy3jRAOaydOuEI1jket6V4V6PG4yIG15H1N7oFfdV/pub

    An example to be used in classrooms:
    https://www.instructables.com/id/Send-Focus-Data-From-OpenBCI-GUI-to-Arduino/

    More advanced stuff:
    BrainFlow - https://brainflow.readthedocs.io/en/stable/
    Timeflux - https://doc.timeflux.io/latest/

    Hope this helps,
    RW

  • wjcroftwjcroft Mount Shasta, CA
    edited April 2020

    She was previously getting an EEG INPUT stream from the Backyard Brains shield, to her Arduino, then doing FFT DSP on the Arduino. So I'm not clear where her output stream went. Possibly to the attached laptop.

    As Richard @retiutut says, the conventional way to do EEG with OpenBCI, is to run your program on the laptop. Then if you need to do motor control, device control, etc, you can send commands to an attached Arduino. But in general you will be much happier just running your programs on the laptop.

  • wjcroftwjcroft Mount Shasta, CA

    The document link that Richard gave, was explaining the different output modes of the OpenBCI_GUI Networking Widget. If you are programming your own DSP, you would be doing that in some programming language (C, Python, etc.) and bypassing the GUI.

  • Thanks everyone! I think understand now. I think the gist of it is- it is possible with an arduino host usb shield, but it isn't the standard way and I should consider the other options. Is that correct?

  • wjcroftwjcroft Mount Shasta, CA

    Correct, easiest way to run EEG DSP programs is on your laptop. Receiving the data from the OpenBCI dongle. That way you can either use the OpenBCI_GUI to display live data (and do some types of signal processing). Or write your own DSP using BrainFlow.

    The earlier link that Richard gave showing the features of the OpenBCI_GUI Networking Widget, gives the various built in DSP functions.

  • wjcroftwjcroft Mount Shasta, CA

    I believe your earlier BYB EEG Arduino shield measured a particular brainwave band, then caused feedback via an LED on the Arduino. There are many more feedback options available when you run your application directly on the laptop. If you do indeed need something like motor control or relay output, etc. -- then an Arduino attached to the laptop via serial usb port could perform that output function. So in such a case you would be using TWO usb serial ports: one for the EEG input from the OpenBCI wireless dongle (Cyton or Ganglion), and a second usb serial port for communication with the output-oriented Arduino.

    William

Sign In or Register to comment.