Материал: Аппаратура для электроэнцефалографических исследований. Журавлев Д.В

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

4.6.8.4. 19-битные данные со знаком

Сжатые значения регистрируемых данных ЭЭГ передаются в виде 19разрядного целого числа со знаком, что немного необычно. Но этот числовой формат используется потому, что это родной формат, используемый АЦП, который используется на плате Ganglion. Чтобы преобразовать этот необычный числовой формат в более стандартное 32-разрядное целое число со знаком, можно воспользоваться примером кода NodeJS (он же JavaScript):

/**

*Converts a special ganglion 19 bit compressed number

*The compressions uses the LSB, bit 1, as the signed bit, instead of using

*the MSB. Therefore you must not look to the MSB for a sign extension, one

*must look to the LSB, and the same rules applies, if it's a 1, then it's a

*negative and if it's 0 then it's a positive number.

*@param threeByteBuffer {Buffer}

*A 3-byte buffer with only 19 bits of actual data.

*@return {number} A signed integer.

*/

function convert19bitAsInt32 (threeByteBuffer) { let prefix = 0;

if (threeByteBuffer[2] & 0x01 > 0) { // console.log('\t\tNegative number') prefix = 0b1111111111111;

}

return (prefix << 19) | (threeByteBuffer[0] << 16) | (threeByteBuffer[1] << 8) | threeByteBuffer[2];

}

4.6.8.5. Интерпретация данных ЭЭГ

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

Для коэффициента масштабирования это множитель, который используется для преобразования значений ЭЭГ из «счетчиков» (число формата int32, которое вы анализируется из двоичного потока) в единицы измерения, такие как «вольт». Коэффициент масштабирования установлен и встроен в аппаратное обеспечение, поэтому можно использовать коэффициент масштабирования:

Scale Factor (Volts/count) = 1.2 Volts * 8388607.0 * 1.5 * 51.0;

Это уравнение взято из таблицы в файле описания АЦП MCP3912. Этот масштабирующий коэффициент также был подтвержден экспериментально с использованием известных калибровочных сигналов.

105

Данные акселерометра также должны быть масштабированы, прежде чем их можно будет правильно интерпретировать. Уравнение, используемое для масштабирования данных акселерометра, выглядит следующим образом (принимаются данные 4G, то есть 2 мг на одну цифру):

Accelerometer Scale Factor = 0.032;

4.7. SDK для платы Ganglion

Платы OpenBCI обмениваются данными с помощью протокола команд байтовой строки (в основном ASCII). Далее описывается использование команд для платы OpenBCI Ganglion. Кроме того, будут описаны команды, необходимые для изменения системы радиосвязи. Во-первых, необходимо выполнить сброс и узнать версию прошивки платы Ganglion.

4.7.1. Обзор протокола команд Ganglion

Плата Ganglion оснащена мощным микроконтроллером на базе микросборки Simblee. Радиоканал Simblee использует стек Nordic Gazelle и библиотеку вместе со стеком BLE. Микроконтроллер программируется микропрограммой, которая взаимодействует между MCP (аналоговый интерфейс), LIS3DH (акселерометр) и микро SD (если она установлена). Пользователь, или приложение, управляет платой, отправляя команды через беспроводное последовательное соединение.

При запуске плата OpenBCI Ganglion отправляет по радио следующий текст:

OpenBCI Ganglion v2.0.0

ID LIS2DH: 0x33 MCP3912 CONFIG_1: 0xXX можно использовать @, #, $

для включения каналов. Команды:

'b' - начало передачи потока данных;

's' - остановка передачи потока данных;

1, 2, 3, 4 - для выключения каналов;

'?' - распечатать все регистры;

'v' - инициализация платы;

'[' ']' - включение / отключение синтетической прямоугольной волны;

'z' 'Z' - запуск / остановка теста импеданса;

'n', 'N' - включение / отключение акселерометра.

106

4.7.2. Набор команд

Выключение каналов:

1 2 3 4 - эти символы ASCII отключают соответствующие каналы [1-4]. Канал будет считывать в режиме streamData 0,00, когда он выключен. Эти команды работают в режиме StreamData и без этого режима.

Включение каналов:

! @ # $ - эти символы ASCII включают соответствующие каналы [1-4]. Канал будет читать выходные значения АЦП в режиме streamData. Эти команды работают в режиме StreamData и вне его.

Включение синтеза прямоугольного сигнала:

[ - этот символ включает создание генерируемого прямоугольного сигнала.

Выключение синтеза прямоугольного сигнала:

] - выключение генерации ложного прямоугольного сигнала. Измерение входного импеданса:

z - запуск тестирования импеданса и отправка обратно пакетов с данными измеренного импеданса;

Z - остановка тестирования входного импеданса. Включение акселерометра:

n - запуск акселерометра, что влечет за собой переход к 18-разрядному дельта-сжатию данных в канале;

N - остановка акселерометра, что влечет за собой возвращение к 19разрядному дельта-сжатию данных в канале.

Команды для SD-карты:

ASFGHJKL команды для того, чтобы начать запись данных SD-карты в течение указанного времени:

A = 5 мин;

S = 15 мин;

F = 30 мин;

G= 1 час;

H= 2 часа;

J= 4 часа;

K= 12 часов;

L= 24 часа;

а = около 14 секунд для тестирования;

j - остановка записи данных и закрытие файла на SD-карте. Команды потоковой передачи данных:

b - начало потоковой передачи данных; s - остановка потоковой передачи данных. Другие команды:

107

? - запрос настроек регистра. Чтение и сообщение всех настроек регистров для MCP и LIS3DH. Получение после недолгого ожидания подробного последовательного вывода данных о регистрах с платы OpenBCI;

v- программный сброс для периферийных устройств платы.

4.7.3. Новые команды для прошивок v2.xx

Микропрограмма версии 2.0.0 поддерживает все версии 1.0.0 и расширяет систему OpenBCI Ganglion для обеспечения изменяемой частоты

дискретизации.

 

 

 

 

Частота дискретизации:

 

 

 

~

-

команда

изменения

частоты

дискретизации.

Она работает аналогично командам настройки каналов, однако завершающего символа нет. Выключение питания платы OpenBCI Ganglion приведет к тому, что частота дискретизации вернется к значению по умолчанию 200 Гц.

Плата Ganglion по каналу BLE не может и не будет передавать данные со скоростью более 200 SPS (пактов в секунду (частота дискретизации 200 Гц)). Чтобы увеличить скорость передачи более 200 SPS необходимо подключить плату WiFi Shield.

Команды: 0 = 25600 Гц 1 = 12800 Гц 2 = 6400 Гц 3 = 3200 Гц 4 = 1600 Гц 5 = 800 Гц 6 = 400 Гц 7 = 200 Гц

~ = получение текущей частоты дискретизации.

Далее приведем пример использования команд изменения частоты дискретизации. Сначала пользователь отправляет “~” – возвращается “Sample rate is 200Hz”. Затем пользователь отправляет “~ 5” – возвращается “Sample rate set to 800Hz$$$”.

Команды работы с Wifi Shield:

После прикрепления платы Wifi Shield к плате Ganglion будет передан ответ “ Success: Wifi attached$$$” при успешном соединении или “Failure: Wifi not attached$$$” при не удачном соединении. Сбой происходит, когда на Wifi Shield не подается питание или Wifi Shield работает не правильно. Необходимо попробовать выключить и снова включить систему для устранения сбоя.

После снятия прикрепленной платы Wifi Shield будет передан ответ

“Success: Wifi removed$$$” при успешном отключении и “Failure: Wifi not removed$$$” при неудаче. Ошибка происходит, когда Wifi Shield уже отключен.

108

Команда “:” позволяет получить статус Wi-Fi Shield. Ответ будет либо подключен, либо не подключен. При успешно подключенном Wi-Fi Shield будет отправлен ответ “Wifi present$$$”. Если нет платы Wi-Fi Shield, то ответ будет “Wifi not present, send { to attach the shield$$$”.

Команда “;” выполняет мягкий сброс Wi-Fi Shield. Будет сделана мягкая перезагрузка только Wi-Fi Shield.

Неиспользуемые символы ASCII - это неиспользуемые (и доступные пользователю) символы в платформе OpenBCI Ganglion: a AB c C d D e E f F g G h H i I j J K K L L M M O O P P Q Q R RS T T U UV W W X X Y Y `5 6 7 8 9 0% ^ & * () - _ {} []; : '",. / \ | (пробел).

4.8. Программирование платы Ganglion

Далее будет описано, как обновить прошивку платы Ganglion. Загрузка последней версии программы прошивки и программирование через радиоканал (OTA) делает обновление платы Ganglion быстрым с помощью любого мобильного устройства. Можно также самостоятельно скомпилировать код в

Arduino Studio.

Также ниже будет описано, как программировать плату Ganglion с использованием аппаратного обеспечения.

4.8.1. Скачивание последней версии прошивки

Для начала необходимо загрузить последнюю версию прошивки платы v2.0.0 (https://github.com/OpenBCI/OpenBCI_Ganglion_Library/releases/latest).

Также можно прочитать заметки о выпуске и многое другое на Github или перейти ниже по разделам, чтобы настроить мобильное устройство для продолжения программирования OTA.

4.8.2. Сборка из источника данных

Радиомодуль Simblee (в настоящее время снят с производства), который находится в самом сердце платы Ganglion, предлагает возможность перепрограммирования Over The Air OTA методом. Этот метод позволяет сделать программирование простым, следуя шагам:

1.Создание новой прошивки Ganglion или изменение существующего кода

вArduino IDE.

2.Создание скомпилированного HEX-файла в Arduino IDE.

3.Сжатие этого файла в ZIP с некоторыми другими важными файлами.

4.Перенесение файла ZIP на смарт-телефон или планшет.

5.Подключение смарт-телефона или планшета к плате Ganglion.

6.Загрузка нового кода через Over The Air (по радиоканалу).

109

Источник: https://studfile.net/preview/16566241/