This commit is contained in:
ProtoDrive000 2024-11-11 13:15:24 +08:00
commit 1cc29403d1

View File

@ -1,4 +1,3 @@
<h1 align = "center">🌟YuEEG 8通道脑机接口设备🌟</h1> <h1 align = "center">🌟YuEEG 8通道脑机接口设备🌟</h1>
<p align = "center"> <p align = "center">
@ -18,6 +17,9 @@
> [!NOTE] > [!NOTE]
> 项目尚未完全更新【SSVEP 范式】,建议 Star 后,会添加更多内容。 > 项目尚未完全更新【SSVEP 范式】,建议 Star 后,会添加更多内容。
> [!NOTE]
> 项目尚未完全更新【SSVEP 范式】,建议 Star 后,会添加更多内容。
## 概述 🧠🔌 ## 概述 🧠🔌
本项目旨在利用 TI 的 ADS1299 芯片构建一个 8 通道的脑机接口BCI设备。项目涵盖硬件电路设计、芯片驱动开发以及数据接收和显示的上位机程序。 本项目旨在利用 TI 的 ADS1299 芯片构建一个 8 通道的脑机接口BCI设备。项目涵盖硬件电路设计、芯片驱动开发以及数据接收和显示的上位机程序。
@ -55,25 +57,25 @@
### 电路设计图: ### 电路设计图:
> 嘉立创链接:[https://oshwhub.com/protodrive000/1299_pro](https://a360.co/3AnxQdK%20) > 嘉立创链接:[https://oshwhub.com/protodrive000/1299_pro](https://a360.co/3AnxQdK%20)
访问密码yutaov5 > 访问密码yutaov5
| 正面 | 反面 | | 正面 | 反面 |
|-|-| | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
| ![Img](https://imgpool.protodrive.xyz/img/yank-note-picgo-img-20241110221805.png#pic_center =410x) | ![Img](https://imgpool.protodrive.xyz/img/yank-note-picgo-img-20241110221809.png#pic_center =400x) | | ![Img](https://imgpool.protodrive.xyz/img/yank-note-picgo-img-20241110221805.png#pic_center =410x) | ![Img](https://imgpool.protodrive.xyz/img/yank-note-picgo-img-20241110221809.png#pic_center =400x) |
### 外壳模型设计图: ### 外壳模型设计图:
> 3D 外壳文件https://a360.co/3AnxQdK > 3D 外壳文件https://a360.co/3AnxQdK
访问密码yutaov5 > 访问密码yutaov5
| 单外壳 | 外壳+脑电帽 | 仰视图 | | 单外壳 | 外壳+脑电帽 | 仰视图 |
|-|-|-| | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- |
| ![Img](https://imgpool.protodrive.xyz/img/yank-note-picgo-img-20241110221759.png) | ![Img](https://imgpool.protodrive.xyz/img/yank-note-picgo-img-20241110221635.PNG) | ![Img](https://imgpool.protodrive.xyz/img/yank-note-picgo-img-20241110221644.png) | | ![Img](https://imgpool.protodrive.xyz/img/yank-note-picgo-img-20241110221759.png) | ![Img](https://imgpool.protodrive.xyz/img/yank-note-picgo-img-20241110221635.PNG) | ![Img](https://imgpool.protodrive.xyz/img/yank-note-picgo-img-20241110221644.png) |
## 上位机程序 📊 ## 上位机程序 📊
> 目前仅提供串口通讯的 plot_only.py 界面程序 > 目前仅提供串口通讯的 plot_only.py 界面程序
### 功能: ### 功能:
- **数据接收**:通过串口接收来自硬件设备的数据。 - **数据接收**:通过串口接收来自硬件设备的数据。
@ -86,10 +88,10 @@
- **图形库**pyqt + fluent - **图形库**pyqt + fluent
### 界面截图: ### 界面截图:
|正常采集模式|测试信号模式|
|-|-|
|![Img](https://imgpool.protodrive.xyz/img/yank-note-picgo-img-20241111123715.png#pic_center%20=400x)|![Img](https://imgpool.protodrive.xyz/img/yank-note-picgo-img-20241111123732.png#pic_center%20=400x)|
| 正常采集模式 | 测试信号模式 |
| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
| ![Img](https://imgpool.protodrive.xyz/img/yank-note-picgo-img-20241111123715.png#pic_center%20=400x) | ![Img](https://imgpool.protodrive.xyz/img/yank-note-picgo-img-20241111123732.png#pic_center%20=400x) |
## 使用指南 📚 ## 使用指南 📚
@ -99,9 +101,10 @@
- USB 接入 XiaoESP32S3 直接供电使用,同时串口发送数据 - USB 接入 XiaoESP32S3 直接供电使用,同时串口发送数据
- 背面焊接 TPS63070 锂电池转 5V 模块,然后电源接口接入 3.7V 锂电池即可 - 背面焊接 TPS63070 锂电池转 5V 模块,然后电源接口接入 3.7V 锂电池即可
1. 将 EEG 电极正确连接到被测试者。 1. 将 EEG 电极正确连接到被测试者。
2. 使用USB线连接设备和电脑。 1. 使用 USB 线连接设备和电脑。
### 引脚连接 ### 引脚连接
```c++ ```c++
// 定义引脚 // 定义引脚
#define CS_PIN A3 #define CS_PIN A3
@ -113,7 +116,6 @@
#define RESET_PIN A1 #define RESET_PIN A1
``` ```
### 硬件设置 ### 硬件设置
驱动代码是为支持 ESP32 的 Arduino IDE 编写的,代码通过 SPI 与 ADS1299 进行数据采集。 驱动代码是为支持 ESP32 的 Arduino IDE 编写的,代码通过 SPI 与 ADS1299 进行数据采集。
@ -122,16 +124,21 @@
- **Arduino IDE**:从[Arduino 官方网站](https://www.arduino.cc/en/software)下载最新版本。 - **Arduino IDE**:从[Arduino 官方网站](https://www.arduino.cc/en/software)下载最新版本。
- **ESP32 开发板包**:在 Arduino IDE 中通过开发板管理器添加 ESP32 开发板支持。 - **ESP32 开发板包**:在 Arduino IDE 中通过开发板管理器添加 ESP32 开发板支持。
### 加载代码: ### 加载代码:
打开 Arduino IDE选择 `文件` > `打开` 并选择 `ino 文件` 打开 Arduino IDE选择 `文件` > `打开` 并选择 `ino 文件`
`工具` > `开发板` 下选择你的 ESP32 开发板。 `工具` > `开发板` 下选择你的 ESP32 开发板。
`工具` > `端口` 下设置正确的 COM 端口。 `工具` > `端口` 下设置正确的 COM 端口。
### 上传代码: ### 上传代码:
> 如果是第一次下载,上电前按住 boot 再上电后松开,然后正常下载 > 如果是第一次下载,上电前按住 boot 再上电后松开,然后正常下载
编译并将代码上传到 ESP32 开发板。 编译并将代码上传到 ESP32 开发板。
### 上位机代码使用方法 ### 上位机代码使用方法
上传完成后ESP32 开发板将开始与 ADS1299 芯片进行通信,并将 EEG 数据输出到串口监视器。 上传完成后ESP32 开发板将开始与 ADS1299 芯片进行通信,并将 EEG 数据输出到串口监视器。
- 模式切换:使用以下串口命令或者左下方按钮切换不同模式: - 模式切换:使用以下串口命令或者左下方按钮切换不同模式:
@ -139,11 +146,13 @@
- 3自检模式 - 3自检模式
> 示例用法 > 示例用法
上传完成后在Arduino IDE中打开串口监视器波特率设为115200。你将看到来自每个通道的实时EEG数据。 > 上传完成后,在 Arduino IDE 中打开串口监视器,波特率设为 115200。你将看到来自每个通道的实时 EEG 数据。
```C ```C
// 数据格式如下 // 数据格式如下
Channel 1: 0.123456, Channel 2: 0.654321, ..., Channel 8: 0.345678 Channel 1: 0.123456, Channel 2: 0.654321, ..., Channel 8: 0.345678
``` ```
### 上位机安装步骤 ### 上位机安装步骤
1. **克隆此仓库** 1. **克隆此仓库**
@ -161,16 +170,22 @@ Channel 1: 0.123456, Channel 2: 0.654321, ..., Channel 8: 0.345678
```bash ```bash
python plot_only.py python plot_only.py
``` ```
## 贡献指南 ## 贡献指南
欢迎社区贡献!请随时提交问题、功能请求或拉取请求。 欢迎社区贡献!请随时提交问题、功能请求或拉取请求。
## 未来改进 ## 未来改进
- 增加对不同微控制器的支持。 - 增加对不同微控制器的支持。
- 扩展脑电帽设计,以便调整电极位置。 - 扩展脑电帽设计,以便调整电极位置。
## 致谢 ## 致谢
特别感谢德州仪器提供 ADS1299 芯片,并感谢开源社区的启发与支持。 特别感谢德州仪器提供 ADS1299 芯片,并感谢开源社区的启发与支持。
## 项目结构 🗂️ ## 项目结构 🗂️
``` ```
├── hardware ├── hardware
│ ├── schematics │ ├── schematics
@ -181,6 +196,7 @@ Channel 1: 0.123456, Channel 2: 0.654321, ..., Channel 8: 0.345678
│ └── bci_gui.py │ └── bci_gui.py
└── README.md └── README.md
``` ```
## 软件开发 💻 ## 软件开发 💻
### 芯片驱动: ### 芯片驱动:
@ -192,7 +208,7 @@ Channel 1: 0.123456, Channel 2: 0.654321, ..., Channel 8: 0.345678
### 引脚定义 ### 引脚定义
| 引脚名称 | 描述 | | 引脚名称 | 描述 |
| --------- | ------------------------------- | | ---------- | -------------------------------- |
| CS_PIN | 片选引脚,低电平有效 | | CS_PIN | 片选引脚,低电平有效 |
| SCLK_PIN | SPI 时钟引脚 | | SCLK_PIN | SPI 时钟引脚 |
| MOSI_PIN | SPI 主设备输出从设备输入引脚 | | MOSI_PIN | SPI 主设备输出从设备输入引脚 |
@ -206,7 +222,7 @@ Channel 1: 0.123456, Channel 2: 0.654321, ..., Channel 8: 0.345678
### 命令定义 ### 命令定义
| 命令 | 描述 | | 命令 | 描述 |
| ------- | --------------------- | | ------- | ---------------- |
| WAKEUP | 唤醒芯片 | | WAKEUP | 唤醒芯片 |
| STANDBY | 进入待机模式 | | STANDBY | 进入待机模式 |
| RESET | 重置芯片 | | RESET | 重置芯片 |
@ -313,10 +329,13 @@ SRBSignal Reference Buffer引脚在ADS1299中用于信号参考电极的
- **SRB2**SRB2 引脚可以选择单独的电极作为参考电极,并通过设置`CHnSET`寄存器的 SRB2 位,将该电极的电位作为其他通道的参考。 - **SRB2**SRB2 引脚可以选择单独的电极作为参考电极,并通过设置`CHnSET`寄存器的 SRB2 位,将该电极的电位作为其他通道的参考。
## 贡献 🤝 ## 贡献 🤝
欢迎大家对本项目进行贡献!请提交 pull request 或创建 issue 以报告问题。 欢迎大家对本项目进行贡献!请提交 pull request 或创建 issue 以报告问题。
## 许可 📜 ## 许可 📜
本项目采用基于 MIT 的许可。 本项目采用基于 MIT 的许可。
``` ```
MIT License with Restrictions MIT License with Restrictions