Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2025:rnedelcu:razvan.rotaru1601 [2025/05/13 10:12]
razvan.rotaru1601
pm:prj2025:rnedelcu:razvan.rotaru1601 [2025/05/28 15:22] (current)
razvan.rotaru1601
Line 1: Line 1:
-====== Real-time ECG Analyzer ​ ======+====== Real-time ECG Analyzer ====== 
 ===== Introducere ===== ===== Introducere =====
-   ​* ​Proiectul ​consta intr-un sitem de monitorizare a activitatii ​cardiace (ECG), ​alcatuit ​dintr-un modul AD8232 conectat la un Marble Pico. Dispozitivul ​afiseaza in timp real waveform-ul ​activitatii ​cardiace ​si frecventa cardiaca+ 
-   ​Scopul principal este dezvoltarea dispozitivului care va oferi datele despre frecventa cardiaca in timp real. De asemenea, va permite si vizualizarea lor in timp real intr-aplicatie. +Proiectul ​constă într-un sistem ​de monitorizare a activității ​cardiace (ECG) în timp realalcătuit ​dintr-un modul AD8232 conectat la un Marble Pico. Dispozitivul ​afișează ​waveform-ul ​activității ​cardiace ​și calculează frecvența cardiacă cu precizie ridicată
-   ​Am vazut mai multe proiecte care foloseau modului dar inregistrau doar frecventa cardiaca asa ca am vrut sa il fac mai avansat. + 
-   ​Ar putea fi util ca o varianta mai light pentru ​dispozitivele ecg din industrie.+**Obiective principale:​** 
 +  * **Monitorizare continuă:​** Achiziție de date ECG la 250Hz pentru ​rezoluție temporală optimă 
 +  * **Procesare ​avansată:** Implementarea algoritmului Pan-Tompkins pentru detectarea complexelor QRS 
 +  **Interfață intuitivă:​** Aplicație desktop cu afișare în timp real și analiză calității semnalului 
 +  * **Portabilitate:​** Design compact, potrivit ​pentru ​monitorizare ambulatorie 
 + 
 +**Motivația proiectului:​** Majoritatea soluțiilor existente se limitează la măsurarea frecvenței cardiaceAcest proiect oferă o analiză completă a semnalului ECG, incluzând filtrarea avansată DSP și detectarea automată a problemelor de conectare. 
 ===== Descriere generală ===== ===== Descriere generală =====
-Utilizatorul va introduce electrozii in jack, iar daca nu sunt introdusi, va fi aprins LED-ul rosu, verde daca sunt introdusi. Dupa se va conecta la calculator dispozitivul prin USB si se va deschide aplicatia. Aplicatia va incepe automat sa afiseze datele colectate de la electrozi procesate. Zgomotul produs de miscarea utilizatorului,​ de 60hz sau altele care ar putea aparea si deforma semnalul vor fi filtrate folosind tehnici DSP. 
  
-{{razvan.rotaru1601-schema_bloc.png?​700x500}}+**Workflow utilizator:​** 
 +  - **Conectarea electrozilor** - LED-uri de stare indică conectarea corectă (roșu = deconectat, verde = conectat) 
 +  - **Interfața USB** - Conectare automată la calculator prin USB CDC 
 +  - **Lansarea aplicației** - Auto-detectare dispozitiv și inițializare 
 +  - **Monitorizare live** - Afișare continuă cu analiza calității semnalului 
 + 
 +**Procesarea semnalului:​** 
 +  * **Filtrare hardware:** Filtru low-pass pasiv la ~17Hz pentru eliminarea zgomotului de înaltă frecvență 
 +  * **Algoritm Pan-Tompkins:​** Detectare robustă a complexelor QRS 
 + 
 +{{ razvan.rotaru1601-schema_bloc.png?​700x500 }}
  
 ===== Hardware Design ===== ===== Hardware Design =====
  
-  ​* Lista piese +**Lista ​componente:​** 
-    * AD8232 + 
-    * Marble Pico +^ Componentă ^ Specificații ^ Rol ^ 
-    ​breadboard +| **AD8232** | Amplificator instrumental ECG | Achiziție și pre-procesare semnal | 
-    condensator ​0.47uF +| **Marble Pico** | RP2040, 264KB RAM | Procesare și comunicație | 
-    rezistor 20kOhm +**Condensator** | 0.47µF | Filtru low-pass | 
-    rezistente ​ +| **Rezistor*| 20kΩ | Polarizare amplificator | 
-    electrozi +**Electrozi** | Gel solid | Interfață bioelectrică | 
-  * Interfete Hardware folosite + 
-    ​* GPIO pentru starea electrozilor +**Interfețe hardware utilizate:​** 
-    * UART pentru a transmite datele ​la aplicatia software +  * **GPIO pins:** Monitorizare stare electrozi (leads-off detection) 
-    Timere ​+ ADC pentru a citi datele de la modulul AD8232 +  * **UART/USB CDC:** Transmisie date la 115200 baud 
-  * Filtru ​low-pass pasiv de ~17Hz +  **Timer ​+ ADC:** Sampling sincronizat ​la 250Hz, rezoluție 12-bit 
-{{razvan.rotaru1601-hardware.jpg}}+  * **LED indicators:​** Feedback vizual stare sistem 
 + 
 +**Circuit de filtrare:​** 
 +Filtrul ​low-pass pasiv (R=20kΩ, C=0.47µF) oferă o frecvență ​de tăiere fc = 1/(2πRC) ≈ 17Hz, eliminând zgomotul muscular și interferențele de înaltă frecvență. 
 + 
 +{{ razvan.rotaru1601-hardware.jpg?​600x400 ​}}
  
 ===== Software Design ===== ===== Software Design =====
-Cod firmware: 
-  * Simplu timer setat la o frecventa de 250hz (4ms) 
-  * Sampling pe ADC 
-  * Trimitere peste UART/USB a datelor in format int16_t 
-Cod software calculator: 
-  * Meniu selectare interfata seriala / auto-detectare Pico 
-  * Afisare graf ECG in timp real cu pentru ultimele 6s/​1500puncte 
-  * Afisare heartbeat calculat ca moving average 
-  * Afisare calitate semnal (deconectat,​ electrozi deconectati,​ ok) 
-  * Afisare consola debug 
  
-===== Rezultate Obţinute =====+**Firmware (Marble Pico):** 
 +<code c> 
 +#define SAMPLING_INTERVAL_MS 4 // 250 Hz
  
-<note tip+bool timer_callback(repeating_timer_t *rt) { 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. +    gpio_put(LED_PIN,​ !gpio_get(LED_PIN));​ 
-</​note>​+     
 +    int16_t adc_value = -1; 
 +    bool leads_connected = true; 
 +     
 +    if (gpio_get(LO_PLUS) || gpio_get(LO_MINUS)) { 
 +        leads_connected = false; 
 +    } 
 +     
 +    if (leads_connected) { 
 +        adc_value = adc_read();​ 
 +    } 
 +    printf("​%d\n",​ adc_value);​ 
 +    return true; 
 +
 +</code
 + 
 +**Caracteristici firmware:​** 
 +  * **Timer repetat:** 4ms interval pentru sampling la 250Hz 
 +  * **Detecție electrozi:​** Verificare stare LO+ și LO- pentru conectare 
 +  * **Output format:** Valori ADC printate ca int16_t prin USB CDC 
 +  * **LED indicator:​** Toggle pentru feedback vizual 
 + 
 +**Aplicația desktop:​** 
 + 
 +**Funcționalități:​** 
 +  * **Citire date:** Parse serial input pentru valori ADC 
 +  * **Grafic real-time:​** Afișare waveform ECG pentru ultimele 6 secunde 
 +  * **Algoritm Pan-Tompkins:​** Detectare complexe QRS pentru calculul heart rate 
 +  * **Status:** Afișare stare electrozi și calitate semnal 
 + 
 +{{ razvan.rotaru1601-software.png }} 
 + 
 +===== Rezultate Obținute ===== 
 + 
 +**Funcționalități implementate:​** 
 +  * **Sampling stabil:** 250Hz cu timer hardware 
 +  * **Detecție electrozi:​** LED indicators pentru starea conexiunii 
 +  * **Transmisie USB:** Date ECG în timp real către aplicația desktop 
 +  * **Interfață grafică:** Afișare waveform și calculul basic al heart rate-ului 
 + 
 +**Potențial de scalare:​** 
 +Design-ul permite extinderea cu mai multe canale ECG prin multiplexarea ADC-ului și procesarea paralelă.
  
 ===== Concluzii ===== ===== Concluzii =====
  
-===== Download =====+**Lecții învățate:​** 
 +  * **Zgomotul** este o problemă majoră pentru semnalele ECG de amplitudine mică 
 +  * **Sursa de alimentare** introduce interferențe care afectează calitatea semnalului 
 +  * **Filtrarea hardware** (condensator + rezistor) ajută dar nu elimină complet zgomotul
  
-<note warning> +**Dezvoltări viitoare:** 
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului:​ surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şcopiere automată pe uC crează întotdeauna o impresie bună ;-).+  - **Îmbunătățirea filtrării** - filtre digitale mai avansate în software 
 +  - **PCB dedicat** pentru reducerea zgomotului șa dimensiunilor 
 +  - **Algoritmi mai buni** pentru detectarea heart rate-ului în prezența zgomotului 
 +  - **Interfață mai user-friendly** cu setări configurabile
  
-Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**Namespace-ul în care se încarcă fişierele este de tipul **:pm:​prj20??:​c?​** sau **:​pm:​prj20??:​c?:​nume_student** (dacă este cazul). **Exemplu:​** Dumitru Alin, 331CC -> **:​pm:​prj2009:​cc:​dumitru_alin**. +===== Download ===== 
-</​note>​+https://​github.com/​RouterInfoMan/​ecg-pm 
 + 
 +**Conține:** 
 +  ​Cod sursă firmware (C/C++) 
 +  ​Aplicație desktop (Python/​Qt) 
 +  ​Documentație hardware ​(schemă)
  
 ===== Jurnal ===== ===== Jurnal =====
  
-  * Saptamana 27.03 - 4.05+  ​* **Saptamana 27.03 - 4.05**
     * Am asamblat legatura Marble Pico - AD8232 si simulat basic polling fara timere     * Am asamblat legatura Marble Pico - AD8232 si simulat basic polling fara timere
     * Am trimis datele prin UART la un serial plotter     * Am trimis datele prin UART la un serial plotter
 +    * **Probleme întâlnite:​** Zgomot excesiv, sampling neuniform
     * Rezultatul obtinut     * Rezultatul obtinut
-{{razvan.rotaru1601-ecg_output.jpg?​400x400}}+{{ razvan.rotaru1601-ecg_output.jpg?​400x400 }}
  
-  * Saptamana 5.05 - 11.05 +  ​* **Saptamana 5.05 - 11.05** 
-    * Am adaugat timere ​si simplificat ​firmware-ul +    * Am adaugat timere ​hardware pentru sampling precis la 250Hz 
-    * Am scris mare parte din aplicatia software+    * Am refactorizat codul firmware ​pentru eficiență 
 +    * Am început dezvoltarea aplicației desktop cu interfață grafică 
 +    * **Milestone:​** Achiziție stabilă cu timer repetat
  
-===== Bibliografie/​Resurse =====+  * **Saptamana 12.05 - 18.05** 
 +    * Am implementat baza algoritmului Pan-Tompkins pentru detectarea QRS 
 +    * Am dezvoltat aplicația desktop pentru afișarea graficului în timp real 
 +    * **Problemă:​** Algoritmul nu detecta corect complexele QRS din cauza configurării greșite
  
-<​note>​ +  * **Saptamana 19.05 - 25.05** 
-Listă ​cu documente, datasheet-uri, resurse Internet folosite, eventual grupate ​pe **Resurse Software** şi **Resurse ​Hardware**. +    * Am corectat problemele ​cu algoritmul Pan-Tompkins (configurare filtru digital) 
-</note>+    * Am testat sistemul ​pe mai multe persoane pentru validarea funcționării 
 +    ​Am îmbunătățit interfața aplicației cu indicatori de stare 
 +    ​* **Rezultat:** Sistem funcțional care afișează ECG și calculează heart rate-ul 
 + 
 +===== Bibliografie/​Resurse ​===== 
 +https://​github.com/​GroundStudio/​GroundStudio_Marble_Pico/​blob/​main/​Documentation/​REV0.0.3/​Datasheet%20GroundStudio%20Marble%20Pico%20REV%201.1.pdf
  
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
pm/prj2025/rnedelcu/razvan.rotaru1601.1747120362.txt.gz · Last modified: 2025/05/13 10:12 by razvan.rotaru1601
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0