Differences

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

Link to this comparison view

pm:prj2025:rnedelcu:razvan.rotaru1601 [2025/05/14 19:33]
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.+ 
 +**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 }} {{ razvan.rotaru1601-schema_bloc.png?​700x500 }}
Line 12: Line 29:
 ===== 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 pentru filtrare zgomot+  **Timer ​+ ADC:** Sampling sincronizat ​la 250Hz, rezoluție 12-bit 
 +  * **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 }} {{ razvan.rotaru1601-hardware.jpg?​600x400 }}
  
 ===== Software Design ===== ===== Software Design =====
-Cod firmware: + 
-  * Simplu timer setat la o frecventa de 250hz (4ms) +**Firmware (Marble Pico):** 
-  * Sampling pe ADC +<code c> 
-  * Trimitere peste UART/USB a datelor in format int16_t +#define SAMPLING_INTERVAL_MS 4 // 250 Hz 
-Cod software calculator+ 
-  * Meniu selectare interfata seriala / auto-detectare Pico +bool timer_callback(repeating_timer_t *rt) { 
-  * Afisare graf ECG in timp real cu pentru ultimele ​6s/​1500puncte +    gpio_put(LED_PIN,​ !gpio_get(LED_PIN));​ 
-  * Procesare semnal calculat cu algoritmul ​Pan-Tompkins +     
-  ​Afisare heartbeat calculat ca moving average +    int16_t adc_value = -1; 
-  * Afisare ​calitate semnal ​(deconectat,​ electrozi deconectati,​ ok) +    bool leads_connected = true; 
-  * Afisare consola debug+     
 +    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 }} {{ razvan.rotaru1601-software.png }}
  
-===== Rezultate Obţinute =====+===== Rezultate Obținute =====
  
-<note tip> +**Funcționalități implementate:​** 
-Care au fost rezultatele obţinute ​în urma realizării proiectului vostru. +  * **Sampling stabil:** 250Hz cu timer hardware 
-</​note>​+  * **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**
 +    * Am adaugat timere hardware pentru sampling precis la 250Hz
 +    * Am refactorizat codul firmware pentru eficiență
 +    * Am început dezvoltarea aplicației desktop cu interfață grafică
 +    * **Milestone:​** Achiziție stabilă cu timer repetat
  
-  * Saptamana ​5.05 - 11.05 +  ​* **Saptamana ​12.05 - 18.05** 
-    * Am adaugat timere si simplificat firmware-ul +    * Am implementat baza algoritmului Pan-Tompkins pentru detectarea QRS 
-    * Am scris mare parte din aplicatia software+    * 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
  
-===== Bibliografie/​Resurse =====+  * **Saptamana 19.05 - 25.05** 
 +    * Am corectat problemele cu algoritmul Pan-Tompkins (configurare filtru digital) 
 +    * 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
  
-<​note>​ +===== Bibliografie/​Resurse ​===== 
-Listă cu documente, datasheet-uri,​ resurse Internet folosite, eventual grupate pe **Resurse ​Software** şi **Resurse Hardware**. +https://​github.com/​GroundStudio/​GroundStudio_Marble_Pico/​blob/​main/​Documentation/​REV0.0.3/​Datasheet%20GroundStudio%20Marble%20Pico%20REV%201.1.pdf
-</note>+
  
 <​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.1747240439.txt.gz · Last modified: 2025/05/14 19:33 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