用于控制openbci设备的库

pyOpenBC的Python项目详细描述


openbci python

为所有openbci生物传感器提供稳定的python驱动程序

使用这个repo为使用python开发提供了一个构建块。python库的目标是为所有openbci生物传感器提供稳定的python驱动程序

  • 允许python用户安装一个模块并使用他们选择的任何板
  • 提供使用python将数据传输到其他应用程序(如lab streaming layer)的示例。
  • 在提取和转换原始二进制字节流时执行繁重的工作
  • 为初学者使用python处理openbci数据提供了基础

待办事项

  • 添加神经节辅助数据

要求

  • python 2.7或3.4+
  • 目前,cyton可以在windows、linux和macos上运行。
  • 神经节只能在Linux上工作(支持蓝牙的Linux虚拟机也可以工作)。
  • 众所周知,WiFi屏蔽在不同的计算机配置中存在可靠性问题。有效地使用它需要高级的技术技能和编程知识。请注意,此处提供的代码尚未经过所有平台的测试。

安装

首先,确保您有必要的依赖关系。

pipinstallnumpypyserialbitstringxmltodictrequests

Linux用户可能还需要bluepy

然后您可以使用pip安装openbci模块。

pipinstall-ihttps://test.pypi.org/simple/pyOpenBCI

安装后,请尝试运行提供的示例以确保可以连接到OpenBCI板。

重要注意事项

目前神经节板只能用于linux操作系统。众所周知,WiFi屏蔽在不同的计算机配置中存在可靠性问题。有效地使用它需要高级的技术技能和编程知识。请注意,此处提供的代码尚未经过所有平台的测试。

入门

首先,您需要使用以下命令之一初始化电路板:

对于cyton板:

# For Windows replace '*' with the port numberboard=OpenBCICyton(port='COM*')# For MacOS and Linux replace '*' with the port numberboard=OpenBCICyton(port='/dev/ttyUSB*')

要查找连接到的COM端口,可以使用OpenBCI图形用户界面。否则,您可以将端口号保留为none,函数find_port()将运行并连接到它找到的第一个cyton加密狗。

对于cyton+雏菊:

# For Windows replace '*' with the port numberboard=OpenBCICyton(port='COM*',daisy=True)# For MacOS and Linux replace '*' with the port numberboard=OpenBCICyton(port='/dev/ttyUSB*',daisy=True)

要查找连接到的COM端口,可以使用OpenBCI图形用户界面。否则,您可以将端口号保留为none,函数find_port()将运行并连接到它找到的第一个cyton加密狗。

对于神经节:

# For Linux replace '*' with the mac address.board=OpenBCIGanglion(mac='*')

如果你需要找到神经节的mac地址,你可以使用类似于nrf connect找到神经节。否则,您可以将mac地址保留为none,函数find_mac()将运行(注意:您需要使用sudo运行脚本,此函数才能运行)。

WiFi屏蔽:

board=OpenBCIWifi(shield_name='OpenBCI-2254',sample_rate=200)

发送命令

一旦你初始化了电路板,你就可以使用openbci sdks上的命令了(神经节cytonWifi屏蔽)使用Python向板发送命令(确保命令是字符串)。

# Write commands to the boardboard.write_command(command)

这里有一张最常见的表格:

<表><广告>< T/>神经节软件包 cyton软件开发工具包 cyton&daisy sdk(附加命令)wifi-shield sdk(附加命令)< /广告><正文>关闭频道1 2 3 41 2 3 4 5 6 7 8Q w e r t y u i打开频道< TD >!@#$%^&;*Q w e r t y u i连接到内部接地 启用合成方波 [ [禁用合成方波< < > >连接到直流信号 P将频道设置为默认值 d开始数据流 b b停止数据流 s<td> s<td>软复位 V V;启用加速计 n禁用加速计 n

初始化流

要启动流,可以将以下命令与回调函数一起使用。您可以在examples文件夹中查看一些预先编写的回调函数。

# Start streamboard.start_stream(callback)

start_stream函数的输出是回调函数上的openbcisample。openbcisample对象具有以下属性:

  • packet_id=输入数据包的ID。
  • channels_data=每个通道的原始脑电数据。4个用于神经节,8个用于细胞素,16个用于细胞素+雏菊。
  • 辅助数据=加速计数据。

由于通道数据和辅助数据是电路板读取的原始计数数据,我们需要将数据乘以比例因子。每个电路板都有一个特定的比例因子:

对于cyton和cyton+雏菊板:

将每个数乘以uvolts以将信道数据转换为uvolts。

uVolts_per_count=(4500000)/24/(2**23-1)#uV/count

乘以每单位加速数,将辅助数据转换为g。

pipinstallnumpypyserialbitstringxmltodictrequests
0

用于神经节板

乘以伏特/u计数,将信道数据转换为伏特。

pipinstallnumpypyserialbitstringxmltodictrequests
1

乘以每单位加速数,将辅助数据转换为g。

pipinstallnumpypyserialbitstringxmltodictrequests
2

用于WiFi屏蔽

WiFi屏蔽已经以伏特为单位输出数据,以G为单位输出AUX数据。

示例(打印原始数据)

要测试此示例,请使用py examples\print_raw_example.pypython examples\print_raw_example.py

pipinstallnumpypyserialbitstringxmltodictrequests
3

示例(简单LSL拖缆)

要运行此示例,请使用py examples\lsl_example.pypython examples\lsl_example.py

pipinstallnumpypyserialbitstringxmltodictrequests
4

我们是谁?

openbci python存储库的创始人是jermey frey。python驱动程序是最流行的存储库之一,贡献者最多!

这些回购协议的贡献者主要是使用python进行数据采集和分析的人。

参与其中

如果您认为您可以在上面列出的任何领域提供帮助(我们打赌您可以),或者在我们还没有想到的任何领域提供帮助(在这里我们可以确定您可以),那么请查看我们的贡献者指南和我们的指南。ref="roadmap.md" rel="nofollow">路线图

请注意,对我们非常重要的是,我们要为每个想参与的人保持一个积极和支持的环境。当您加入我们时,我们要求您在所有在线和离线互动中遵守我们的行为准则。

联系我们

如果您想报告问题或建议增强功能,我们希望您在Github存储库中打开一个问题,因为这样我们就可以直接解决它。但您也可以通过电子邮件(Gmail.com上的PushtheWorldLLC)或在Twitter上联系[AJ][Link_AJ_Keller]

了解更多信息

您可能会感兴趣:

当然,您还想知道我们的:

词汇表

openbci板通常被称为生物传感器。生物传感器将生物数据转换成数字数据。

神经节有4个通道,这意味着神经节可以同时读取4个电压读数。

cyton有8个通道,而带有daisy的cyton则有16个通道。频道。

一般来说,细胞素的记录质量高,噪音小。噪音不是信号。

谢谢

太感谢你了(丹克·舍恩!谢谢你!为了参观这个项目,我们希望您能与我们一起踏上这个奇妙的旅程,让openbci编程变得轻松有趣。

许可证:

麻省理工学院< /P>

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java JTable无法向新创建的列添加值   java如何调整JEditorPane中编辑区域的大小?   Java通过反射确定未知数组中的数组大小   java Intellij Idea有时无法按其预期的方式构建应用程序   java Swing GUI带有IntelliJ错误“contentPane不能设置为null”从终端编译时   如何将这些通用方法调用从C#转换为Java   在null上找不到java属性或字段“index”   从Java HashMap获取整数值时是否需要调用intValue()方法?   java Android谷歌地图获取相机中的图像块   unix无法捕获JAVA中“who m”命令的输出   java,同时将邮件发送到“收件人”标题“我”中的多个收件人   在java中向链表添加未知数量的节点   无法为Heroku上的discord bot设置java端口   java使用Apache HttpClient进行选项请求   与元素类型“ApplicationName”关联的属性“Application Version”需要java Open quote   Android Studio Java中的两个变量求和