Это статья из двух частей, и чтобы понять многое из того, о чем мы здесь говорим, прочтите эту статью.

Эта статья предназначена для людей, которые имеют базовые представления о программировании, особенно о языке Python. Если у вас его нет, эта статья все равно будет иметь смысл, но рекомендуется лучше понять проект. Если вы хотите получить базовые знания о python, я рекомендую этот быстрый и бесплатный курс, который поможет вам изучить python, если вы новичок.

Аппаратное обеспечение

Платы OpenBCI - это, по сути, Arduino из мира BCI, и они созданы в основном для специалистов по данным и разработчиков, которые хотят создавать с ними проекты.

Материалы

  • Доска OpenBCI Ganglion
  • Сухие электроды OpenBCI

Поскольку одолженная мной гарнитура OpenBCI мне не подошла, я сделал свою гарнитуру, используя старую повязку на голову. Если вы хотите узнать больше об аппаратном процессе и о том, как его воссоздать, прочтите эту статью.

Программное обеспечение

Brainflow - это библиотека, которая интегрируется с большинством плат BCI, и я использовал эту библиотеку. Он может получать, анализировать и анализировать данные от многих биосенсоров и работает до 7 языков, и я использовал язык Python.

Brainflow состоит из трех частей:

  • BoardShim - считывание и вывод данных с платы, а также подготовка платы к использованию.
  • DataFilter - выполняет обработку сигналов и помогает обрабатывать ваши данные и работать с ними.
  • MLModel - возможность использовать разные модели машинного обучения и рассчитывать производные показатели.

Примечания на стороне:

  • большая часть данных возвращается в виде 2D-массива Numpy
  • обратитесь к документации и API

Мой код

Чтобы увидеть мой полный код, перейдите в этот репозиторий GitHub.

Настройка доски

Плата имеет определенные параметры, указанные в этой ссылке. У каждой доски есть идентификатор доски, чтобы сообщить мозговому потоку, как с ней работать. Идентификатор Ganglion - 1, а необходимые параметры - это последовательный порт. Я также инициализировал некоторые переменные, которые нам понадобятся позже.

Мощность диапазона

Этот код использует get_band_power для получения мощности полосы каждого типа волны. Параметры включают диапазон частот, которые вы хотите использовать. Затем я составил словарь, в котором тип мозговой волны соотносился с состоянием.

Воспроизведение звуков

Этот код воспроизводит звук, который позволяет узнать, находитесь ли вы в глубокой медитации или вам нужно очистить свой разум. Это аудио нейробиоуправление, которое предоставляется вместе с программой. Установлен таймер, поэтому он не срабатывает каждые 2 секунды.

Проверка выполнения

Этот цикл if появляется в конце цикла while, который проверяет, продолжают ли они медитировать. Я использовал пакет keyboard, чтобы посмотреть, нажата ли клавиша пробела, и что это не разрывает цикл while.

Ярлыки и значения для графика

Распечатка суммы в каждом типе мозговых волн

Таймер

Основной цикл while запускается за 5 секунд, поскольку я использовал time.sleep (5), который останавливает программу на 5 секунд. Это было необходимо, так как программа сильно зависала до того, как я это сделал. Я добавил счетчик для подсчета общего времени и таймеры для того, сколько времени в каждом состоянии. В конце концов я преобразовал его из секунд в минуты.

Конечный процент

Я поместил все минуты в список и использовал цикл for, чтобы просмотреть значения и разделить их на общее время. Это дает нам процент того, сколько времени они находились в каждом штате. Затем я использовал matplotlib, чтобы нанести эти значения на гистограмму.

Печать количества минут в каждом состоянии

Остановка программы

После того, как мы распечатаем результаты, программа завершится, но данные все равно будут передаваться с платы. Эти последние строки завершают поток, и это конец кода.

Эта статья оказалась полезной? Не стесняйтесь сообщить мне, связавшись со мной в LinkedIn или написав мне по электронной почте. Хотите увидеть, чем я занимался? Зайдите на мой сайт.