OpenBCI_GUI 5.0 Serial Port

Hello.
I would like to have the possibility of using OpenBCI_GUI ver. 5.0 with direct serial connection WITHOUT RFDuino dongle. The previous versions up to 4.20 did it quite well, however, it seems to me the version 5.0 establishes certain dialog with the Dongle itself and this is what I want to override.
Not having the Electron Hub is a great advantage!
Any directions on this will be appreciated.
All the best.
Nelson

Comments

  • retiututretiutut Louisiana, USA

    GUI v5 uses BrainFlow backend, which is open-source. :smile:

    You are free to modify both BrainFlow and GUI code. Here is a link to the C++ backend code for Cyton:

    https://github.com/OpenBCI/brainflow/blob/master/src/board_controller/openbci/cyton.cpp

    Hope this helps,
    RW

  • Thanks a million.
    I just checked the BrainFlow side of my problem but I need to modify the Processing sketch to allow the OpenBCI_GUI to detect my COM port even if it is NOT connected to the RFDuino, but connected to my standard USD-Serial adaptor.
    Version 4.0 using the Electron HUB allows me to select (p.e) COM7 as my Serial Com port while I have COM7 attached to a standard USB/Serial adapter, and does not requires RFDuino dongle.
    However, OpenBCI_GUI version 5.0 based on js does not "see" any COM port UNLESS it has attached the RFDuino dongle.
    How do I allow the Version 5.0 to select my COM7 attached to a standard USB-Serial adapter.
    Thanks again !!
    Nelson

  • retiututretiutut Louisiana, USA
    edited September 2020

    However, OpenBCI_GUI version 5.0 based on js does not "see" any COM port UNLESS it has attached the RFDuino dongle.
    How do I allow the Version 5.0 to select my COM7 attached to a standard USB-Serial adapter.

    In Control Panel, there is a method getCytonComPorts():
    https://github.com/OpenBCI/OpenBCI_GUI/blob/b1b03c5549fa0448a91c8ee3b605e5f83e63cc84/OpenBCI_GUI/ControlPanel.pde#L1378

    Here is the line of code that gets the names of the available com ports from the operating system:

    final SerialPort[] comPorts = SerialPort.getCommPorts();
    

    So you could do:

    printArray(SerialPort.getCommPorts());
    

    And add your desired com port to final String[] names = {"FT231X USB UART", "VCP"};

    Hope this helps,
    RW

  • Thank you.
    Worked like a charm!
    All the best.
    Nelson

  • Dear All. Hope everything is going well. In Argentina situation is not improving, so far.
    Let me ask:
    1)the new option in OpenBCI_GUI Version 5.0.1 shows a new option STREAMING (from external). Where can I see the protocol required to use with CYTON boards in order to use this very interesting option?
    2) Is it possible to adjust the Serial Port baud rate to 230400 bps in the OpenBCI_GUI AND in CYTON firmware? Note: I am NOT using RFDuino for this testings.
    All the best, Nelson

  • retiututretiutut Louisiana, USA

    STREAMING Board accepts an OpenBCI Board coming from a separate process (Example: BrainFlow example Python sketch).

    You may need to modify the the Cyton firmware, BrainFlow, and/or GUI to increase communication rate.

    @wjcroft Do you have any other advice for this user?

  • wjcroftwjcroft Mount Shasta, CA
    edited September 2020

    Richard, hi. Is the STREAMING protocol documented anywhere? For example, what is the format of the stream? LSL, Brainflow, etc. If it is Brainflow, is there example code that outputs a stream? Most of the Brainflow tutorials are covering RECEIVING from a board and doing signal processing in that code. These examples are not sending out a stream(?)

    re: serial port baud rate. There are other threads regarding wired usb that can be found with the Google Advanced Search button.

  • retiututretiutut Louisiana, USA

    STREAMING Board is not documented yet, and is an advanced feature used in testing and development.

  • retiututretiutut Louisiana, USA
    edited September 2020

    Here is the Streaming Board documentation from BrainFlow: https://brainflow.readthedocs.io/en/stable/SupportedBoards.html#streaming-board

    I have made an issue to add this information to the Docs: https://github.com/OpenBCI/Documentation/issues/34. Hope to resolve this soon!

  • Dear all:
    I am running comparison between OpenBCI CYTON and commercial EEG unit.
    The preliminary results shows that sensitivity of CYTON is very low compared to commercial unit.
    My question is:
    The A/D conversion done by ADS requires a calibration in uV per Sample.
    Assuming I set GAIN x24 there is a variable in BoardCyton.pde
    static final float ADS1299_Vref = 4.5f;
    static final float scale_fac_uVolts_per_count = ADS1299_Vref / ((float)(pow(2, 23)-1)) / ADS1299_gain * 1000000.f;
    Is there any other place where calibration is done?
    I did not see nothing on Cyton Firmware, so I assume Cyton sends raw values to OpenBCI_GUI.
    Next. This formulae used for calibration is based on TI ADS datasheet? I did not found it...
    Does it make any sense to you the low sensitivity of Cyton compared to commercial unit or it is just a lack of calibration at the GUI side?
    Thank a lot.
    Nelson

  • wjcroftwjcroft Mount Shasta, CA

    I am running comparison between OpenBCI CYTON and commercial EEG unit. The preliminary results shows that sensitivity of CYTON is very low compared to commercial unit.

    Jeremy Frey, PhD, found that Cyton compared very favorably regarding sensitivity to a direct comparison with a g.tec high end medically certified amplifier for EEG usage.

    https://arxiv.org/pdf/1606.02438.pdf

  • retiututretiutut Louisiana, USA
    edited September 2020

    In the latest GUI, there is a button near the filter buttons that allows users to choose between two gain conventions "Body" and "Classic":

    private String getGainString() {
            return ((ADS1299SettingsBoard)currentBoard).getUseDynamicScaler() ? "Gain Conv\nBody uV" : "Gain Conv\n Classic";
        }
    
    if (currentBoard instanceof ADS1299SettingsBoard) {
                double scaler =  (4.5 / (pow (2, 23) - 1) / 1.0 * 1000000.);
                if (((ADS1299SettingsBoard)currentBoard).getUseDynamicScaler()) {
                    scaler =  (4.5 / (pow (2, 23) - 1) / ((ADS1299SettingsBoard)currentBoard).getGain(channel) * 1000000.);
                }
    
  • wjcroftwjcroft Mount Shasta, CA

    I am running comparison between OpenBCI CYTON and commercial EEG unit.

    Can you clarify, the Cyton you refer to is one manufactured by OpenBCI with our unaltered firmware. Or is this the clone you have manufactured?

  • i am using original board bought from OpenBCI with original dongle.

  • wjcroftwjcroft Mount Shasta, CA

    And your comparison between the "commercial EEG unit", is with EEG or ECG? Who is the manufacturer / model of the unit? The g.tec company is highly respected in the BCI arena. An Austrian company, that also sponsors BCI conferences and hackathons, etc.

    https://www.gtec.at/product/
    https://www.gtec.at/product/webinars/

  • The comparison is based on Argentinian units that are used in public hospitals and clinics as the gold standard.
    Brand name ATI.
    However, i will go over Dr. Frey's paper and double check the gain settings as well as filters.
    During my own lab testings, CYTON showed a quite fantastic performance.
    My guess is: configuration and settings.
    Will keep you informed.
    The process is extremely slow due to Covid 19...
    All the best.
    Nelson.

  • nejemianejemia argentina

    Dear All:
    In which .pde is the code
    if (currentBoard instanceof ADS1299SettingsBoard) {
    double scaler = (4.5 / (pow (2, 23) - 1) / 1.0 * 1000000.);
    if (((ADS1299SettingsBoard)currentBoard).getUseDynamicScaler()) {
    scaler = (4.5 / (pow (2, 23) - 1) / ((ADS1299SettingsBoard)currentBoard).getGain(channel) * 1000000.);
    }
    I would like to have the GUI starting with "Gain Conv\nBody uV" by default.
    Thank you so much !
    nelson

  • retiututretiutut Louisiana, USA
    edited October 2020

    You can find code in question in Extras.pde in the DataStatus class in GUI v5.0.1.

    We are about to make "Body uV" the default gain mode. Will be coded/merged soon. Just discussed today.

    Also, I hope you are using Visual Studio Code or Atom instead of Processing. Makes it easier to read and type. https://github.com/OpenBCI/OpenBCI_GUI/wiki/Developer-Setup

Sign In or Register to comment.