
OpenBCI Cyton veya NeuroSky MindWave gibi EEG sensörleriyle çalışabilen, beyin dalgalarını analiz ederek protezi kontrol etmeye yönelik geliştirilmiş bir Python kodu bulunuyor.
Bu kod:
✅ EEG cihazından beyin dalgalarını okur (farklı frekans bantları: Alpha, Beta, Theta, Delta).
✅ Odaklanma veya hareket komutlarını algılar.
✅ Arduino veya ESP32’ye seri haberleşme ile komut gönderir.
✅ Protezin diz ve ayak bileği hareketlerini kontrol eder.
🔹 Gelişmiş BCI Destekli Protez Kontrol Kodu
pythonKopyalaDüzenleimport numpy as np
import serial
import time
from brainflow.board_shim import BoardShim, BrainFlowInputParams, BoardIds
from brainflow.data_filter import DataFilter, FilterTypes, AggOperations
# **1. BEYİN DALGALARINI ALGILAMA & BAĞLANTI AYARLARI**
params = BrainFlowInputParams()
params.serial_port = "COM3" # OpenBCI için doğru seri portu kullanın
board = BoardShim(BoardIds.CYTON_BOARD.value, params)
board.prepare_session()
board.start_stream()
time.sleep(2)
# Arduino bağlantısı
arduino = serial.Serial('COM5', 115200) # Arduino veya ESP32'nin bağlı olduğu port
# **2. BEYİN DALGALARININ FİLTRELENMESİ & ANALİZİ**
def get_eeg_data():
data = board.get_board_data() # EEG verisini al
eeg_channels = BoardShim.get_eeg_channels(BoardIds.CYTON_BOARD.value)
alpha_waves, beta_waves = [], []
for ch in eeg_channels:
DataFilter.detrend(data[ch], 3) # DC bileşeni kaldır
DataFilter.perform_bandpass(data[ch], 250, 8.0, 12.0, 4, FilterTypes.BUTTERWORTH.value, 0) # Alpha (8-12 Hz)
DataFilter.perform_bandpass(data[ch], 250, 12.0, 30.0, 4, FilterTypes.BUTTERWORTH.value, 0) # Beta (12-30 Hz)
alpha_waves.append(np.mean(data[ch]))
beta_waves.append(np.mean(data[ch]))
return np.mean(alpha_waves), np.mean(beta_waves)
# **3. PROTEZİN KONTROL EDİLMESİ**
def control_prosthetic():
while True:
alpha, beta = get_eeg_data()
if beta > 20: # Beta dalgaları yüksekse hareket komutu algıla
print("Yürüme Komutu Gönderiliyor!")
arduino.write(b'1') # Arduino'ya yürüyüş başlat komutu gönder
elif alpha > 15: # Alpha yüksekse dur komutu
print("Protez Durduruluyor!")
arduino.write(b'0') # Arduino'ya dur komutu gönder
else:
print("Beyin dalgaları analizi devam ediyor...")
time.sleep(0.5)
# **4. ÇALIŞTIRMA**
try:
control_prosthetic()
except KeyboardInterrupt:
board.stop_stream()
board.release_session()
arduino.close()
print("Bağlantılar kapatıldı!")
🔹 Arduino Kodu (Protez Hareketini Kontrol Eden Kısım)
cppKopyalaDüzenle#include <Servo.h>
Servo kneeServo; // Diz eklemi için servo motor
Servo ankleServo; // Ayak bileği için servo motor
void setup() {
Serial.begin(115200);
kneeServo.attach(9);
ankleServo.attach(10);
}
void loop() {
if (Serial.available()) {
char command = Serial.read();
if (command == '1') { // Yürüme komutu
kneeServo.write(90); // Dizi bük
ankleServo.write(45); // Ayak bileğini kaldır
delay(500);
kneeServo.write(0); // Diz aç
ankleServo.write(0); // Ayak düz
}
else if (command == '0') { // Durdurma komutu
kneeServo.write(0);
ankleServo.write(0);
}
}
}
🔹 Çalışma Mantığı
1️⃣ Beyin Dalgaları Okuma:
- OpenBCI veya NeuroSky sensörü, alpha ve beta dalgalarını analiz eder.
- Beta dalgaları (12-30 Hz) yüksekse, kullanıcı yürüme düşüncesinde demektir.
- Alpha dalgaları (8-12 Hz) yüksekse, dinlenme modunda olduğunu gösterir.
2️⃣ Arduino’ya Komut Gönderme:
- Python kodu, yürüme komutunu Arduino’ya seri port üzerinden iletir.
- Arduino, servoları hareket ettirerek protezin adım atmasını sağlar.
3️⃣ Protezin Hareketi:
- Diz eklemi 90° eğilir, sonra geri açılır.
- Ayak bileği açısı değişerek gerçekçi bir yürüyüş oluşturur.
🔹 Ekstra Özellikler ve Geliştirme Fikirleri
✅ Gerçek Zamanlı Beyin Haritalama:
- Beyin dalgalarının grafik analizini yaparak, farklı hareketlerin sınıflandırılması sağlanabilir.
✅ Makine Öğrenmesi ile Kişiselleştirme:
- Kullanıcının beyin sinyalleri kişiye özel olduğundan, AI modeli ile özelleştirilebilir.
✅ Haptik Geri Bildirim:
- Kullanıcıya titreşim motorları ile dokunsal geri bildirim verilebilir.
✅ Mobil Uygulama Entegrasyonu:
- Kullanıcı, protezin durumunu bir mobil uygulama üzerinden izleyebilir ve ayar yapabilir.