Управление Arduino с помощью нейроинтерфейса NeuroPlay
Введение
Биоусилители серии NeuroPlay — это носимые устройства, считывающие электроэнцефалограмму мозга (ЭЭГ).
ЭЭГ показывает электрическую активность нейронов под отведениями датчиков, контактирующих с кожей.
Для нейроинтерфейса (нейроуправления) используют различную мозговую активность.
Одними из наиболее видимых и устойчивых показателей являются ритмы мозга:
- Альфа-ритм возникает в затылке, свидетельствует о расслабленности
- Бета-ритм регистрируют во лбу, он возникает при когнитивной нагрузке
Ингредиенты
Аппаратные средства (железо):- Нейрогарнитура NeuroPlay-6C или NeuroPlay-8Cap
- Компьютер с Windows 10+ и Bluetooth 4+
- Плата Arduino (или совместимая) и USB-кабель
- Программа NeuroPlayPro
- Среда разработки Arduino IDE
Подготовка программного обеспечения
Скачайте последнюю версию NeuroPlayPro для Windows 10+.
На компьютере должна быть возможность использовать Bluetooth 4+
(встроенный или USB адаптер Bluetooth)
Подготовка устройства NeuroPlay-6C



- Разверните гарнитуру так, чтобы сам биоусилитель был в левой руке
- Расположите 3 лобных электрода по центру
- Приложите лобные электроды по центру лба
- Оберните правую часть повязки вокруг головы
- Оберните левую часть повязки и закрепите липучку
- Наденьте ушной электрод
Запуск регистрации ЭЭГ c устройства NeuroPlay
- Запустите программу NeuroPlayPro
- На странице «Устройство» начнётся поиск
- Нажмите на иконку найденного устройства NeuroPlay
- Добейтесь того, чтобы все электроды стали зелёными.
Если электрод красный — подвигайте его на голове так, чтобы обеспечить контакт с кожей.


Просмотр показателей, используемых для нейроинтерфейса
Перейдите на вкладки «Медитации» или «Концентрации».Эти вкладки показывают нормированный aльфа и бета ритмы, соответственно.
Они автоматически подстраиваются под каждого пользователя.
Каждый показатель всегда находится в пределах от 0 до 100%.
Нейроинтерфейс не действует моментально и зависит от ваших внутренних процессов.
Для тестирования «Медитации»:
- Откройте вкладку «Медитация»
- Займите удобное положение на стуле, чтобы избежать излишнего мышечного напряжения
- Постарайтесь расслабиться: расслабить лицо и шею, расфокусировать взгляд, устранить все лишние мысли, представьте себе лес, море или камин.
- Постарайтесь контролировать столбик по вашему желанию

Для тестирования «Концентрации»:
- Откройте вкладку «Концентрация»
- Займите удобное положение на стуле, чтобы избежать излишнего мышечного напряжения
- Постарайтесь сконцентрироваться:
- Начните считать в уме какой-нибудь пример, требующий напряжения (например, складывайте последовательно случайные двухзначные числа)
- Вспоминайте стихотворение или музыкальное произведение
- Сфокусируйте внимание на каком-нибудь предмете и анализируйте в уме его свойства
- Постарайтесь контролировать столбик по вашему желанию

Принципы управления платой Arduino по COM-порту
Каждое Arduino-подобное устройство представлено в операционной системе как COM-порт (серийный порт).
Каждый COM-порт имеет номер (например, «COM15») и параметры подключения (скорость передачи, парность, биты данных и стоповые биты).
Определить имя COM-порта можно в «Диспетчере устройств»
При составлении скетча для Arduino (микропрограммы, зашиваемой в микроконтроллер) необходимо знать параметры скорости перадачи (baud rate), парности (parity), количества бит данных (data bits) и стоповых битов (stop bits).
Обычно, при написании скетча, важно знать только скорость передачи.
Например, этот код (в Arduino IDE) даёт скорость равную 9600 бод, без парности, 8 битов данных, без стоповых битов:
Serial.begin(9600);
Программа NeuroPlayPro позволяет использовать COМ-порт для передачи данных.
На данный момент, есть два способа:
- (Простой) NeuroPlayPro отправляет (push) в COM-порт числовое значение Медитации или Концентрации
- (Более сложный) NeuroPlayPro принимает от COM-устройства текстовые команды и отвечает на них также текстом в формате JSON (см. NeuroPlay API)
Использование push-метода управления Arduino посредством NeuroPlayPro
- Откройте страницу «Настройки»
- Включите галочку «Расширенные настройки»
- Перейдите на вкладку «Обмен»
- Включите галочку «Обмен по COM-порту»
- Выберите порт и проверьте настройки подключения (скорость, парность, биты)
- Выберите «Режим обмена» — «Отправлять число» и требуемое «Отправляемое значение»
- В этом случае в СОМ-порт будет отправлять один байт (беззнаковый целочисленный), который надо обрабатывать на стороне Arduino


COM-порт может быть подключен исключительно к одному потоку обмену данных.
Если не получается прошить устройство через Arduino IDE — отключите галочку «Включить COM-порт» в программе NeuroPlayPro.
Если не получается подключить NeuroPlayPro к Arduino — проверьте не запущен ли «Serial monitor» в Arduino IDE.
Скетч для Arduino для использования push-метода
Открыть на GitHubЭтот скетч зажигает встроенный светодиод при значении «Медитации» больше 50% и выставляет положение сервомотора в пропорции значения «Медитации»
#include <Servo.h> const uint8_t LED_PIN = LED_BUILTIN;// Change SERVO_PIN and MIN/MAX to actual values const uint8_t SERVO_PIN = 6; const int SERVO_MIN_VALUE = 1000; const int SERVO_MAX_VALUE = 1800; Servo servo1; void setup() { Serial.begin(115200);// Enable LED pin pinMode(LED_PIN, OUTPUT);// Enable servo servo1.attach(SERVO_PIN); } void loop() { if (Serial.available() > 0) { int c = Serial.read();// The value is a number 0-100% in case of meditation/concentration or 0-8 in case of mental states // Considering that the value is meditation (see Value output) // The 'meditation' value int meditation = c; if (meditation < 0) meditation = 0; else if (meditation > 100) meditation = 100;// Activate the LED if meditation is above 50% digitalWrite(LED_BUILTIN, meditation > 50 ? HIGH : LOW); int pulse = SERVO_MIN_VALUE; if (meditation != 0) pulse += 100 * (SERVO_MAX_VALUE - SERVO_MIN_VALUE) / (meditation);// Activate the servo if (servo1.attached()) servo1.writeMicroseconds(pulse); } delay(10); }