TensorFlow ile Derin Öğrenme Destekli Protez Kontrolü (Python) (Son)

Beyin dalgalarıyla protezi kontrol etmenin yanı sıra, ses komutlarıyla yazı yazabilme yeteneğini de içerir.

📌 Gelişmiş Özellikler:
Beyin dalgalarıyla dirsek ve el hareketlerini kontrol eder (Dirsek bükme, El aç/kapatma).
Sesli komutları kullanarak yazı yazabilir (Google Speech-to-Text API veya Whisper AI kullanılarak).
TensorFlow destekli makine öğrenmesiyle hareketleri kişiselleştirir.


🔹 1. Güncellenmiş Protez Kontrol Kodu (Python)

Bu kod, beyin dalgalarını analiz eder, Arduino ile protezi kontrol eder ve sesli komutlarla yazı yazmayı destekler.

pythonKopyalaDüzenleimport numpy as np
import tensorflow as tf
import serial
import time
import speech_recognition as sr
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 CİHAZI 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. SES TANIMA (KONUŞMAYI YAZIYA ÇEVİRME)**
recognizer = sr.Recognizer()
def speech_to_text():
    with sr.Microphone() as source:
        print("🎤 Lütfen konuşun...")
        recognizer.adjust_for_ambient_noise(source)
        audio = recognizer.listen(source)

        try:
            text = recognizer.recognize_google(audio, language="tr-TR")
            print(f"✍️ Yazılan: {text}")
            with open("yazi.txt", "a") as file:
                file.write(text + "\n")
        except sr.UnknownValueError:
            print("❌ Ses anlaşılamadı.")
        except sr.RequestError:
            print("⚠️ Google API'ye ulaşılamadı.")

# **4. DERİN ÖĞRENME MODELİ (LSTM) OLUŞTURMA & YÜKLEME**
try:
    model = tf.keras.models.load_model("eeg_protez_lstm_model.h5")
    print("📌 Model yüklendi!")
except:
    model = Sequential([
        LSTM(50, return_sequences=True, input_shape=(10, 2)),
        Dropout(0.2),
        LSTM(50),
        Dense(25, activation='relu'),
        Dense(4, activation='softmax')  # 4 Çıktı: [Dur, Dirsek Bük, El Aç/Kapa, Yazı Yaz]
    ])
    model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
    print("⚠️ Yeni model oluşturuldu!")

# **5. EEG VERİLERİNİN ALINMASI & İŞLENMESİ**
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)]

# **6. MODELİN ÖĞRENMESİ & PROTEZİ KONTROL ETMESİ**
sequence_data = []
def train_and_control():
    global sequence_data

    training_data = []
    labels = []

    while True:
        alpha, beta = get_eeg_features()
        print(f"Alpha: {alpha}, Beta: {beta}")

        sequence_data.append([alpha, beta])
        if len(sequence_data) > 10:
            sequence_data.pop(0)

        if len(sequence_data) == 10:
            input_data = np.expand_dims(sequence_data, axis=0)
            prediction = model.predict(input_data)[0]
            command = np.argmax(prediction)  # 0 = Dur, 1 = Dirsek Bük, 2 = El Aç/Kapa, 3 = Yazı Yaz

            if command == 1:
                print("📌 Komut: DİRSEĞİ BÜK!")
                arduino.write(b'1')
                training_data.append(sequence_data)
                labels.append([0, 1, 0, 0])
            elif command == 2:
                print("📌 Komut: ELİ AÇ/KAPA!")
                arduino.write(b'2')
                training_data.append(sequence_data)
                labels.append([0, 0, 1, 0])
            elif command == 3:
                print("📌 Komut: YAZI YAZ!")
                speech_to_text()
                training_data.append(sequence_data)
                labels.append([0, 0, 0, 1])
            else:
                print("📌 Komut: DUR!")
                arduino.write(b'0')
                training_data.append(sequence_data)
                labels.append([1, 0, 0, 0])

        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("eeg_protez_lstm_model.h5")
            print("✅ Model eğitildi ve kaydedildi!")
            training_data, labels = [], []

# **7. BAŞLAT**
train_and_control()

🔹 2. Arduino Kodu (Protezi Hareket Ettirme)

Bu kod, dirsek bükme, el açma/kapatma ve yazı yazma komutlarını Arduino üzerinden yönetir.

cppKopyalaDüzenle#include <Servo.h>

Servo dirsek_motor;
Servo el_motor;

void setup() {
    Serial.begin(115200);
    dirsek_motor.attach(9);
    el_motor.attach(10);
}

void loop() {
    if (Serial.available() > 0) {
        char command = Serial.read();

        if (command == '1') {
            Serial.println("📌 Dirsek Bükülüyor...");
            dirsek_motor.write(90);
        } 
        else if (command == '2') {
            Serial.println("📌 El Açılıyor/Kapanıyor...");
            el_motor.write(180);
            delay(500);
            el_motor.write(0);
        } 
        else if (command == '0') {
            Serial.println("📌 Dur...");
            dirsek_motor.write(0);
            el_motor.write(0);
        }
    }
}

🔹 Sonuç

📌 Protezi beyin dalgalarıyla kontrol etmekle kalmayıp, ses komutlarını kullanarak yazı yazma yeteneği ekledik!
📌 Makine öğrenmesi ile kişiselleştirme yaparak kullanıcının komutlarını daha iyi algılamasını sağladık.
📌 Bu sistem, felçli veya uzvunu kaybetmiş bireyler için büyük bir kolaylık sunar.

🔹 Geliştirme Fikirleri:
Robotik Parmak Hareketleri ekleyerek yazı yazma hızını artırabiliriz.
Daha fazla EEG kanalını işleyerek karmaşık komutları (örneğin fare hareketi gibi) destekleyebiliriz

  • Gönderiler/Makaleler/Tezler

    İsrail Hava Savunma Sistemi: Iron Dome (Kippat Barzel / Demir Kubbe)

    Kısa özet Iron Dome, kısa menzilli roket, topçu mühimmatı ve havadan gelen benzer tehditleri (kısa menzilli füzeler, bazı dronlar ve havan/topçu mermileri) tespit edip, tehdit oluşturdukları sivil veya stratejik alanlara…

    Operasyonel Mükemmelliğe Giden Yol: Endüstri Mühendisliğinin Temel Prensipleri ve Araçları

    Özet Küresel rekabetin yoğunlaştığı günümüzde, organizasyonların sürdürülebilir başarı elde etmesi için operasyonel mükemmellik kritik bir stratejik hedef haline gelmiştir. Operasyonel mükemmellik, yalnızca maliyet düşürme değil; kaliteyi, verimliliği, esnekliği ve müşteri…

    Bir yanıt yazın

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

    Neler Kaçırdın?

    İsrail Hava Savunma Sistemi: Iron Dome (Kippat Barzel / Demir Kubbe)

    • By admin
    • Eylül 11, 2025
    • 21 views
    İsrail Hava Savunma Sistemi: Iron Dome (Kippat Barzel / Demir Kubbe)

    Operasyonel Mükemmelliğe Giden Yol: Endüstri Mühendisliğinin Temel Prensipleri ve Araçları

    • By admin
    • Eylül 9, 2025
    • 22 views
    Operasyonel Mükemmelliğe Giden Yol: Endüstri Mühendisliğinin Temel Prensipleri ve Araçları

    Senaryo: Siber Yolla İHA/SİHA’ların Ele Geçirilmesi – En Kötü Durum Analizi

    • By admin
    • Eylül 7, 2025
    • 27 views
    Senaryo: Siber Yolla İHA/SİHA’ların Ele Geçirilmesi – En Kötü Durum Analizi

    ABD Siber İstihbarat Oluşumları

    • By admin
    • Eylül 7, 2025
    • 22 views
    ABD Siber İstihbarat Oluşumları

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

    • By admin
    • Temmuz 18, 2025
    • 170 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
    • 108 views
    ISP Log Management and Deletion Methods from Servers: Technical Guide and Application Handbook