Chords-Python#

Ringkasan#

Chords-Python adalah sekumpulan alat sumber terbuka untuk merekam sinyal bio-potensial seperti ECG, EMG, EEG, atau EOG, bersama dengan visualisasi menggunakan perangkat keras BioAmp. Ini ideal untuk tujuan pendidikan karena mempromosikan Neurosains DIY dan membuat eksplorasi sinyal bio-potensial lebih mudah diakses untuk siswa dan peneliti.

Fitur#

Persyaratan Perangkat Lunak#

  • Arduino IDE – Diperlukan untuk mengunggah firmware Chords Arduino ke papan pengembangan Anda.

  • Python – Pastikan Anda memiliki versi terbaru yang terinstal.

  • VS Code atau editor kode lainnya (Sebagai alternatif, Anda dapat menggunakan Command Prompt).

Persyaratan Perangkat Keras#

Untuk menggunakan Chords-Python, Anda memerlukan:

Menyiapkan perangkat keras#

Buat semua koneksi sesuai dengan perangkat keras yang Anda gunakan , termasuk koneksi sensor dengan papan pengembangan, koneksi tubuh dengan sensor, dan koneksi dari papan pengembangan ke laptop Anda.

Mengunggah kode#

Setelah Anda semua siap, saatnya mengunggah kode ke papan pengembangan Anda. Pergi ke repositori GitHub Chords Arduino Firmware , gulir ke bawah ke tabel papan yang didukung, cari nama papan Anda, dan klik sketsa Arduino yang sesuai dengan baris tersebut. Salin sketsa dan tempel ke Arduino IDE. Pergi ke tools, pilih papan Anda, dan port COM yang benar. Sekarang, tekan tombol upload.

Membuka Chords-Python#

Ada dua cara untuk menggunakan Chords-Python:

A. Menggunakan Paket Python `chordspy` (Direkomendasikan)

B. Menjalankan Script Secara Manual dari Repository

A. Menggunakan paket chordspy#

Ini adalah cara paling lancar untuk memulai. Ikuti langkah-langkah di bawah ini:

  1. Instal Python Pastikan versi terbaru Python terinstal.

  2. Buat dan Aktifkan Virtual Environment:

    • Pada Windows:

      python -m venv .venv
      
      .venv\Scripts\activate
      
    • Pada macOS/Linux:

      python3 -m venv .venv
      
      source .venv/bin/activate
      
  3. Instal Paket:

    pip install chordspy
    
  4. Luncurkan Antarmuka Web:

    chordspy
    

Antarmuka web akan terbuka di mana Anda dapat menghubungkan perangkat dan mengakses aplikasi.

Interface in Light Mode

Interface in Light Mode#

Interface in Dark Mode

Interface in Dark Mode#

B. Running Scripts Manually (Alternative)#

If you prefer running scripts directly (for development, debugging, or customization):

  1. Download the Repository:

    • You can download the Chords-Python repository from GitHub by visiting the following link: Chords-Python.

    • Or, you can clone the repository using Git by running the following command:

    git clone https://github.com/upsidedownlabs/Chords-Python.git
    
  2. Create and Activate a Virtual Environment (if not already):

    • On Windows:

      python -m venv .venv
      
      .venv\Scripts\activate
      
    • On macOS/Linux:

      python3 -m venv .venv
      
      source .venv/bin/activate
      
  3. Install Requirements:

    pip install -r requirements.txt
    
  4. Run the Application:

    Navigate to the chordspy folder and run:

    python -m chordspy.app                          # To launch the web interface
    python -m chordspy.connection --protocol usb    # To start LSL stream via USB
    python -m chordspy.connection --protocol ble    # To start LSL stream via BLE
    python -m chordspy.connection --protocol wifi   # To start LSL stream via WiFi
    

    To run any application, open a new terminal:

    python chordspy.gui.py         # GUI Application
    python chordspy.ffteeg.py      # EEG with FFT Analysis
    

Koneksi#

Langkah pertama adalah membuat koneksi dengan perangkat Anda dan memulai stream.

Ada tiga opsi koneksi yang tersedia:

  • Wi-Fi

  • Bluetooth

  • Serial (USB)

Wi-Fi#

  1. Unggah firmware Wi-Fi melalui repositori Chords-Arduino-Firmware

  2. Nyalakan perangkat dan hubungkan ke access point yang dibuat oleh perangkat (misalnya, npg-lite-2)

  3. Di antarmuka web:

    • Klik tombol Wi-Fi

    • Klik tombol Connect

Notifikasi pop-up akan muncul yang menunjukkan koneksi berhasil.

Bluetooth#

  1. Unggah firmware Bluetooth melalui repositori Chords-Arduino-Firmware

  2. Nyalakan perangkat dan aktifkan Bluetooth di komputer Anda

  3. Di antarmuka web:

    • Klik tombol Bluetooth

    • Pilih perangkat Anda dari daftar perangkat yang tersedia

    • Tekan tombol Connect

Notifikasi pop-up akan muncul yang menunjukkan koneksi berhasil.

Serial (USB)#

  1. Unggah firmware Serial melalui repositori Chords-Arduino-Firmware

  2. Hubungkan perangkat ke komputer Anda menggunakan kabel USB

  3. Di antarmuka web:

    • Klik tombol Serial

    • Klik tombol Connect

Notifikasi pop-up akan muncul yang menunjukkan koneksi berhasil.

Note

Langkah koneksi penting karena memulai LSL Stream, yang diperlukan untuk menjalankan aplikasi.

CSV Logging#

Data mentah yang diterima dari perangkat dapat dicatat ke file CSV untuk analisis lebih lanjut atau penyimpanan. Fitur opsional ini dapat diaktifkan atau dinonaktifkan di antarmuka web.

Untuk menggunakan logging CSV:

  1. Klik tombol Start recording untuk mulai mencatat - File dengan nama dibuat ChordsPy_{timestamp}.csv di folder yang sama. - File menyertakan kolom untuk counter dan data channel

  2. Klik tombol Stop recording untuk mengakhiri pencatatan - File akan disimpan di folder yang sama

CSV Logging

CSV Logging#

Aplikasi#

Ada banyak aplikasi yang tersedia yang streaming LSL dan dapat dijalankan untuk berbagai tujuan.

Daftar aplikasi yang tersedia:

1. ECG with Heart Rate#

Ringkasan#

ECG with Heart Rate adalah aplikasi real-time yang dirancang untuk memvisualisasikan dan menganalisis data Elektrokardiogram (ECG) menggunakan protokol Lab Streaming Layer (LSL). Dibangun dengan Python dan PyQt5, aplikasi ini menyediakan antarmuka grafis untuk memantau sinyal ECG, mendeteksi R-peaks (detak jantung), dan menghitung detak jantung secara real-time. Ini menerapkan teknik pemrosesan sinyal dan menggunakan pustaka neurokit2 untuk memperkirakan deteksi R-peak dan detak jantung.

Fitur#

Jendela GUI akan muncul, menampilkan sinyal ECG real-time bersama dengan detak jantung yang dihitung.

Heart Rate with ECG

Heart Rate with ECG#

2. EMG with Envelope#

Ringkasan#

EMG with Envelope adalah aplikasi berbasis Python yang dirancang untuk memvisualisasikan dan menganalisis sinyal Elektromiografi (EMG) secara real-time. Ini terhubung ke stream data EMG menggunakan protokol Lab Streaming Layer (LSL), memproses sinyal untuk mengekstrak envelope EMG, dan menampilkan sinyal EMG yang difilter dan envelope-nya dalam antarmuka grafis yang ramah pengguna. Dibangun dengan PyQt5 dan pyqtgraph, aplikasi ini menyediakan alat visualisasi responsif dan interaktif untuk siswa, peneliti, atau pengembang yang bekerja dengan data EMG.

Fitur#

Jendela GUI akan muncul, menampilkan sinyal EMG real-time bersama dengan Envelope EMG yang dihitung.

EMG with Envelope

EMG with Envelope#

Fitur#

Jendela GUI akan muncul, menampilkan sinyal EOG real-time bersama dengan Kedipan yang ditandai sebagai titik Merah.

EOG with Blinks

EOG with Blinks#

4. EEG with FFT#

Ringkasan#

EEG with FFT and Brainwave Power adalah aplikasi berbasis Python yang dirancang untuk memvisualisasikan dan menganalisis sinyal Elektroensefalografi (EEG) secara real-time. Ini terhubung ke stream data EEG menggunakan protokol Lab Streaming Layer (LSL), memproses sinyal untuk menghilangkan noise, dan melakukan Fast Fourier Transform (FFT) untuk menghitung daya dari berbagai band frekuensi gelombang otak (Delta, Theta, Alpha, Beta, dan Gamma). Aplikasi ini menyediakan antarmuka pengguna grafis (GUI) yang dibangun dengan PyQt5 dan pyqtgraph untuk visualisasi real-time sinyal EEG mentah, hasil FFT, dan distribusi daya gelombang otak.

Fitur#

Jendela GUI akan muncul, menampilkan sinyal EEG real-time bersama dengan FFT yang dihitung dan distribusi daya gelombang otak.

EEG with FFT

EEG with FFT#

Tip

Untuk memastikan Anda merekam sinyal berkualitas tinggi, lihat panduan detail di sini: Troubleshooting EEG Signal Quality.

5. EEG Tug of War Game#

Ringkasan#

EEG Tug of War Game adalah aplikasi berbasis Python yang memanfaatkan sinyal Elektroensefalografi (EEG) untuk membuat permainan interaktif dua pemain. Pemain mengontrol gerakan bola di layar dengan memodulasi aktivitas otak mereka, khususnya band frekuensi Alpha dan Beta. Permainan menggunakan protokol Lab Streaming Layer (LSL) untuk memperoleh data EEG real-time, memproses sinyal untuk menghitung daya relatif dalam band Alpha dan Beta, dan menerjemahkannya menjadi gaya yang menggerakkan bola. Pemain pertama bertujuan untuk mendorong bola ke sisi lawan untuk mencetak skor dan memenangkan permainan. Aplikasi dibangun menggunakan pustaka pygame untuk antarmuka grafis dan terintegrasi dengan pylsl untuk akuisisi data EEG.

Fitur#

Jendela permainan akan terbuka, menampilkan tombol untuk START/RESTART, PLAY/PAUSE, dan EXIT. Tombol-tombol ini menawarkan kontrol intuitif, memungkinkan pemain untuk dengan mudah memulai, menjeda, melanjutkan, atau keluar dari permainan sesuai kebutuhan.

EEG Tug of War

EEG Tug of War#

Untuk instruksi detail, lihat Instructable EEG Tug of War Game.

6. EEG Beetle Game#

Ringkasan#

EEG Beetle Game adalah aplikasi berbasis Python yang menggunakan sinyal Elektroensefalografi (EEG) untuk mengontrol gerakan kumbang dalam lingkungan permainan 2D. Permainan memanfaatkan protokol Lab Streaming Layer (LSL) untuk memperoleh data EEG real-time, memproses sinyal untuk mendeteksi tingkat fokus pengguna, dan menerjemahkannya menjadi gerakan ke atas atau ke bawah kumbang. Aplikasi dibangun menggunakan pustaka pygame untuk antarmuka permainan dan terintegrasi dengan teknik pemrosesan sinyal untuk menganalisis data EEG secara real-time.

Fitur#

Jendela GUI akan muncul, menampilkan semua pesan kalibrasi, diikuti dengan permainan dimulai, dan akhirnya menampilkan permainan dengan kumbang.

EEG Beetle Game

EEG Beetle Game#

7. GUI#

Ringkasan#

Aplikasi GUI adalah alat berbasis Python yang dirancang untuk memvisualisasikan stream data real-time dari perangkat Arduino menggunakan protokol Lab Streaming Layer (LSL). Aplikasi terhubung ke stream LSL, mengambil data multi-channel, dan memplotnya secara real-time menggunakan pustaka pyqtgraph.

Fitur#

Jendela GUI akan muncul yang menampilkan data secara real-time.

GUI

GUI#

8. EOG Keystroke Emulator#

Ringkasan#

EOG Keystroke Emulator adalah aplikasi berbasis Python yang dirancang untuk mendeteksi kedipan mata menggunakan sinyal Elektrookulografi (EOG) dan menerjemahkannya menjadi keystroke. Aplikasi memanfaatkan protokol Lab Streaming Layer (LSL) untuk memperoleh data EOG real-time, memproses sinyal untuk mendeteksi kedipan, dan mensimulasikan penekanan spacebar setiap kali kedipan terdeteksi. Aplikasi dibangun menggunakan pustaka tkinter untuk antarmuka pengguna grafis (GUI) dan terintegrasi dengan pyautogui untuk emulasi keystroke.

Fitur#

Jendela kecil muncul di sudut, menampilkan tombol Connect. Setelah terhubung, tombol Start menjadi terlihat. Menekan tombol Start memulai deteksi kedipan, dan setiap kedipan yang terdeteksi memicu penekanan tombol spacebar.

Keystroke Emulator

Keystroke Emulator#

9. CSV Plotter#

Ringkasan#

CSV Plotter adalah aplikasi berbasis Python yang dirancang untuk memvisualisasikan data dari file CSV. Dibangun menggunakan pustaka tkinter untuk antarmuka pengguna grafis (GUI) dan plotly untuk visualisasi data, alat ini memungkinkan pengguna untuk memuat file CSV, memilih channel data tertentu, dan menghasilkan plot garis interaktif.

Fitur#

Pop-up kecil akan muncul, menyediakan opsi untuk memuat file, memilih channel, dan memplot data.

CSV Plotter

CSV Plotter#

10. EOG Morse Decoder#

Ringkasan#

EOG Morse Decoder adalah aplikasi berbasis Python yang memungkinkan pengguna untuk memasukkan kode Morse menggunakan gerakan mata yang terdeteksi melalui sinyal Elektrookulografi (EOG). Dengan menggerakkan mata ke kiri atau kanan, Anda dapat menghasilkan titik dan garis, dan dengan melakukan kedipan ganda atau triple, Anda dapat mengirim karakter atau backspace. Aplikasi ini ideal untuk komunikasi tanpa tangan dan penelitian aksesibilitas.

Morse Decoder

Morse Decoder#

Fitur#

Jendela GUI akan muncul yang memungkinkan Anda untuk memasukkan kode Morse menggunakan gerakan mata dan menampilkan teks yang didekode secara real-time.

Penempatan Elektroda#

Penempatan elektroda yang tepat sangat penting untuk deteksi sinyal EOG yang akurat. Tabel di bawah menunjukkan konfigurasi elektroda yang direkomendasikan:

Pin Elektroda

Deskripsi

Penempatan

A0P

Channel 1 Positif

Di bawah mata

A0N

Channel 1 Negatif

Di atas mata

A1P

Channel 2 Positif

Di kiri mata kiri

A1N

Channel 2 Negatif

Di kanan mata kanan

REF

Referensi

Bagian tulang di belakang telinga

Note

  • Channel 1 (A0P/A0N) mendeteksi gerakan mata vertikal untuk deteksi kedipan

  • Channel 2 (A1P/A1N) mendeteksi gerakan mata horizontal untuk deteksi kiri/kanan

  • Persiapan kulit dan kualitas kontak elektroda yang tepat sangat penting untuk performa optimal

Electrode Placement Diagram

Electrode Placement Diagram#

Cara Kerja#

  • Akuisisi Sinyal: Aplikasi terhubung ke stream LSL dan terus membaca data EOG vertikal dan horizontal dari dua channel.

  • Filtering: Filter notch (50Hz), filter high-pass (1Hz), dan filter low-pass (10Hz) diterapkan untuk menghilangkan interferensi powerline dan mengisolasi frekuensi yang relevan.

  • Pelacakan Baseline: Baseline rolling dipertahankan untuk EOG horizontal untuk beradaptasi dengan karakteristik sinyal individu.

  • Deteksi Envelope: Envelope sinyal EOG vertikal dihitung untuk deteksi kedipan yang andal.

  • Deteksi Gerakan: Deviasi EOG horizontal dari baseline dianalisis untuk mengklasifikasikan gerakan mata kiri dan kanan.

  • Input Kode Morse:

    • Gerakan mata kiri → Titik (.)

    • Gerakan mata kanan → Garis (-)

    • Kedipan ganda → Mengirim urutan Morse saat ini sebagai huruf

    • Kedipan triple → Backspace (menghapus karakter terakhir)

  • Tampilan GUI: Visualisasi real-time menampilkan threshold deteksi, level sinyal, isi buffer, dan pesan yang didekode.

Menyesuaikan Deteksi untuk Sinyal Neural Anda#

Aplikasi ini menyediakan GUI intuitif untuk menyesuaikan sensitivitas deteksi secara real-time:

Penyesuaian Threshold Interaktif:

  • Threshold Deteksi Kedipan: Klik atau tarik marker orange pada batang deteksi kedipan untuk menyesuaikan threshold (rentang: 40-260). Nilai yang lebih tinggi memerlukan kedipan yang lebih kuat.

  • Threshold Gerakan Mata: Klik atau tarik marker orange pada batang gerakan mata untuk menyesuaikan threshold (rentang: 40-260). Nilai yang lebih tinggi memerlukan gerakan mata yang lebih besar.

Feedback Visual:

  • Batang deteksi kedipan menampilkan nilai envelope saat ini (hijau ketika di bawah threshold, merah ketika di atas)

  • Batang gerakan mata menampilkan deviasi dari baseline (biru ketika di bawah threshold, ungu untuk gerakan kiri, merah untuk gerakan kanan)

  • Marker threshold menampilkan nilai threshold saat ini dan dapat ditarik untuk penyesuaian

Parameter Timing (dapat disesuaikan dalam kode jika diperlukan):

  • BLINK_DEBOUNCE_MS (default: 200ms): Waktu minimum antara deteksi kedipan terpisah

  • DOUBLE_BLINK_MS (default: 1000ms): Jendela waktu untuk deteksi kedipan ganda

  • TRIPLE_BLINK_MS (default: 1500ms): Jendela waktu untuk deteksi kedipan triple

  • EYE_MOVEMENT_DEBOUNCE_MS (default: 750ms): Waktu minimum antara deteksi gerakan mata terpisah

Tips untuk Performa Optimal:

  • Pastikan NPG Lite terisi daya dan tidak terhubung ke laptop pengisi daya atau perangkat bertenaga AC

  • Duduk jauh dari peralatan bertenaga AC

  • Pastikan persiapan kulit dan kualitas kontak elektroda yang tepat. Baca Panduan Persiapan Kulit untuk instruksi detail.

  • Mulai dengan nilai threshold default dan sesuaikan menggunakan slider GUI berdasarkan kekuatan sinyal Anda

  • Pastikan penempatan elektroda yang tepat untuk sinyal EOG vertikal dan horizontal yang bersih

  • Pertahankan posisi pandang netral selama perhitungan baseline awal saat startup

  • Gunakan batang visualisasi real-time untuk memantau kualitas sinyal dan sesuaikan threshold sesuai

Pemecahan Masalah#

  • Jika gerakan tidak terdeteksi dengan andal, gunakan GUI untuk menyesuaikan threshold secara real-time dengan mengklik/menarik marker orange

  • Pastikan elektroda ditempatkan dengan benar: EOG vertikal di atas/di bawah satu mata, EOG horizontal di sudut luar kedua mata

  • Tetap rileks dan pertahankan posisi pandang netral selama perhitungan baseline awal

  • Periksa batang visualisasi real-time untuk memastikan sinyal terdeteksi dengan benar

  • Jika kedipan atau gerakan terlalu sensitif, tingkatkan threshold masing-masing menggunakan slider GUI

  • Jika kedipan atau gerakan tidak cukup sensitif, turunkan threshold menggunakan slider GUI

Buat Aplikasi Kustom#

Anda dapat membuat aplikasi kustom menggunakan framework yang disediakan dengan mengikuti langkah-langkah berikut:

  1. Konfigurasi Metadata Aplikasi:

Edit file apps.yaml di folder config dengan detail aplikasi Anda:

- title: "Judul Aplikasi Anda"
  icon: "path/to/your/icon.png"
  color: "your_hex_color"
  script: "path/to/{app_name}.py"
  description: "Deskripsi singkat aplikasi Anda"
  category: "Kategori Anda"

Tambahkan ini sebagai entri baru dalam daftar YAML. Ganti semua placeholder dengan detail aktual Anda.

Note

  • Path icon harus relatif terhadap direktori root aplikasi

  • color harus dalam format HEX (mis., “#FF5733”)

  • Path script harus menunjuk ke file Python Anda

  1. Buat skrip aplikasi:

Buat skrip Python baru di direktori utama dengan nama aplikasi Anda. Skrip harus berisi:

  • Penanganan koneksi stream LSL untuk menerima data perangkat

  • Komponen antarmuka pengguna menggunakan PyQt5/PyQtGraph

  • Logika pemrosesan data untuk sinyal yang masuk

Tip

Gunakan aplikasi yang ada di repositori sebagai implementasi referensi untuk: - setup lsl dan akuisisi data - Tata letak UI canggih - Contoh pemrosesan sinyal - Optimasi performa