Is it possible to add additional inputs such as temperature or oximetry to the Cyton board so that the sensor responsible for temperature or oximetry can communicate with the Cyton board?
Cyton has three extra channels, besides the 8 or 16 'normal' channels. These extra channels are stored in the 'Aux' positions in the data stream. The Aux channel can be set to sample in either digital or analog mode. In analog mode the voltage range is 0V to 3.3V. See this example:
I'd suggest your easiest route would be to use a separate Arduino board, connected via I2C to the breakout. That Arduino would then plug into usb on your laptop, as a usb serial port. Your serial port data stream could then contain any info or update rate you desire.
I'm not sure the PIC32 (Cyton) or Simblee (Ganglion) can properly drive I2C peripherals, since those processors have tight timing constrains to service the 250 Hz or 200 Hz data streams. Your best bet is a separate Arduino. As you might know, PPG or pulse info does not change that quickly, so does not actually need to be included in an Aux data stream along with the EEG.
Ganglion does not have Aux channels.
As far as the SpO2 (pulse oximeter) features, that requires careful calibration, so I'm not sure this is the correct breakout for pulseox. If you see the data sheet, the chip was targeted for smoke detection, not pulse application.
Thanks for your help earlier this year.
I am now revisising my post.
I understand the Cyton board has three 'aux' channels that I could use for additional sensors however if use these channels for another sensor, it removes the accelerometer functionality.
My goal is to have EEG, accelerometer, oximetry, temperature, sound (microphone) and light (light sensor) streaming simultaneously and wirelessly (ideally in the same output file) to a computer for real-time processing.
It sounds like my best option may be to use a separate Arduino (I have a sparkfun redboard) for the oximetry, temperature, sound and light and the Cyton board for the EEG and accelerometer data. And to then get these two boards streaming simultaneously to the computer.
It sounds like my best option may be to use a separate Arduino (I have a sparkfun redboard) for the oximetry, temperature, sound and light and the Cyton board for the EEG and accelerometer data. And to then get these two boards streaming simultaneously to the computer.
Yes, this is easily done. The Cyton dongle appears as a usb serial port. Most Arduino boards will also appear as another usb serial port. Your program just needs to read that additional serial stream. Three of those value only change slowly: oximetry, temp, and light level. An Arduino collecting these values could output an ascii text line of data every second or a few times per second, such as: ox-value, temp-value, light-value.
I'm not sure what you refer to as 'sound'. If you are wanting to actually collect an audio microphone stream then your best bet is a simple usb audio interface 'adapter', with mic input jack.
...streaming simultaneously and wirelessly (ideally in the same output file) to a computer for real-time processing...
If you are indeed doing real-time processing, then you will likely not be using the OpenBCI_GUI. But instead coding something with Brainflow or another digital signal processing framework. For example OpenViBE, MNE, etc.
I am using several sparkfun breakout boards as the additional sensors (MAX30105 for oximetry and temp, sparkfun Sound Detector - SEN-12642 (this is what I meant by sound) and sparkfun ambinet light sensor (VEML6030) for light). These will all be hooked up to the Arduino.
I also need to purchase some hardware to allow my Arduino to stream wirelessly. Currently it needs to be connected to a computer via a USB connector.
I have the OpenBCI streaming in real-time to matlab and I my own code to process the data. I have also been looking into other options such as brainflow and openvibe.
I also need to purchase some hardware to allow my Arduino to stream wirelessly. Currently it needs to be connected to a computer via a USB connector.
Some combined chips such as ESP32, contain both CPU and Bluetooth radio. One of the Bluetooth modes / protocols is called SPP, Serial Port Protocol -- and emulates on the receiving laptop, a usb serial port. Many small boards based on ESP32 exist, and they are inexpensive. Arduino framework available for these. So may be much faster / cheaper than trying to adapt your Sparkfun Redboard with some type of add on shield.
Comments
Sam, hi.
Cyton has three extra channels, besides the 8 or 16 'normal' channels. These extra channels are stored in the 'Aux' positions in the data stream. The Aux channel can be set to sample in either digital or analog mode. In analog mode the voltage range is 0V to 3.3V. See this example:
https://docs.openbci.com/docs/05ThirdParty/02-Pulse_Sensor/Pulse_Sensor_Landing
The GUI has a built in widget that can take the PPG data stream and convert it to a pulse rate.
https://docs.openbci.com/docs/06Software/01-OpenBCISoftware/GUIWidgets
https://github.com/OpenBCI/OpenBCI_GUI/blob/master/OpenBCI_GUI/W_PulseSensor.pde
Regards, William
Hi William
Thanks for your reply,
Do you think I would be able to add particle sensor ( https://www.sparkfun.com/products/14045?_ga=2.16289270.1947926216.1568703092-628748718.1555989600 ) to one of these extra channels?
Does the ganglion board also have extra channels?
Sam
Since Sparkfun has developed an Arduino library to access all the functions of this breakout board (using the Maxim 30105),
https://www.maximintegrated.com/en/products/interface/sensor-interface/MAX30105.html
I'd suggest your easiest route would be to use a separate Arduino board, connected via I2C to the breakout. That Arduino would then plug into usb on your laptop, as a usb serial port. Your serial port data stream could then contain any info or update rate you desire.
I'm not sure the PIC32 (Cyton) or Simblee (Ganglion) can properly drive I2C peripherals, since those processors have tight timing constrains to service the 250 Hz or 200 Hz data streams. Your best bet is a separate Arduino. As you might know, PPG or pulse info does not change that quickly, so does not actually need to be included in an Aux data stream along with the EEG.
Ganglion does not have Aux channels.
As far as the SpO2 (pulse oximeter) features, that requires careful calibration, so I'm not sure this is the correct breakout for pulseox. If you see the data sheet, the chip was targeted for smoke detection, not pulse application.
https://www.google.com/search?q=maxim+chip+for+pulse+oximeter
https://www.sparkfun.com/products/15219
Hi William,
Thanks for your help earlier this year.
I am now revisising my post.
I understand the Cyton board has three 'aux' channels that I could use for additional sensors however if use these channels for another sensor, it removes the accelerometer functionality.
My goal is to have EEG, accelerometer, oximetry, temperature, sound (microphone) and light (light sensor) streaming simultaneously and wirelessly (ideally in the same output file) to a computer for real-time processing.
It sounds like my best option may be to use a separate Arduino (I have a sparkfun redboard) for the oximetry, temperature, sound and light and the Cyton board for the EEG and accelerometer data. And to then get these two boards streaming simultaneously to the computer.
Would you agree?
Thanks,
Sam
Sam, hi.
Yes, this is easily done. The Cyton dongle appears as a usb serial port. Most Arduino boards will also appear as another usb serial port. Your program just needs to read that additional serial stream. Three of those value only change slowly: oximetry, temp, and light level. An Arduino collecting these values could output an ascii text line of data every second or a few times per second, such as: ox-value, temp-value, light-value.
I'm not sure what you refer to as 'sound'. If you are wanting to actually collect an audio microphone stream then your best bet is a simple usb audio interface 'adapter', with mic input jack.
William
If you are indeed doing real-time processing, then you will likely not be using the OpenBCI_GUI. But instead coding something with Brainflow or another digital signal processing framework. For example OpenViBE, MNE, etc.
https://brainflow.readthedocs.io/en/stable/
Hi William,
Thanks for your fast reponse.
I am using several sparkfun breakout boards as the additional sensors (MAX30105 for oximetry and temp, sparkfun Sound Detector - SEN-12642 (this is what I meant by sound) and sparkfun ambinet light sensor (VEML6030) for light). These will all be hooked up to the Arduino.
I also need to purchase some hardware to allow my Arduino to stream wirelessly. Currently it needs to be connected to a computer via a USB connector.
I have the OpenBCI streaming in real-time to matlab and I my own code to process the data. I have also been looking into other options such as brainflow and openvibe.
Thanks,
Sam
Some combined chips such as ESP32, contain both CPU and Bluetooth radio. One of the Bluetooth modes / protocols is called SPP, Serial Port Protocol -- and emulates on the receiving laptop, a usb serial port. Many small boards based on ESP32 exist, and they are inexpensive. Arduino framework available for these. So may be much faster / cheaper than trying to adapt your Sparkfun Redboard with some type of add on shield.