Yapay Zeka İle Engelleri Aşıyoruz. IV (TensorFlow ile Protez Kontrolü)

TensorFlow ile Protez Kontrolü (Python)

Bu model, kullanıcının beyin dalgalarını tanıyıp öğrenerek protezin yürüyüş ve duruş hareketlerini yönlendirir.

pythonKopyalaDüzenleimport numpy as np
import tensorflow as tf
import serial
import time
import joblib
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense, Dropout
from brainflow.board_shim import BoardShim, BrainFlowInputParams, BoardIds
from brainflow.data_filter import DataFilter, FilterTypes

# **1. EEG BAĞLANTISI**
params = BrainFlowInputParams()
params.serial_port = "COM3"
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)

# **3. LSTM MODELİNİ OLUŞTURMA VEYA YÜKLEME**
try:
    model = tf.keras.models.load_model("brainwave_lstm_model.h5")
    print("📌 Önceden eğitilmiş model yüklendi!")
except:
    model = Sequential([
        LSTM(50, return_sequences=True, input_shape=(10, 2)),  # 10 zaman adımı, 2 özellik (Alpha & Beta)
        Dropout(0.2),
        LSTM(50),
        Dense(25, activation='relu'),
        Dense(2, activation='softmax')  # 2 çıktı (Yürüme & Durma)
    ])
    model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
    print("⚠️ Yeni model oluşturuldu!")

# **4. EEG VERİLERİNİN ALINMASI & 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)
        DataFilter.perform_bandpass(data[ch], 250, 12.0, 30.0, 4, FilterTypes.BUTTERWORTH.value, 0)

        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 ETMESİ**
sequence_data = []  # Zaman serisi verisini kaydetmek için
def train_and_control():
    global sequence_data

    training_data = []
    labels = []

    while True:
        alpha, beta = get_eeg_features()

        print(f"Alpha: {alpha}, Beta: {beta}")

        # **Zaman Serisi Verisini Kaydet**
        sequence_data.append([alpha, beta])
        if len(sequence_data) > 10:  # 10 zaman adımı bekle
            sequence_data.pop(0)

        if len(sequence_data) == 10:
            input_data = np.expand_dims(sequence_data, axis=0)  # Modelin giriş boyutuna göre şekillendir
            prediction = model.predict(input_data)[0]
            command = np.argmax(prediction)  # 0 = Dur, 1 = Yürü

            if command == 1:
                print("📌 Komut: YÜRÜ!")
                arduino.write(b'1')
                training_data.append(sequence_data)
                labels.append([0, 1])  # Yürüme etiketi
            else:
                print("📌 Komut: DUR!")
                arduino.write(b'0')
                training_data.append(sequence_data)
                labels.append([1, 0])  # Dur etiketi

        # **Makine Öğrenmesi Modelini Güncelle**
        if len(training_data) > 100:
            x_train = np.array(training_data)
            y_train = np.array(labels)
            model.fit(x_train, y_train, epochs=5, batch_size=8, verbose=1)
            model.save("brainwave_lstm_model.h5")
            print("✅ Model eğitildi ve kaydedildi!")
            training_data, labels = [], []  # Eğitim verisini 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. Protezi 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️⃣ Beyin Dalgalarının Okunması:

  • OpenBCI veya NeuroSky MindWave gibi EEG sensörlerinden alpha (8-12 Hz) ve beta (12-30 Hz) dalgaları alınır.

2️⃣ Derin Öğrenme Modeli (LSTM) ile Karar Verme:

  • Geçmiş 10 EEG verisini kullanarak hareket veya duruş tahmin edilir.
  • Kullanıcı düşündükçe model, yürüyüş stilini öğrenir ve kişiselleştirir.

3️⃣ Protezin Kontrolü:

  • Yürüme komutu: Arduino diz eklemini ve ayak bileğini hareket ettirir.
  • Durma komutu: Protez hareketsiz kalır.

🔹 Avantajlar

Makine Öğrenmesi (ML) & Derin Öğrenme (DL) desteği ile kişiselleştirilmiş kontrol.
Gerçek zamanlı EEG analizi ile daha hassas hareket komutları.
Model, kullanıcı beyin dalgalarını öğrendikçe daha iyi hale gelir.

Böylece beyin dalgalarıyla kontrol edilen protez, kullanıcının düşüncelerine uyum sağlayarak çalışır! 🚀

  • Gönderiler/Makaleler/Tezler

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

    Selçuk DİKİCİ – Endüstri Mühendisi ÖzetBu çalışma, siber saldırıların hazırlık ve organizasyon süreçlerinde dark web’in stratejik rolünü ve bu ortamdan elde edilen taktiksel istihbaratın önemini teknik bağlamda irdelemektedir. Dark web…

    En Güncel Siber Saldırı İstihbaratı Yöntemleri

    Yazar: Selçuk DİKİCİ – Endüstri Mühendisi Dijitalleşmenin hızla ilerlediği günümüzde, siber saldırılar artık yalnızca bilişim sistemlerinin değil; devletlerin, şirketlerin ve bireylerin stratejik güvenliğini tehdit eden çok boyutlu bir kriz haline…

    Bir yanıt yazın

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

    Neler Kaçırdın?

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

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

    En Güncel Siber Saldırı İstihbaratı Yöntemleri

    • By admin
    • Mayıs 5, 2025
    • 64 views
    En Güncel Siber Saldırı İstihbaratı Yöntemleri

    Yapay Zeka Destekli Konteyner Kontrolü:

    • By admin
    • Nisan 17, 2025
    • 49 views
    Yapay Zeka Destekli Konteyner Kontrolü:

    UNODC Container Control Programme (CCP): Küresel Ticaretin Güvenliği İçin Stratejik Bir Model

    • By admin
    • Nisan 17, 2025
    • 65 views
    UNODC Container Control Programme (CCP): Küresel Ticaretin Güvenliği İçin Stratejik Bir Model

    Uyuşturucu ve Silah Kaçakçılığı: Uluslararası Güvenlik Açısından Küresel Bir Tehdit

    • By admin
    • Nisan 17, 2025
    • 63 views
    Uyuşturucu ve Silah Kaçakçılığı: Uluslararası Güvenlik Açısından Küresel Bir Tehdit

    Trump: Amerika’nın Çöküşünü mü Tetikleyecek, Yoksa Onu Tekrar İstikrarlı Bir Güce mi Dönüştürecek?

    • By admin
    • Nisan 17, 2025
    • 63 views
    Trump: Amerika’nın Çöküşünü mü Tetikleyecek, Yoksa Onu Tekrar İstikrarlı Bir Güce mi Dönüştürecek?