This is an old revision of the document!


Pulsoximetru

Autor

Introducere

Proiectul presupune implementarea unui pulsoximetru, prin masurarea pulsului si calcularea concentratiei de SPO2 si afisand aceste 2 informatii pe un ecran LCD.

Astfel priectul poate avea si o utilitate practica, permitand masurarea cu aproximatiea concentratiei de oxigen, nu doar in contextul pandemiei, ci si alte diferite ocazii, incurajand utilizatorul sa se mentina sanatos.

Descriere generală

Senzorul de ritm cardiac preia pulsul de la deget si trimite datele catre placa de baza, care le prelucreaza si care afiseaza pe un ecran LCD la final numarul de batai pe minut si concentratia de SPO2. Astfel, utilizatorul pune degetul pe senzor si va vedea pe ecran masuratorile dorite.

pulsoximetru_final_poza.jpeg

Schema bloc

Hardware Design

Lista de piese:

  • Arduino Uno
  • Breadboard
  • Display OLED 0.96 I2C
  • Modul senzor ritm cardiac GY-MAX30100
  • Modul LCD tip IC1602
  • Buzzer pasiv
  • Led Rosu
  • Led verde
  • Fire de legatura
  • 2 rezistente 10 KOhm

Schema electrica

Software Design

Descrierea codului:

  • mediu de dezvoltare: Arduino IDE
  • Biblioteci folosite:
    • OLED display: OakOLED.h, Adafruit_SSD1306.h, Fonts/FreeMonoBold9pt7b.h
    • LCD: LiquidCrystal_I2C.h, Wire.h
    • Senzor: “MAX30100_PulseOximeter.h”
  • Algoritmi și structuri de date:
    • logică simplă (if, while, for, etc)
    • structuri de bază C (variabile, constante, etc)
  • Functii implementate
    • setup(): sunt initializate LCD-ul si display-ul OLED, iar pe LCD este printat titlu proiectului. Dupa aceea este verificat daca senzorul este initializat corect. In cazul in care este, se afiseaza mesajul 'SUCCESS', este setat fontul pentru OLED, este pornit senzorul si este setata functia de callback pentru fiecare bataie detectata. Daca initializarea esueaza, pe OLED va aparea mesajul 'FAILED' si se intra intr-un loop. La final mai sunt setate ledurile GREEN si RED si buzzerul ca OUTPUT.
    • loop(): masurarea propriu-zisa incepe abia dupa 2 secunde de la terminarea functiei de setup. Dupa aceea la fiecare secunda vor fi facute masuratorile dorite. Cu functiile de biblioteca getHeartRate() si getSPO2() aflu pulsul, respectiv concentratia de SPO2 din sange. Atunci cand nu este detectat niciun deget pe senzor (cand SPO2 masurat este zero), se aprinde ledul rosu si stins ledul verde. Analog, atunci cand degetul este detectat pe senzor, ledul verde se aprinde si ledul rosu se stinge. Daca degetul este detectat, valorile masurate sunt printate pe display. Altfel, va fi printat mesajul 'SPO2…', sugerand faptul ca degetul nu este detectat sau ca nu s-a terminat masurarea valorilor dorite.
    • onBeatDetected(): functie care este apelata de fiecare data cand este detectata o bataie a inimii. Aceasta afiseaza pe display un bitmap cu o inima si apeleaza functia buzz().
    • buzz(): functie care face buzzerul sa sune. Sunetul este produs prin apelarea de 80 de ori a digitalWrite de HIGH/LOW pe portul 8 la o frecventa mare.

Rezultate obtinute

Bibliografie/Resurse

pm/prj2021/amocanu/pulsoximetru.1622643486.txt.gz · Last modified: 2021/06/02 17:18 by petru.sicoe
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