Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Учебное пособие 2232

.pdf
Скачиваний:
28
Добавлен:
30.04.2022
Размер:
14.85 Mб
Скачать

Если плата Daisy отсутствует, подтверждение не отправляется, потому что плата уже находится в 8-канальном режиме. Если команда послана от WiFi Shield, то возвращается сообщение: “No daisy to remove”.

Если плата Daisy присутствует, то возвращается сообщение “daisy removed$$$”.

Для того чтобы включить 16-канальную систему, используется команда

“С”.

При выполнении данной команды возвращается сообщение:

Если плата Daisy уже прикреплена, то возвращается сообщение “16$$$”.

Если плата Daisy в настоящее время не присоединена и не может быть присоединена, то возвращается сообщение “no daisy to attach!8$$$”.

Если плата Daisy в настоящее время не присоединена, но может быть присоединена, выдается сообщение “daisy attached16$$$”.

При сбросе плата Cyton будет искать плату Daisy, и если она

присутствует, то по умолчанию будет использоваться 16 каналов.

2.9.11. Новые команды прошивки v2.0.0

Прошивка v2.0.0 была первой переработкой от “Push The World”, которая стабилизировала код ядра и добавила несколько ключевых новых функций для улучшения взаимодействия с пользователем. Начиная с версии встроенного программного обеспечения v2.0.0, был реализован набор команд для изменения системы радиосвязи и улучшения программирования через радиоэфир основной платы Cyton. Чтобы использовать команды, необходимо придерживаться формы “ключ-код-(полезная нагрузка)”, где “ключ” имеет формат “0xF0”, “код” определен ниже, а “полезная нагрузкаявляется необязательной и зависит от “кода. Например, чтобы получить статус системы, необходимо отправить “0xF0”, а затем отправить “0x07”.

Если микросхемы RFDuino не могут общаться друг с другом, то будет выдано сообщение “Failure: Communications timeout - Device failed to poll host”,

это означает, что Устройство RFDuino (на плате Cyton) прекратило опрос хоста

RFDuino на плате Dongle.

2.9.12. Команды отсчета времени

Команда “<” позволяет начать отметку времени и выполнить повторную синхронизацию. Когда передающий радиомодуль посылает “<”, принимающая радиостанция ответит “,”. Поскольку хост не может отправлять пакеты на устройство “ad hoc”, может быть полезно узнать, когда хост действительно смог отправить команду. Если плата не транслирует, то необходимо ожидать ответа “Time stamp ON$$$”. Если плата находится в потоковом режиме, то ответ будет в потоке данных. Ответ будет получен, когда драйвер получит пакет данных с другим стоп-байтом. Если плата находится в режиме потоковой

50

передачи, то возвращаемого сообщения нет. Если плата находится не в режиме потоковой передачи, то будет возвращено сообщение “Time stamp ON$$$”.

Команда “>” прекращает отсчет времени. Если плата не транслирует, то надо ожидать ответа “Time stamp OFF$$$”. Если плата находится в режиме потоковой передачи, то ответ может быть получен в другом стоп-байте. Если плата не транслирует, то необходимо ожидать ответа “Time stamp OFF$$$”. Если плата находится в потоковом режиме, то ответ будет в потоке данных и отдельного подтверждения не будет.

2.9.13. Получение номера радиоканала

После выполнения команды “0x00” возвращается либо успех, либо неудача. Если случится неудача, то плата выдает номер канала, хоста и сообщение об ошибке. В случае успеха будут сообщены номера каналов, хоста, устройства и сообщение об успешном завершении. Номера каналов могут быть только 1-25. Байт перед “EOT” ($$$) будет содержать значение номера канала в “HEX” шестнадцатеричном формате.

Если будет отправлено 0xF00x00, то в ответ будет сообщение о системе и номере канала.

2.9.14. Установка номера канала радиосистемы

Команда “0x01” используется для установки номера канала. Если радиосистема работает после запроса “0xF007” и получен ответ об успешном завершении, это означает, что устройство и хост имеют один и тот же номер канала.

Команда возвращает либо успех, либо неудачу. В случае неудачи будет выведено сообщение об ошибке и просьба проверить номер канала. В случае успеха будут выведены номера каналов как хоста, так и устройства, а также сообщение об успехе. Номера каналов могут быть размером только 1-25 байт (в шестнадцатеричном виде) перед символами EOT ($$$). Например, чтобы настроить систему на канал 7, пользователь должен отправить: 0xF00x010x07.

2.9.15. Повторное определение радиоканала хоста

Команда “0x02” используется для запроса повторного определения радиоканала хоста. Радиосистема не работает в том случае, если был отправлен запрос "0xF007” и получен ответ «Сбой», означающий, что устройство и хост не находятся на одном и том же номере канала. Это может происходить, например, если к плате “Cyton” не подключено питание. Если плата Cyton включена, то необходимо циклически перебирать хост через все возможные 25 каналов, пытаясь перенастроить хост и устройство по одному и тому же радиоканалу.

51

Данная команда возвращает либо успех, либо неудачу. В случае неудачи будет выведено сообщение об ошибке и просьба проверить номер канала. В случае успеха будет выведено «Host Override», а затем номер канала. Номера каналов могут быть размером только 1-25байт (в шестнадцатеричном виде) перед символами EOT ($$$).

Например, чтобы настроить хост на канал 1, пользователь должен отправить: 0xF00x020x01.

2.9.16. Определение времени опроса радиомодуля

Команда “0x03“ служит для определения времени опроса радиомодуля. Время опроса является критическим фактором для загрузки программного обеспечения по радиоканалу. Существует прямая зависимость между временем опроса, производительностью процессора и успешной загрузкой программного обеспечения контроллером Pic32 по беспроводной сети. Если постоянно происходят сбои, надо проверить время опроса и при необходимости увеличить его. Если используется высокопроизводительный компьютер, то можно попробовать уменьшить время опроса, чтобы ускорить загрузку по беспроводной сети. Команда возвращает успех, за которым следует значение времени опроса в шестнадцатеричном виде (HEX).

Например, чтобы запросить значение времени опроса пользователь должен отправить: 0xF0 0x03.

2.9.17. Установка времени опроса радиомодуля

Команда “0x04“ служит для установки времени опроса радиомодуля. Время опроса является критическим фактором для загрузки программы по радиоканалу. Существует прямая зависимость между временем опроса, производительностью процессора и успешной загрузкой программного обеспечения микроконтроллера Pic32 по беспроводной сети. Если постоянно происходят сбои подключения, то следует проверить время опроса и при необходимости увеличить его. Если компьютер имеет высокую производительность, то можно попробовать уменьшить время опроса, чтобы ускорить загрузку по беспроводной сети.

Команда возвращает либо успех, либо неудачу. В случае неудачи будет отправлено сообщение «Communications Timeout». В случае успеха будет отправлено сообщение об этом, за которым следует время опроса в формате HEX (шестнадцатеричный формат). Все отправляемые значения должны быть в диапазоне от 0 до 255 в формате HEX (шестнадцатеричный формат). По умолчанию время опроса равно 80 мс.

Например, если отправить 0xF00x040x40, то это сообщение установит время опроса величиной 64 мс.

52

2.9.18. Установка значения скорости передачи по умолчанию для радиомодуля хоста

Команда 0x05” сообщает хосту RFDuino о том, что надо отправлять последовательные данные по протоколу UART со скоростью 115200 на виртуальный последовательный порт FTDI. При успешном выполнении в формате ASCII команда устанавливает скорость передачи 115200 бод.

Например, если отправить команду 0xF0 0x05, то будет установлена скорость передачи 115200 бод.

2.9.19. Установка высокой скорости передачи для радиомодуля хоста

Команда 0x06” сообщает хосту RFDuino о том, что надо отправить последовательные данные по протоколу UART со скоростью 230400 бод. При успешном выполнении в формате ASCII команда устанавливает скорость передачи 230400 бод.

Например, если отправить команду 0xF00x06, то будет установлена скорость передачи 230400 бод.

2.9.20. Установка гиперскорости передачи для радиомодуля хоста

Команда “0x0A” сообщает хосту RFDuino о том, что надо отправить последовательные данные по протоколу UART на виртуальный последовательный порт FTDI со скоростью 921600. Но следует обратить внимание, что это не помогает увеличить частоту дискретизации системы, но помогает предотвратить потерю пакетов, позволяя компьютеру быстрее извлекать данные из последовательного порта, поскольку данные поступают намного быстрее в виртуальный последовательный порт FTDI. При успешном выполнении в формате ASCII команда устанавливает скорость передачи 921600 бод.

Например, если отправить команду 0xF00x0A,то будет установлена скорость передачи 921600 бод.

2.9.21. Состояние радиосистемы

Команда “0x07” позволяет проверить состояние соединения RFDuino на плате с RFDuino, подключенного к компьютеру. Команда возвращает сообщения об успехе или неудаче. В случае сбоя будет отправлено сообщение «Failure: System is down$$$». В случае успеха будет отправлено сообщение «Success: System is $$$». Т.е. для того чтобы получить статус, необходимо отправить команду 0xF00x07.

53

2.9.22. Прошивка v3.0.0, новые команды

Прошивка v3.0.0 поддерживает все версии v1.0.0 и v2.0.0 и сделана для расширения системы OpenBCI для обеспечения переменной частоты дискретизации.

Для установки частоты дискретизации используется команда “~”. Она работает аналогично командам настройки канала, однако после нее заключительного символа нет. Выключение питания платы OpenBCI приведет к тому, что частота дискретизации вернется к значению по умолчанию 250 Гц. Плата Cyton с USB-ключом не может и не будет передавать данные со скоростью более 250 пакетов в секунду. Для увеличения скорости необходимо подключить плату WiFi Shield, и тогда можно будет получить скорость более 250 пакетов в секунду. В данной версии прошивки все еще можно записывать данные на SD-карту, однако микропрограмма больше не будет отправлять данные ЭЭГ по радиомодулям Bluetooth.

Следующие команды служат для установки частоты дискретизации:

0 = 16000 Гц;

1 = 8000 Гц;

2 = 4000 Гц;

3 = 2000 Гц;

4 = 1000 Гц;

5 = 500 Гц;

6 = 250 Гц.

Для того чтобы узнать, какая установлена частота дискретизации, служит команда “~ =” Например, сначала пользователь отправляет команду “~~” и плата возвращает ответ “Sample rate is 250Hz$$$”. Далее пользователь отправляет “~ 5” и плата возвратит следующий ответ “Sample rate set to 500Hz$$$”. Если в течение 1 секунды получены не все команды, то будет ответ “Timeout processing multi byte message - please send all commands at once as of v2$$$”.

2.9.23. Режимы платы

Команда “/” используется для переключения режимов платы. Эта команда работает аналогично частоте дискретизации. Выключение питания платы OpenBCI приведет к тому, что режим платы вернется в режим по умолчанию с включенным акселерометром и с выдачей байтов с акселерометра на выход.

Для переключения режимов работы платы используются следующие команды:

0 = режим по умолчанию - отправляет данные акселерометра в байтах на выход;

54

1 = режим отладки - отправляет последовательный вывод через внешний последовательный порт, что полезно для отладки;

2 = аналоговый режим - считывание с аналоговых выводов A5 (D11), A6 (D12) и, если экран Wi-Fi отсутствует, то также A7 (D13);

3 = цифровой режим - считывание с аналоговых контактов D11, D12 и D17. Если нет Wi-Fi, то также D13 и D18;

4 = режим маркера - отключает ускорение и вводит маркеры в поток,

отправляя _X_ , где X любой символ, добавляемый в первый байт в выходных данных.

Для того чтобы узнать текущий режим платы, используется команда “/ =”. Например, если сначала пользователь отправляет команду “//”, то будет возвращено сообщение “Board mode is default$$$”. Если затем пользователь отправляет команду “/ 2”, то будет возвращен ответ “Board mode set to analog$$$”. Если в течение 1 секунды получены не все команды, то будет выдано сообщение “Timeout processing multi byte message - please send all commands at once as of v2$$$”.

2.9.24. Команды для использования платы Wifi Shield

Команда “{“ служит для начала использования прикрепленной платы Wifi Shield. Команда при успешном выполнении возвращает ответ “Success: Wifi attached$$$” и при не удаче “Failure: Wifi not attached$$$”. Сбой происходит,

если на плату Wi-Fi не подается питание, или плата Wi-Fi работает неправильно. Для устранения неполадки достаточно выключить и снова включить систему.

Команда “}“ служит для прекращения работы с платой Wifi Shield. Перед снятием платы Wi-Fi необходимо отправить данную команду, и будет получен ответ “Success: Wifi removed$$$”. Если при снятии произошел сбой, то ответ будет “Failure: Wifi not removed$$$”. Ошибка обычно происходит, когда уже нет подключенной платы Wi-Fi для её удаления.

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

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

2.9.25. Команда для получения версии прошивки

Команда “V” используется для получения версии прошивки. После выполнения команды возвращается ответ в виде: “v3.1.1$$$”.

55

2.9.26. Неиспользуемые символы в формате ASCII

На данный момент неиспользуемые (и доступные пользователю) в системе символы: 9 () _ o O fghkl 'n NM, (пробел).

2.10. Особенности программирования платы Cyton. Версии прошивки 2.xx и 3.xx

Далее будет описан процесс программирования платы Cyton с прошивками версий 2.xx, 3.xx и выше. Прошивка для использования перепрошивки платы по радиоканалу (также прошивка для FTDI устройства и платы Wi-Fi) не обновлялась до осени 2016 года Информацию о загрузке оригинальной прошивки OpenBCI Cyton (1.xx) можно увидеть далее.

Для прошивки платы понадобится следующее:

компьютер с установленным ПО Arduino v1.8.0 (https://www.arduino.cc/en/Main/Software) или новее;

оpenBCI Dongle, подключенный к USB-порту;

плата Cyton с питанием от батареи;

программное обеспечение для прошивки платы OpenBCI Cyton;

прошивка платы OpenBCI Cyton;

ПО OpenBCI WiFi Master Firmware.

При установке программы Arduino 1.8, если установщик дает указание удалить установленную версию 1.5.8, то её желательно не удалять, а переместить всю папку Arduino, содержащую версию 1.5.8, из папки “Program Files” в другую папку. Другую папку желательно назвать как “Arduino_1.5.8”. Далее необходимо открыть раздел Windows “Установка и удаление программ” и удалить приложение Arduino. Появится всплывающее окно, указывающее на то, что файлы не существуют, и спрашивающее, хотите ли вы удалить программу из списка файлов? Необходимо выбрать ответ «Да». Затем надо установить версию Arduino 1.8.0 в обычном режиме. Далее необходимо в “Program Files” найти папку Arduino и преименовать её в “Arduino_1.8.0”. Затем необходимо перенести сохраненную папку

“Arduino_1.5.8” обратно в папку “Program Files” с названием папки “Arduino”.

2.10.1. Установка прошивки из Arduino Library Manager

Для начала необходимо изучить официальный путеводитель по Arduino (https://www.arduino.cc/en/Guide/Libraries#toc3).

Затем надо открыть “диспетчер библиотек”, найти “OpenBCI” и установить последние версии для “OpenBCI_32bit_Library”, “OpenBCI_32bit_SD” и “OpenBCI_Wifi_Master”. Далее следует перейти к разделу установки “ChipKit Core”.

56

2.10.2. Ручная установка прошивки платы Cyton

Сначала необходимо загрузить последнюю версию

“OpenBCI_32bit_Library” (https://www.arduinolibraries.info/libraries/openbci_32bit_library), это самый верхний ZIP-файл. Далее надо разархивировать папку и изменить её имя на “OpenBCI_32bit_Library”. Затем переместить

”OpenBCI_32bit_Library” в директорию: на ОС “Mac” в “/Documents/Arduino/libraries”, на ОС Windows в “C:\Users\username\Documents\Arduino\libraries”.

Если при выполнении этих операций возникли проблемы, то можно обратиться к официальному руководству “Arduino” (https://www.arduino.cc/en/Guide/Libraries#toc5) для ручной установки.

2.10.3.Ручная установка библиотеки для платы Cyton

споддержкой SD-карты

Сначала необходимо загрузить последнюю версию библиотеки

“OpenBCI_32bit_SD” (https://www.arduinolibraries.info/libraries/openbci_32bit_sd), это самый верхний ZIP-файл. Затем надо разархивировать папку и изменить её имя на “OpenBCI_32bit_SD”. Далее надо переместить папку

“OpenBCI_32bit_SD” в директорию: на ОС “Mac” в “/Documents/Arduino/libraries”, на ОС Windows в “C:\Users\username\Documents\Arduino\libraries”.

Если при выполнении этих операций возникли проблемы, то можно обратиться к официальному руководству “Arduino” (https://www.arduino.cc/en/Guide/Libraries#toc5) для ручной установки.

2.10.4. Ручная установка прошивки WiFi Master

Сначала необходимо загрузить последнюю версию библиотеки “WiFi Master Library” (https://www.arduinolibraries.info/libraries/open-bci_wifi_master),

это самый верхний ZIP-файл. Далее надо разархивировать папку и изменить её

имя на “OpenBCI_Wifi_Master”. Затем надо

переместить

папку

“OpenBCI_Wifi_Master”

в

директорию:

на

ОС

“Mac”

в

“/Documents/Arduino/libraries”,

на

ОС

 

 

Windows

в

“C:\Users\username\Documents\Arduino\libraries”.

Если при выполнении этих операций возникли проблемы, то можно обратиться к официальному руководству “Arduino” (https://www.arduino.cc/en/Guide/Libraries#toc5) для ручной установки.

57

2.10.5. Клонирование репозитория из ресурса Github

Разработчики, желающие внести свой вклад или написать собственную прошивку, могут клонировать хранилища прошивок прямо в папку libraries на своем ПК: на ОС “Mac” в “/Documents/Arduino/libraries”, на ОС Windows в “C:\Users\username\Documents\Arduino\libraries”.

Библиотека “OpenBCI_32bit_Library” находится по следующему адресу: https://github.com/OpenBCI/OpenBCI_Cyton_Library.

Библиотека “OpenBCI_32bit_SD” находится по следующему адресу: https://github.com/OpenBCI/OpenBCI_32bit_SD.

Библиотека “OpenBCI_Wifi_Master_Library” находится по следующему адресу: https://github.com/OpenBCI/OpenBCI_Wifi_Master_Library.

2.10.6. Установка прошивки ChipKIT Core

Для того чтобы правильно загрузить код в микроконтроллер PIC32 с “Arduino”, необходимо добавить файлы платы “chipKIT-core” в “Arduino IDE”

на компьютере. Инструкции по автоматической установке chipKIT через URL из Arduino находятся по адресу: http://chipkit.net/wiki/index.php?title=ChipKIT_core#1.29_Auto_install_via_URL_fr om_within_Arduino_IDE_.28latest_version_chipKIT-core_v1.3.1.29.

Последнее встроенное ПО ChipKIT может привести к неправильной перепрошивке встроенного ПО устройства. Это будет выражено в отсутствии потока данных с платы или отсутствии идентификатора устройства и идентификатора акселерометра после программного сброса платы. В таком случае необходимо выбрать версию прошивки 1.3.1.

2.10.7. Выбор «OpenBCI 32» в качестве платы для прошивки

Если при выполнении предыдущих шагов все было сделано правильно, то из выпадающего меню “ Tools >> Board >>” можно выбрать плату “OpenBCI 32” (рис. 2.27).

2.10.8. Выбор DefaultBoard.ino из примеров

Далее в “Arduino IDE” необходимо зайти в меню “File-->Examples-- >OpenBCI_32bit_Library-->DefaultBoard” и запустить прошивку платы Cyton.

Необходимо загрузить только эскиз “DefaultBoard”.

2.10.9. Предварительная загрузка аппаратных настроек

Далее следует убедиться, что ползунковый переключатель на плате “OpenBCI Dongle” переключен на контакт GPIO6. Если преключатель на

58

другой стороне, то программа попытается запрограммировать RFduino модуль, находящийся на плате “OpenBCI Dongle”.

Рис. 2.27. Выбор платы для прошивки

2.10.10. Подключение ключа и выбор последовательного порта

Затем необходимо подключить плату “OpenBCI Dongle” и выключить плату Cyton. Далее надо выбрать правильный последовательный порт для платы “OpenBCI Dongle” (рис. 2.28). На “Mac OS” это будет называться “/dev/tty.usbserial-DN00nnnn”, где nnnn - это комбинация цифр и

59