Cuprins:

Cum se afișează ritmul cardiac pe ecranul STONE cu Ar: 31 de pași
Cum se afișează ritmul cardiac pe ecranul STONE cu Ar: 31 de pași

Video: Cum se afișează ritmul cardiac pe ecranul STONE cu Ar: 31 de pași

Video: Cum se afișează ritmul cardiac pe ecranul STONE cu Ar: 31 de pași
Video: Top 5 cele mai bune brățări fitness! Modele de la Huawei și Samsung! Vezi și celelalte variante! 2024, Iulie
Anonim
Cum se afișează ritmul cardiac pe ecranul STONE cu Ar
Cum se afișează ritmul cardiac pe ecranul STONE cu Ar

scurta introducere

Cu ceva timp în urmă, am găsit un modul senzor de ritm cardiac MAX30100 la cumpărături online. Acest modul poate colecta date de oxigen din sânge și ritmul cardiac ale utilizatorilor, care sunt, de asemenea, simple și convenabile de utilizat. Conform datelor, am constatat că există biblioteci MAX30100 în fișierele bibliotecii Arduino. Adică, dacă folosesc comunicarea dintre Arduino și MAX30100, pot apela direct fișierele bibliotecii Arduino fără a fi nevoie să rescriu fișierele driverului. Acesta este un lucru bun, așa că am cumpărat modulul MAX30100.

Pasul 1: Am decis să folosesc Arduino pentru a verifica funcția de colectare a ritmului cardiac și a oxigenului din sânge a MAX30100

Am decis să folosesc Arduino pentru a verifica funcția de colectare a ritmului cardiac și a oxigenului din sânge a MAX30100
Am decis să folosesc Arduino pentru a verifica funcția de colectare a ritmului cardiac și a oxigenului din sânge a MAX30100

Notă: acest modul în mod implicit numai cu comunicații MCU la nivel de 3,3 V, deoarece implicit folosește rezistența la tragere pin IIC de 4,7 K la 1,8 V, deci nu există nicio comunicare cu Arduino în mod implicit, dacă doriți să comunicați cu Arduino și au nevoie de 4,7 K din rezistența de tracțiune a pinului IIC conectată la pinul VIN, acest conținut va fi introdus în spatele capitolului.

Pasul 2: Sarcini funcționale

Înainte de a începe acest proiect, m-am gândit la câteva caracteristici simple:

  • Au fost colectate date privind ritmul cardiac și datele privind oxigenul din sânge
  • Datele privind ritmul cardiac și oxigenul din sânge sunt afișate printr-un ecran LCD

Acestea sunt singurele două caracteristici, dar dacă vrem să o implementăm, trebuie să ne gândim mai mult:

  • Ce MCU master este folosit?
  • Ce fel de afișaj LCD?

Așa cum am menționat mai devreme, folosim Arduino pentru MCU, dar acesta este un proiect de afișare LCD Arduino, deci trebuie să alegem modulul corespunzător de afișare LCD. Plănuiesc să folosesc ecranul LCD cu port serial. Am un display STONE STVI070WT-01 aici, dar dacă Arduino trebuie să comunice cu acesta, este necesar MAX3232 pentru a face conversia de nivel. Apoi, materialele electronice de bază sunt determinate după cum urmează:

1. Placă de dezvoltare Arduino Mini Pro

2. Modulul senzorului de ritm cardiac și de oxigen din sânge MAX30100

3. STONE STVI070WT-01 Modul LCD de afișare a portului serial

4. Modulul MAX3232

Pasul 3: Introducere hardware

MAX30100

MAX30100 este o soluție integrată de senzori de oximetrie a pulsului și de monitorizare a ritmului cardiac. Acesta combină două LED-uri, un fotodetector, optică optimizată și procesare a semnalului analogic cu zgomot redus pentru a detecta semnalele de oximetrie a pulsului și ritmul cardiac.

MAX30100 funcționează de la surse de alimentare de 1,8 V și 3,3 V și poate fi deconectat prin intermediul unui software cu curent de așteptare neglijabil, permițând sursei de alimentare să rămână conectată în orice moment.

Pasul 4: Aplicații

● Dispozitive purtabile

● Dispozitive pentru asistent de fitness

● Dispozitive de monitorizare medicală

Pasul 5: Beneficii și caracteristici

1, oximetrul de puls complet și senzorul de ritm cardiac Soluția simplifică designul

  • LED-uri integrate, senzor foto și front-analog analogic de înaltă performanță
  • Mic 5,6 mm x 2,8 mm x 1,2 mm Sistem cu 14 pini îmbunătățit optic în pachet

2 Operation Funcționarea cu putere redusă crește durata de viață a bateriei pentru dispozitivele purtabile

  • Rată de eșantionare programabilă și curent LED pentru economii de energie
  • Curent de oprire ultra-scăzut (0,7µA, tip)

3 Fun Funcționalitatea avansată îmbunătățește performanța de măsurare

  • SNR ridicat oferă o rezistență robustă a artefactelor la mișcare
  • Anulare integrată a luminii ambientale
  • Capacitate mare a ratei de eșantionare
  • Capacitate de ieșire rapidă a datelor

Pasul 6: Principiul de detectare

Principiul de detectare
Principiul de detectare

Doar apăsați degetul pe senzor pentru a estima saturația pulsului de oxigen (SpO2) și pulsul (echivalent cu bătăile inimii).

Pulsoximetrul (oximetrul) este un mini-spectrometru care folosește principiile diferitelor spectre de absorbție a eritrocitelor pentru a analiza saturația de oxigen a sângelui. Această metodă de măsurare rapidă și în timp real este de asemenea utilizată pe scară largă în multe referințe clinice. Nu voi introduce MAX30100 prea mult, deoarece aceste materiale sunt disponibile pe Internet. Prietenii interesați pot căuta informațiile acestui modul de testare a ritmului cardiac pe Internet și pot înțelege mai bine principiul de detectare.

Pasul 7: STONE STVI070WT-01

STONE STVI070WT-01
STONE STVI070WT-01

Introducere în afișaj

În acest proiect, voi folosi STONE STVI070WT-01 pentru a afișa datele despre ritmul cardiac și oxigenul din sânge. Cipul driverului a fost integrat în interiorul ecranului de afișare și există un software pe care utilizatorii îl pot utiliza. Utilizatorii trebuie doar să adauge butoane, casete de text și alte elemente logice prin imaginile UI proiectate, apoi să genereze fișiere de configurare și să le descarce în ecranul de afișare pentru a rula. Afișarea STVI070WT-01 comunică cu MCU prin semnal uart-rs232, ceea ce înseamnă că trebuie să adăugăm un cip MAX3232 pentru a converti semnalul RS232 în semnal TTL, astfel încât să putem comunica cu MCU Arduino.

Pasul 8: Dacă nu sunteți sigur cum să utilizați MAX3232, vă rugăm să consultați următoarele imagini:

Dacă nu sunteți sigur cum să utilizați MAX3232, vă rugăm să consultați următoarele imagini
Dacă nu sunteți sigur cum să utilizați MAX3232, vă rugăm să consultați următoarele imagini

Dacă credeți că conversia de nivel este prea supărătoare, puteți alege alte tipuri de afișaje STONE, dintre care unele pot emite direct semnal uart-ttl.

Site-ul oficial conține informații detaliate și introducere:

Pasul 9: Dacă aveți nevoie de tutoriale video și tutoriale de utilizat, îl puteți găsi și pe site-ul oficial

Dacă aveți nevoie de tutoriale video și tutoriale de utilizat, îl puteți găsi și pe site-ul oficial
Dacă aveți nevoie de tutoriale video și tutoriale de utilizat, îl puteți găsi și pe site-ul oficial

Pasul 10: Pași de dezvoltare

Trei pași ai dezvoltării ecranului de afișare STONE:

  • Proiectați logica de afișare și logica butoanelor cu software-ul STONE TOOL și descărcați fișierul de proiectare în modulul de afișare.
  • MCU comunică cu modulul de afișaj LCD STONE prin portul serial.
  • Cu datele obținute la pasul 2, MCU face alte acțiuni.

Pasul 11: Instalarea software-ului STONE TOOL

Instalarea software-ului STONE TOOL
Instalarea software-ului STONE TOOL

Descărcați cea mai recentă versiune a software-ului STONE TOOL (în prezent TOOL2019) de pe site și instalați-l.

După instalarea software-ului, se va deschide următoarea interfață:

Faceți clic pe butonul „Fișier” din colțul din stânga sus pentru a crea un proiect nou, despre care vom discuta mai târziu.

Pasul 12: Arduino

Arduino este o platformă de prototip electronic open source, ușor de utilizat și ușor de utilizat. Include partea hardware (diverse plăci de dezvoltare care sunt conforme cu specificațiile Arduino) și partea software (Arduino IDE și kituri de dezvoltare conexe).

Partea hardware (sau placa de dezvoltare) constă dintr-un microcontroler (MCU), memorie Flash (Flash) și un set de interfețe universale de intrare / ieșire (GPIO), la care vă puteți gândi ca o placă de bază pentru microcomputer. Partea software este compusă în principal din Arduino IDE pe PC, pachet de asistență la nivel de bord (BSP) și bibliotecă bogată de funcții terță parte. Cu Arduino IDE, puteți descărca cu ușurință BSP asociat cu placa de dezvoltare și bibliotecile de care aveți nevoie. pentru a vă scrie programele. Arduino este o platformă open source. Până în prezent, au existat multe modele și multe controlere derivate, inclusiv Arduino Uno, Arduino Nano, ArduinoYun etc. ca Intel Galileo și NodeMCU prin introducerea BSP.

Arduino detectează mediul înconjurător printr-o varietate de senzori, controlând luminile, motoarele și alte dispozitive pentru a alimenta și a influența mediul. Microcontrolerul de pe placă poate fi programat cu un limbaj de programare Arduino, compilat în binare și ars în microcontroler. pentru Arduino este implementat cu limbajul de programare Arduino (bazat pe cablare) și mediul de dezvoltare Arduino (bazat pe procesare). Proiectele bazate pe Arduino pot conține numai Arduino, precum și Arduino și alte software-uri care rulează pe PC și comunică cu fiecare altele (cum ar fi Flash, Processing, MaxMSP).

Pasul 13: Mediul de dezvoltare

Mediu de dezvoltare
Mediu de dezvoltare

Mediul de dezvoltare Arduino este Arduino IDE, care poate fi descărcat de pe Internet.

Conectați-vă la site-ul oficial al Arduino și descărcați software-ul https://www.arduino.cc/en/Main/Software?setlang=c… După instalarea Arduino IDE, la deschiderea software-ului va apărea următoarea interfață:

Arduino IDE creează în mod implicit două funcții: funcția de configurare și funcția de buclă. Există multe introduceri Arduino pe Internet. Dacă nu înțelegeți ceva, puteți merge pe Internet pentru a-l găsi.

Pasul 14: Procesul de implementare a proiectului LCD Arduino

Procesul de implementare a proiectului LCD Arduino
Procesul de implementare a proiectului LCD Arduino

conexiune hardware

Pentru a ne asigura că următorul pas în scrierea codului se desfășoară fără probleme, trebuie mai întâi să determinăm fiabilitatea conexiunii hardware.

Doar patru piese de hardware au fost utilizate în acest proiect:

1. Placa de dezvoltare Arduino Mini pro

2. STONE STVI070WT-01 ecran tft-lcd

3. MAX30100 senzor de ritm cardiac și oxigen din sânge

4. MAX3232 (rs232-> TTL) Placa de dezvoltare Arduino Mini Pro și ecranul de afișare TFT-LCD STVI070WT-01 sunt conectate prin UART, care necesită conversie de nivel prin MAX3232, iar apoi placa de dezvoltare Arduino Mini Pro și modulul MAX30100 sunt conectate prin Interfață IIC. După ce am gândit clar, putem desena următoarea imagine de cablare:

Pasul 15:

Imagine
Imagine

Asigurați-vă că nu există erori în conexiunea hardware și treceți la pasul următor.

Pasul 16: Proiectarea interfeței utilizator TFT LCD

Proiectare interfață utilizator TFT LCD
Proiectare interfață utilizator TFT LCD

În primul rând, trebuie să proiectăm o imagine de afișare UI, care poate fi proiectată de PhotoShop sau alte instrumente de proiectare a imaginilor. După proiectarea imaginii de afișare UI, salvați imaginea în format JPG.

Deschideți software-ul STONE TOOL2019 și creați un nou proiect:

Pasul 17: Eliminați imaginea care a fost încărcată implicit în noul proiect și adăugați imaginea UI pe care am proiectat-o

Eliminați imaginea care a fost încărcată implicit în noul proiect și adăugați imaginea UI pe care am proiectat-o
Eliminați imaginea care a fost încărcată implicit în noul proiect și adăugați imaginea UI pe care am proiectat-o

Pasul 18: Adăugați componenta de afișare a textului

Adăugați componenta de afișare a textului
Adăugați componenta de afișare a textului

Adăugați componenta de afișare a textului, proiectați cifra de afișare și punctul zecimal, obțineți locația de stocare a componentei de afișare a textului în afișaj.

Efectul este după cum urmează:

Pasul 19:

Adresa componentei de afișare a textului:

  • Stație conexiune: 0x0008
  • Ritmul cardiac: 0x0001

Oxigen din sânge: 0x0005 Principalele conținuturi ale interfeței UI sunt următoarele:

  • Starea conexiunii
  • Afișarea ritmului cardiac
  • S-a arătat oxigen din sânge

Pasul 20: Generați fișierul de configurare

Generați fișierul de configurare
Generați fișierul de configurare

Odată ce designul UI este complet, fișierul de configurare poate fi generat și descărcat pe afișajul STVI070WT-01.

Mai întâi, efectuați pasul 1, apoi introduceți unitatea flash USB în computer, iar simbolul discului va fi afișat. Apoi faceți clic pe „Descărcați pe u-disk” pentru a descărca fișierul de configurare pe unitatea flash USB, apoi introduceți unitatea flash USB în STVI070WT-01 pentru a finaliza actualizarea.

Pasul 21: MAX30100

MAX30100
MAX30100

MAX30100 comunică prin IIC. Principiul său de funcționare este că valoarea ADC a ritmului cardiac poate fi obținută prin iradiere cu infraroșu. Registrul MAX30100 poate fi împărțit în cinci categorii: registrul de stare, FIFO, registrul de control, registrul temperaturii și registrul ID. citește valoarea temperaturii cipului pentru a corecta abaterea cauzată de temperatură. Registrul ID poate citi numărul ID-ului cipului.

MAX30100 este conectat cu placa de dezvoltare Arduino Mini Pro prin interfața de comunicare IIC. Deoarece există fișiere bibliotecă MAX30100 gata în ID-ul Arduino, putem citi datele despre ritmul cardiac și oxigenul din sânge fără a studia registrele MAX30100. Pentru cei care sunt interesați să exploreze registrul MAX30100, consultați Fișa tehnică MAX30100.

Pasul 22: Modificați rezistența pull-up MAX30100 IIC

Modificați rezistența pull-up MAX30100 IIC
Modificați rezistența pull-up MAX30100 IIC

Trebuie remarcat faptul că rezistența la tracțiune de 4.7k a pinului IIC al modulului MAX30100 este conectată la 1,8v, ceea ce nu este o problemă în teorie. Cu toate acestea, nivelul logicii de comunicare al pinului Arduino IIC este de 5V, deci nu poate comunica cu Arduino fără a schimba hardware-ul modulului MAX30100. Comunicarea directă este posibilă dacă MCU este STM32 sau un alt MCU de nivel logic de 3.3v.

Prin urmare, trebuie făcute următoarele modificări:

Scoateți cele trei rezistențe de 4.7k marcate în imagine cu un fier de lipit electric. Apoi sudați două rezistențe de 4.7k la pinii SDA și SCL la VIN, astfel încât să putem comunica cu Arduino.

Pasul 23: Arduino

Arduino
Arduino

Deschideți IDE-ul Arduino și găsiți următoarele butoane:

Pasul 24: Căutați „MAX30100” pentru a găsi două biblioteci pentru MAX30100, apoi faceți clic pe Descărcare și instalare

Caută
Caută

Pasul 25: După instalare, puteți găsi Demo-ul MAX30100 în dosarul Bibliotecii LIB din Arduino:

După instalare, puteți găsi Demo-ul MAX30100 în dosarul bibliotecii LIB din Arduino
După instalare, puteți găsi Demo-ul MAX30100 în dosarul bibliotecii LIB din Arduino

Pasul 26: Faceți dublu clic pe fișier pentru a-l deschide

Faceți dublu clic pe fișier pentru a-l deschide
Faceți dublu clic pe fișier pentru a-l deschide

Pasul 27: Codul complet este următorul:

Această demonstrație poate fi testată direct. Dacă conexiunea hardware este ok, puteți descărca compilația de cod pe placa de dezvoltare Arduibo și puteți vedea datele MAX30100 în instrumentul de depanare serială.

Codul complet este după cum urmează:

/ * Arduino-MAX30100 oximetrie / ritm cardiac bibliotecă de senzori integrată Copyright (C) 2016 OXullo Intersecans Acest program este software gratuit: îl puteți redistribui și / sau modifica în condițiile licenței publice generale GNU publicate de Free Software Foundation, fie versiunea 3 a licenței, fie (la alegerea dvs.) orice versiune ulterioară. Acest program este distribuit în speranța că va fi util, dar FĂRĂ NICI O GARANȚIE; fără măcar garanția implicită de VANZABILITATE sau ADECVARE PENTRU UN SCOP PARTICULAR. Consultați Licența publică generală GNU pentru mai multe detalii. Ar fi trebuit să primiți o copie a Licenței publice generale GNU împreună cu acest program. Dacă nu, vezi. * / #include #include "MAX30100_PulseOximeter.h" #define REPORTING_PERIOD_MS 1000 // PulseOximeter este interfața de nivel superior cu senzorul // oferă: // * raportarea detectării bătăilor // * calculul ritmului cardiac // * SpO2 (nivel de oxidare) calcul PulsoOximeter varicela; uint32_t tsLastReport = 0; // Callback (înregistrat mai jos) declanșat atunci când este detectat un impuls nul pe BeatDetected () {Serial.println ("Beat!"); } void setup () {Serial.begin (115200); Serial.print ("Inițializarea pulsoximetrului.."); // Inițializați instanța PulseOximeter // Eșecurile se datorează, în general, unei conexiuni necorespunzătoare I2C, lipsei sursei de alimentare // sau cipului țintă greșit dacă (! Pox.begin ()) {Serial.println ("FAILED"); pentru(;;); } else {Serial.println ("SUCCES"); } // Curentul implicit pentru LED-ul IR este de 50mA și poate fi modificat // prin necomentarea următoarei linii. Verificați MAX30100_Registers.h pentru toate // opțiunile disponibile. // pox.setIRLedCurrent (MAX30100_LED_CURR_7_6MA); // Înregistrați un apel invers pentru detectarea ritmului pox.setOnBeatDetectedCallback (onBeatDetected); } void loop () {// Asigurați-vă că apelați update cât mai repede pox.update (); // Descărcați asincron ritmul cardiac și nivelurile de oxidare la serial // Pentru ambele, o valoare 0 înseamnă „invalid” dacă (milis () - tsLastReport> REPORTING_PERIOD_MS) {Serial.print („Frecvența cardiacă:”); Serial.print (pox.getHeartRate ()); Serial.print ("bpm / SpO2:"); Serial.print (pox.getSpO2 ()); Serial.println ("%"); tsLastReport = millis (); }}

Pasul 28:

Imagine
Imagine

Acest cod este foarte simplu, cred că îl puteți înțelege dintr-o privire. Trebuie să spun că programarea modulară a Arduino este foarte convenabilă și nici nu trebuie să înțeleg modul în care este implementat codul driverului Uart și IIC.

Desigur, codul de mai sus este o demonstrație oficială și încă mai trebuie să fac câteva modificări pentru a afișa datele pe afișajul STONE.

Pasul 29: Afișați datele pe afișatorul STONE prin Arduino

În primul rând, trebuie să obținem adresa componentei care afișează datele despre ritmul cardiac și oxigenul din sânge în afișajul STONE:

În proiectul meu, adresa este după cum urmează: Adresa componentei de afișare a ritmului cardiac: 0x0001 Adresa modulului de afișare a oxigenului din sânge: 0x0005 Adresa stării conexiunii senzorului: 0x0008 Dacă trebuie să modificați conținutul afișajului în spațiul corespunzător, puteți schimba conținutul afișajului prin trimiterea datelor la adresa corespunzătoare a ecranului de afișare prin portul serial al Arduino.

Pasul 30: Codul modificat este următorul:

/ * Arduino-MAX30100 oximetrie / ritm cardiac bibliotecă de senzori integrată Copyright (C) 2016 OXullo Intersecans Acest program este software gratuit: îl puteți redistribui și / sau modifica în condițiile licenței publice generale GNU publicate de Free Software Foundation, fie versiunea 3 a licenței, fie (la alegerea dvs.) orice versiune ulterioară. Acest program este distribuit în speranța că va fi util, dar FĂRĂ NICI O GARANȚIE; fără măcar garanția implicită de VANZABILITATE sau ADECVARE PENTRU UN SCOP PARTICULAR. Consultați Licența publică generală GNU pentru mai multe detalii. Ar fi trebuit să primiți o copie a Licenței publice generale GNU împreună cu acest program. Dacă nu, vezi. * / #include #include "MAX30100_PulseOximeter.h" #define REPORTING_PERIOD_MS 1000 #define Heart_dis_addr 0x01 #define Sop2_dis_addr 0x05 #define connect_sta_addr 0x08 unsigned char heart_rate_send [8] = {0xAx, 0x, 0x, 0x, 0x, 5 0x00}; unsigned char Sop2_send [8] = {0xA5, 0x5A, 0x05, 0x82, 0x00, / Sop2_dis_addr, 0x00, 0x00}; unsigned char connect_sta_send [8] = {0xA5, 0x5A, 0x05, 0x82, 0x00, / connect_sta_addr, 0x00, 0x00}; // PulseOximeter este interfața de nivel superior cu senzorul // oferă: // * raportarea detectării bătăilor // * calculul ritmului cardiac // * SpO2 (nivel de oxidare) calcul PulseOximeter pox; uint32_t tsLastReport = 0; // Callback (înregistrat mai jos) declanșat atunci când este detectat un impuls nul pe BeatDetected () {// Serial.println ("Beat!"); } void setup () {Serial.begin (115200); // Serial.print ("Inițializarea puls oximetru.."); // Inițializați instanța PulseOximeter // Eșecurile se datorează, în general, unei conexiuni necorespunzătoare I2C, lipsei sursei de alimentare // sau cipului țintă greșit dacă (! Pox.begin ()) {// Serial.println ("FAILED"); // connect_sta_send [7] = 0x00; // Serial.write (connect_sta_send, 8); pentru(;;); } else {connect_sta_send [7] = 0x01; Serial.write (connect_sta_send, 8); // Serial.println („SUCCES”); } // Curentul implicit pentru LED-ul IR este de 50mA și ar putea fi schimbat // prin necomentarea următoarei linii. Verificați MAX30100_Registers.h pentru toate // opțiunile disponibile.pox.setIRLedCurrent (MAX30100_LED_CURR_7_6MA); // Înregistrați un apel invers pentru detectarea ritmului pox.setOnBeatDetectedCallback (onBeatDetected); } void loop () {// Asigurați-vă că apelați update cât mai repede pox.update (); // Descărcați în mod asincron ritmul cardiac și nivelurile de oxidare la serial // Pentru ambele, o valoare 0 înseamnă „invalid” dacă (milis () - tsLastReport> REPORTING_PERIOD_MS) {// Serial.print („Frecvența cardiacă:”); // Serial.print (pox.getHeartRate ()); // Serial.print ("bpm / SpO2:"); // Serial.print (pox.getSpO2 ()); // Serial.println ("%"); heart_rate_send [7] = (uint32_t) pox.getHeartRate (); Serial.write (heart_rate_send, 8); Sop2_send [7] = pox.getSpO2 (); Serial.write (Sop2_send, 8); tsLastReport = millis (); }}

Pasul 31: Afișați ritmul cardiac pe ecranul LCD cu Arduino

Afișați ritmul cardiac pe ecranul LCD cu Arduino
Afișați ritmul cardiac pe ecranul LCD cu Arduino

Compilați codul, descărcați-l pe placa de dezvoltare Arduino și sunteți gata să începeți testarea.

Putem vedea că atunci când degetele părăsesc MAX30100, ritmul cardiac și oxigenul din sânge afișează 0. Așezați degetul pe colectorul MAX30100 pentru a vedea ritmul cardiac și nivelurile de oxigen din sânge în timp real.

Efectul poate fi văzut în următoarea imagine:

Recomandat: