Yapay Zeka İle Engelleri Aşıyoruz. III (Proje Yönetiyoruz Makine Öğrenmesi ile Öğrenme)

makine öğrenmesi (ML) ile beyin dalgalarını analiz ederek protezi kişiselleştiren gelişmiş bir BCI destekli protez kontrol sistemidir.

📌 Özellikler:
Makine öğrenmesi (ML) modeli, kullanıcının beyin dalgalarını kişiselleştirerek analiz eder.
✅ Kullanıcının beyin dalgalarını gerçek zamanlı olarak takip eder ve protezin hareketlerini öğrenir.
Scikit-learn ve TensorFlow kullanarak, beta dalgalarındaki değişimlere göre yürüyüş stilini belirler.


🔹 1. Makine Öğrenmesi ile BCI Protez Kontrolü (Python)

pythonKopyalaDüzenleimport numpy as np
import serial
import time
import joblib  # Modeli kaydetmek ve yüklemek için
from brainflow.board_shim import BoardShim, BrainFlowInputParams, BoardIds
from brainflow.data_filter import DataFilter, FilterTypes
from sklearn.ensemble import RandomForestClassifier  # Makine öğrenmesi modeli

# **1. EEG CİHAZI BAĞLANTISI**
params = BrainFlowInputParams()
params.serial_port = "COM3"  # OpenBCI için seri port
board = BoardShim(BoardIds.CYTON_BOARD.value, params)
board.prepare_session()
board.start_stream()
time.sleep(2)

# **2. ARDUINO BAĞLANTISI**
arduino = serial.Serial('COM5', 115200)  # Arduino veya ESP32 için port

# **3. MODELİN YÜKLENMESİ VEYA YENİDEN EĞİTİLMESİ**
try:
    model = joblib.load("brainwave_model.pkl")  # Önceden eğitilmiş model yükle
    print("📌 Model yüklendi!")
except:
    model = RandomForestClassifier(n_estimators=50)  # Yeni model oluştur
    print("⚠️ Yeni model eğitilecek!")

# **4. EEG VERİLERİNİN ALINMASI VE FİLTRELENMESİ**
def get_eeg_features():
    data = board.get_board_data()
    eeg_channels = BoardShim.get_eeg_channels(BoardIds.CYTON_BOARD.value)
    
    alpha_waves, beta_waves = [], []
    for ch in eeg_channels:
        DataFilter.detrend(data[ch], 3)
        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)

# **5. MODELİN ÖĞRENMESİ & PROTEZ KONTROLÜ**
def train_and_control():
    training_data = []
    labels = []

    while True:
        alpha, beta = get_eeg_features()

        print(f"Alpha: {alpha}, Beta: {beta}")
        
        if beta > 20:
            print("📌 Komut: YÜRÜ!")
            arduino.write(b'1')
            training_data.append([alpha, beta])
            labels.append(1)  # Yürüme etiketi
        elif alpha > 15:
            print("📌 Komut: DUR!")
            arduino.write(b'0')
            training_data.append([alpha, beta])
            labels.append(0)  # Dur etiketi
        else:
            print("⏳ Beyin dalgaları analizi devam ediyor...")

        # **Makine öğrenmesi modelini eğitme**
        if len(training_data) > 50:
            model.fit(training_data, labels)
            joblib.dump(model, "brainwave_model.pkl")  # Modeli kaydet
            print("✅ Model güncellendi!")
            training_data, labels = [], []  # Veri setini sıfırla

        time.sleep(0.5)

# **6. BAŞLATMA**
try:
    train_and_control()
except KeyboardInterrupt:
    board.stop_stream()
    board.release_session()
    arduino.close()
    print("🔌 Bağlantılar kapatıldı!")

🔹 2. Protez Hareketini Kontrol Eden Arduino Kodu

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️⃣ Makine Öğrenmesi ile Öğrenme:

  • RandomForestClassifier kullanarak, kullanıcı beyin dalgalarına göre protezin hareketlerini kişiselleştirir.
  • Beta dalgaları yükseldiğinde yürüme komutu, alpha yükseldiğinde dur komutu verilir.
  • Model, zamanla kullanıcının beyin aktivitesini öğrenerek daha iyi kararlar verir.

2️⃣ EEG Sensörlerinden Veri Alımı:

  • OpenBCI veya Neurosky gibi EEG cihazları ile alpha & beta dalgaları ölçülür.
  • Python kodu beyin dalgalarını filtreler ve Arduino’ya komut gönderir.

3️⃣ Arduino Üzerinde Protez Kontrolü:

  • Servo motorlar, Arduino üzerinden beyin sinyallerine göre hareket eder.
  • Makine öğrenmesi, kullanıcının yürüme stilini öğrenir ve zamanla daha akıcı bir hareket sağlar.

🔹 Sonuç

✅ Protez makine öğrenmesi ile kullanıcının beyin sinyallerini analiz eder.
Zamanla kullanıcının yürüyüş alışkanlıklarını öğrenir ve optimize eder.
Gerçek zamanlı beyin dalgası analizi ile yürüyüş komutları kişiselleştirilir.

  • Gönderiler/Makaleler/Tezler

    Temel İstihbarat ve Uluslararası İlişkilerSiber Çağda Bilgi ve Güvenlik (KİTABI)

    ISP Log Management and Deletion Methods from Servers: Technical Guide and Application Handbook

    By SELÇUK DİKİCİ “ISP Log Management and Server Deletion Methods: Technical Guide and Application Booklet” offers an in-depth look at log management and data persistence, topics of critical importance in the…

    Bir yanıt yazın

    E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

    Neler Kaçırdın?

    Temel İstihbarat ve Uluslararası İlişkilerSiber Çağda Bilgi ve Güvenlik (KİTABI)

    • By admin
    • Temmuz 18, 2025
    • 27 views
    Temel İstihbarat ve Uluslararası İlişkilerSiber Çağda Bilgi ve Güvenlik (KİTABI)

    ISP Log Management and Deletion Methods from Servers: Technical Guide and Application Handbook

    • By admin
    • Temmuz 12, 2025
    • 26 views
    ISP Log Management and Deletion Methods from Servers: Technical Guide and Application Handbook

    ISP Log Yönetimi ve Sunuculardan Silinme Yöntemleri: Teknik Kılavuz ve Uygulama Kitapçığı

    • By admin
    • Temmuz 12, 2025
    • 32 views
    ISP Log Yönetimi ve Sunuculardan Silinme Yöntemleri: Teknik Kılavuz ve Uygulama Kitapçığı

    21. Yüzyılda Dijitalleşme ile Kesişen Disiplinler

    • By admin
    • Temmuz 11, 2025
    • 31 views
    21. Yüzyılda Dijitalleşme ile Kesişen Disiplinler

    ANTİK ÇAĞLARDAN GÜNÜMÜZE ENDÜSTRİYEL TASARIMIN TARİHİ GELİŞİMİ

    • By admin
    • Temmuz 9, 2025
    • 27 views
    ANTİK ÇAĞLARDAN GÜNÜMÜZE ENDÜSTRİYEL TASARIMIN TARİHİ GELİŞİMİ

    DARK WEB TARAMASI VE TAKTİKSEL SİBER İSTİHBARAT: MODERN YAKLAŞIMLAR VE TEKNİK ARAÇLAR

    • By admin
    • Mayıs 5, 2025
    • 161 views
    DARK WEB TARAMASI VE TAKTİKSEL SİBER İSTİHBARAT: MODERN YAKLAŞIMLAR VE TEKNİK ARAÇLAR