摘要
在家打造一套腦機介面(BCI)系統不再是遙不可及的夢想,本篇文章將指引您如何從零開始進行 BCI 的探索和實踐。 歸納要點:
- 應用開源硬體與軟體,如 OpenBCI 和 Muse,降低 BCI 系統的探索成本。
- 深入了解腦電訊號處理技術,包括濾波、特徵提取及分類演算法,以便有效分析腦波數據。
- 探索多樣化的 BCI 應用,從虛擬實境到情緒監測,根據個人興趣開展研究。
我們在研究許多文章後,彙整重點如下
- Neuralink於2016年由伊隆·馬斯克創立,專注於腦機介面技術的發展。
- 許多醫療器材研發單位開始探索腦機介面相關技術,以改善大腦功能與病患生活品質。
- 人工智慧(AI)被應用於腦波信號解碼,提升分析效果和識別複雜模式的能力。
- 腦機介面可分為侵入式和非侵入式兩類,前者需將電極植入大腦以測量神經活動。
- 宏智生醫選擇透過無需植入晶片的方法進行BCI開發,強調使用腦波儀與AI軟體平台結合。
- BCI技術在神經科學領域中日益受到重視,其應用範圍廣泛,包括神經調節等方面。
隨著科技的進步,腦機介面(BCI)逐漸成為熱門話題。從伊隆·馬斯克的Neuralink到其他公司如宏智生醫,各方都在積極探索如何利用這項技術來改善人類健康。透過人工智慧分析腦波信號,我們不僅能夠理解大腦運作,更可能找到新的治療方式。不論是侵入式還是非侵入式方法,都讓我們對未來充滿期待,希望每個人都能受惠於這些突破性的研究成果。
觀點延伸比較:技術類型 | 侵入式BCI | 非侵入式BCI |
---|---|---|
電極安裝方式 | 需植入大腦 | 無需植入,使用外部設備 |
信號測量精度 | 高精度,直接測量神經活動 | 相對較低,依賴皮膚表面電極 |
應用範圍 | 醫療用途,如癲癇治療、神經修復 | 娛樂、遊戲控制、情緒監測 |
最新趨勢 | 微型化和無線技術的進步,提高便利性與安全性 | AI輔助解碼提升識別率,以及便攜式設備的普及 |
以下是我所使用的材料清單:電極套件、Arduino Nano、麵包板以及母對公跳線。接下來是我構建此專案的逐步指南:開啟任何可以執行 Python 的終端,我使用的是 VsCode,並編寫以下程式碼:
import numpy as np # For numerical operations from scipy.signal import butter, lfilter, welch # For signal filtering and power spectral density import serial # For serial communication with Arduino import matplotlib.pyplot as plt # For data visualization arduino = serial.Serial(port='/dev/cu.usbserial-2110', baudrate=9600, timeout=1) # Connects to arduino, specifies which port on the mac it will connect to, how fast the information should be transfere, and how long the system should wait for the data to come until it moves on (1 second) def bandpass_filter(data, lowcut, highcut, fs, order=4): # argv data is where you input the data, low cut is the min frequency in the range, high cut is the max frequency in the range, fs is how many times per second the signal is recorded nyquist = 0.5 * fs low = lowcut / nyquist high = highcut / nyquist b, a = butter(order, [low, high], btype='band') return lfilter(b, a, data) #return b(weight of how much of current data is used for the filtered signal) and a(how much of past data is used for the filtered signal) are used on the data in the lfilter #This allows for smoother filtering and avoids big peaks or changes, keeps the data within accepted range def compute_psd(data, fs): freqs, psd = welch(data, fs, nperseg=256) return freqs, psd #This return a list of frequencies and a corresponding list of how powerful each frequency is in each segment. This allows you to see which brainwave is stronger in each segment, #each list contains 128 values, one for each Hz in the frequency range def classify_brain_state(psd, freqs): alpha_range = (8, 13) beta_range = (13, 30) gamma_range = (30, 100) #Frequency range for each brainwave total_power = np.sum(psd) alpha_power = np.sum(psd[(freqs >= alpha_range[0]) & (freqs < alpha_range[1])]) beta_power = np.sum(psd[(freqs >= beta_range[0]) & (freqs < beta_range[1])]) gamma_power = np.sum(psd[(freqs >= gamma_range[0]) & (freqs < gamma_range[1])]) alpha_percentage = (alpha_power / total_power) * 100 beta_percentage = (beta_power / total_power) * 100 gamma_percentage = (gamma_power / total_power) * 100 if alpha_percentage > beta_percentage and alpha_percentage > gamma_percentage: mental_state = "meditative" elif beta_percentage > alpha_percentage and beta_percentage > gamma_percentage: mental_state = "focused" elif gamma_percentage > alpha_percentage and gamma_percentage > beta_percentage: mental_state = "alert" elif alpha_percentage == beta_percentage == gamma_percentage: mental_state = "uncertain" elif alpha_percentage == beta_percentage and alpha_percentage > gamma_percentage: mental_state = "balanced" elif beta_percentage == gamma_percentage and beta_percentage > alpha_percentage: mental_state = "intense focus" else: mental_state = "mixed" return alpha_percentage, beta_percentage, gamma_percentage, mental_state fs = 256 #tells your computer to sample the data 256 times per second buffer_size = 1024 #Tells the computer to analyze 1024 samples at a time, equal to a 4 second window of data data_buffer = [] print("Reading EEG data...") #any introductary message plt.ion() # Turn on interactive plotting while True: try: raw_line = arduino.readline().decode('utf-8').strip() #Converts from byte string into a regular string if raw_line: try: data_buffer.append(float(raw_line)) except ValueError: continue if len(data_buffer) >= buffer_size: #makes the program wait until there is a meaningful amount of data to procress raw_data = np.array(data_buffer[-buffer_size:]) #makes data into an array for later processing data_buffer = data_buffer[-buffer_size:] #takes only the last 1024 data points freqs, psd = compute_psd(raw_data, fs) alpha_percentage, beta_percentage, gamma_percentage, mental_state = classify_brain_state(psd, freqs) #do the functions from above print(f"Alpha: {alpha_percentage:.2f}% | Beta: {beta_percentage:.2f}% | Gamma: {gamma_percentage:.2f}%") print(f"Mental State: {mental_state}") # Plot the raw signal with dynamic y-axis plt.clf() # Clear the previous plot plt.plot(raw_data, label="Raw Signal", color="blue", linestyle="-") # Line graph plt.xlabel("Samples") # Label x-axis plt.ylabel("Amplitude") # Label y-axis plt.title("Brainwave Data") # Graph title plt.ylim([min(raw_data) - 10, max(raw_data) + 10]) # Set y-axis range dynamically plt.legend() # Show legend plt.grid(True) # Add grid for better readability plt.pause(0.01) # Pause for a moment to update the graph except KeyboardInterrupt: #stop data by doing command C print("Stopping data collection.") break
將晶片連線至麵包板並設定電極位置
將電極套件中的晶片放置於麵包板的 ′a′ 列。以下是跳線連線的清單,母頭端連線至 Arduino 的引腳,公頭端則插入與晶片引腳在同一行的麵包板上:5V(Arduino)→ +US(晶片)
GND(Arduino D側)→ GND(晶片)
GND(Arduino A側)→ VS(晶片)
A0(Arduino)→ SIG(晶片)。
3. 用酒精棉球清潔你的臉部和耳後。
4. 將紅色電極(主動電極)放置在左眉上方。
5. 將黃色電極(參考電極)放置在左耳後的乳突骨上。
6. 將綠色電極(土壤電極)放置在右耳後的乳突骨上。
7. 將電極線連線到晶片上。
8. 開啟 Arduino IDE,建立一個新檔案並將此程式碼貼上進去:
void setup() { Serial.begin(9600); // Start serial communication at 9600 baud } void loop() { int signal = analogRead(A0); // Read the signal from pin A0 (connected to SIG on the chip) Serial.println(signal); // Send the signal value to the Serial Monitor (or Python) delay(1); // Sampling rate adjustment (1 ms delay = 1000 Hz sampling rate) }
連線 Arduino Nano 並設定 Arduino IDE
9. 點選左上角的選擇板塊。10. 將 Arduino 連線至電腦,應該會發出燈光以示開啟。
11. 點選剛顯示出來的埠,這應該是您的 Arduino Nano 連線的埠。
12. 在板塊中搜尋 Arduino Nano 並選擇它。
13. 點選左上角的箭頭( →),這個按鈕稱為「上傳」。
14. 您應該會在終端看到一串輸出流,這意味著您的電腦正在接收訊號。如果您沒有看到那串輸出,以下是一些故障排除的小建議:
- 將 Arduino 從電腦拔掉並關閉 Arduino IDE。
- 開啟您實際電腦上的終端並輸入 ′ls /dev/cu.*′ 來檢視可用的埠。
- 插入 Arduino 並檢查哪個新埠顯示出來,確保它與您在 Arduino IDE 中選擇的一致。
15. 現在完全關閉 Arduino IDE 程式,它會干擾您的程式碼。
16. 開啟您的程式並執行,輸出結果應直接顯示在終端機上,而圖形則應在另一個視窗中開啟。以下是一張該圖形的樣子及輸出結果的範例圖片:
Theo Kertesz 的 BCI 開發歷程:從硬體到應用
從構建硬體開始,我對建立一個功能性腦機介面(BCI)所需的多個元件有了大致的了解。我也親手參與了一些技術性的建設。更具體地說,我現在知道如何使用 Arduino,了解麵包板的運作原理,並且對如何將多種元件連線在一起有了更清晰的認識。在編寫程式碼的過程中,我學會了什麼是功率譜密度(power spectral density, psd),腦波資料是如何讀取頻率以及如何處理這些資料,同時也更加明白如何控制原始資料以進行過濾。基於這段經驗,我計劃未來深入探索腦資料處理、過濾和分類等技術。
喜歡我的文章嗎?讓我們保持聯絡!我叫 Theo Kertesz,是 TKS 的 Innovate 24-25 成員之一。目前我正在研究人工智慧和機器學習在 BCI 領域中的應用。如需更詳細的資訊,請檢視我的每月通訊。如果您有任何問題,隨時可以發郵件給我:theo_kertesz@icloud.com。您也可以透過 X 或 LinkedIn 與我聯絡。
Theo Kertesz 提到利用 Arduino 等工具構建 BCI 的過程,這與當前開放式 BCI 的趨勢相吻合。開放式 BCI 讓個人或小型團隊能以較低成本及高靈活性進行 BCI 研究與開發。他獲得的 Arduino 和麵包板經驗,可以應用於針對個人需求的 BCI 應用,例如:
* **個人化醫療:** 開發能夠偵測並調整治療方案的 BCI,以精準地針對患者特定需求進行治療。
* **輔助科技:** 設計客製化的 BCI 控制介面,使肢體障礙的人能更直觀地操控智慧裝置。
* **腦機介面遊戲:** 創造利用腦波互動的新型遊戲,提高遊戲體驗並促進認知能力。
* **自我監控:** 透過 BCI 監控自身腦波變化,以了解壓力、情緒等狀態並進行自我調節。
儘管當前在腦波資料處理方面仍然存在挑戰,但 Theo Kertesz 對該領域的不懈探索無疑具有啟發性。他將專注於解決複雜訊號處理中的問題,以提升應用效果和準確性。
參考來源
腦機介面發展現況與上市管理
2016 年伊隆·馬斯克(Elon Musk)創立以腦機介面(Brain-Computer Interface,. BCI)為基礎的公司Neuralink 後,大量的醫療器材研發單位開始探索腦機介面相關的技. 術。 腦機 ...
來源: cde.org.tw腦機介面(Brain-Computer Interface) 專題(下)
上集的腦波介面專題為大家介紹了腦波產生的原理與偵測方法,以及腦波訊號的特徵。接下來,徐聖修學長與Investigator 將繼續為讀者帶來腦波訊號的處理方式 ...
應用於醫療場域及居家照護之智慧型互動平台- 以人工智慧為核心之腦波 ...
該項目旨在開發基於人工智慧(AI)的大腦人機介面(Brain Computer Interface,BCI)系統,透過腦電訊號(EEG)解碼大腦功能。開發的人工智慧腦波分析技術將應用於三個主要研究領域 ...
來源: pairlabs.ai【腦機介面黑科技2】腦波儀結合AI窺探憂鬱指數宏智生醫另闢蹊徑打 ...
有別於馬斯克投資的新創Neuralink,透過晶片植入大腦的方式切入腦機介面市場,宏智生醫另闢蹊徑用腦波儀加上AI軟體平台切入BCI周邊市場。 「你可以 ...
來源: 鏡週刊Mirror Media當腦機介面BCI遇上AI,會迸出什麼火花?
BCI技術透過電極獲取腦波信號,AI則負責分析這些數據。傳統的數據分析方法往往無法有效識別腦波中的複雜模式,而AI算法,特別是深度學習技術,能從大量數據中 ...
腦機介面新突破,微型植入式裝置革新腦神經疾病治療
腦機介面技術(Brain-Computer Interface,BCI)是現時腦神經科學研究領域的熱門課題。其中一個主要應用是透過在大腦植入人工裝置,達致神經調節的效果。
來源: GeneOnline NewsValve 的Gabe Newell 打造人機介面公司Starfish 官網曝光G 胖變瘦模樣 ...
Valve 聯合創辦人兼執行長Gabe Newell 與Rebecca Englishby 共同創立了開發人機介面(brain-computer interface,又稱腦機介面,簡稱BCI) ... Valve 在家 ...
來源: 巴哈姆特電玩資訊站準備好讓科技連結大腦了嗎?
腦機介面分為兩類:侵入式與非侵入式。侵入式腦機介面是植入人腦,將微小的電極連結到神經元,以測量神經元的活動。Neuralink之類的侵入式腦機介面,需要動 ...
來源: 哈佛商業評論繁體中文版
相關討論