M-am gandit sa fac un pulsoximetru pentru a-mi masura pulsul si nivelul de saturatie de oxigen din organism
Hemoglobina ce transportă oxigenul (oxihemoglobina) absoarbe radiaţii infraroşii (800-940 nm), iar hemoglobina fără oxigen absoarbe lumină roşie din spectrul vizibil (600-70 nm). Măsurătorile au la bază un principiu optic, senzorii putând fi plasaţi la nivelul degetului, lobului urechii, cât şi antebrațului, având două surse de emisie, una de lumină roşie în spectrul vizibil cu lungime de undă de 660 nm (650 nm după unii autori) şi una invizibilă în spectrul infraroşu cu lungime de undă de 940 nm (950 nm după unii autori), precum şi cel puţin un fotodetector. În infraroşu coeficientul de absorbţie al oxihemoglobinei este mai mare de cât al hemoglobinei reduse (neoxigenate). Partea electronică măsoară raportul lumină pulsatilă/lumină nepulsatilă și îl exprimă în lungimi de undă, în spectrul roșu şi infraroşu, şi ulterior il transpune în procent de saturaţie în oxigen.
- Regulator de Tensiune de 5V L7805 TO-220
- Arduino Pro Mini
- Ecran OLED 0.96” comunicare I2C
- C̶o̶n̶e̶c̶t̶o̶r̶ ̶B̶a̶t̶e̶r̶i̶e̶ ̶9̶V̶ Modul Adaptor Micro USB
- Senzor max30102
- Buton
Schema functionala: https://imgur.com/a/qKSKUsM
Poza cu pulsoximetrul (partea hardware): https://imgur.com/a/Zr9ZHea
mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) librării şi surse 3rd-party (e.g. Procyon AVRlib) algoritmi şi structuri pe care plănuiţi să le implementaţi (etapa 3) surse şi funcţii implementate
Modulul senzorial max30102 integrează un LED roșu și un LED infraroșu, un fotodetector, un dispozitiv optic și un circuit electronic cu zgomot redus cu suprimarea luminii ambientale. Odată pornit pulsoximetrul, se pune un deget pe senzor și se apasă ușor (pentru a nu pune presiune pe senzor să se strice) pentru a se citi ritmul cardiac si concentrația de hemoglobină oxigenată în timp real. În timp ce degetul stă amplasat, se poate apăsa degetul pentru a arăta valorile curente. După o perioadă de inactivitate, pulsoximetrul se va stinge automat.
#include “ssd1306h.h”
#include “MAX30102.h”
#include “Pulse.h”
Acestea sunt header-ele pentru clasele care au fost integrate pentru componentele circuitului
#include “avr/pgmspace.h”: Această bibliotecă este specifică pentru platforma AVR și oferă funcții și macro-uri pentru lucrul cu memorie programabilă (flash) pe microcontrolerele AVR. Memoria programabilă este utilizată pentru a stoca codul program al microcontrolerului. Biblioteca “avr/pgmspace.h” oferă funcții și macro-uri pentru a accesa și manipula datele stocate în memoria program.
#include “EEPROM.h”: Această bibliotecă oferă funcții pentru lucrul cu memoria EEPROM (Electrically Erasable Programmable Read-Only Memory) pe microcontrolerele AVR. EEPROM este o memorie non-volatilă utilizată pentru stocarea datelor care trebuie menținute chiar și atunci când dispozitivul este alimentat. Biblioteca “EEPROM.h” oferă funcții pentru a scrie și citi date din memoria EEPROM a microcontrolerului AVR.
#include “avr/sleep.h”: Această bibliotecă oferă funcții și macro-uri pentru gestionarea modului de somn (sleep mode) pe microcontrolerele AVR. Modul de somn permite microcontrolerului să intre într-o stare de economisire a energiei prin reducerea consumului de curent la nivel minim. Biblioteca “avr/sleep.h” oferă funcții pentru a controla modul de somn al microcontrolerului, cum ar fi setarea modului de somn, activarea sau dezactivarea întreruperilor în timpul somnului și altele.
Videoclipul cu pulsoximetrul functional: https://youtu.be/p2UwBuCtMiE
1. Merge ca uns. Poate ar fi mers sa folosesc un senzor mai bun, dar isi face treaba.
2. Mi-am redescoperit pasiunea pentru asamblare si inginerie. Partea de hardware a fost cea mai interesanta si placuta, de asemenea si cea mai frustranta, etapa a proiectului.
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.
Cod Arduino (fara clasele in C++ pentru fiecare componenta): nanopulseppg.zip
05.05 - ideea de pulsoximetru imi vine in minte
07.05 - research si planificare
08.05 - lista de cumparaturi facuta
11.05 - ajung piesele. partea de hardware se face
13.05 - s-a ars un regulator :( fac switch de la alimentare cu baterie la cablu micro usb
16.05 - cursa pana la HobbyMarket Berceni sa iau adaptorul pentru micro usb
18.05 - retusare hardware
20.05 - implementare software