Kazalo:

Kako prikazati srčni utrip na KAMENEM LCD -ju z Ar: 31 korakov
Kako prikazati srčni utrip na KAMENEM LCD -ju z Ar: 31 korakov

Video: Kako prikazati srčni utrip na KAMENEM LCD -ju z Ar: 31 korakov

Video: Kako prikazati srčni utrip na KAMENEM LCD -ju z Ar: 31 korakov
Video: Все части Samsung Galaxy S10 были зарезервированы! 2024, Julij
Anonim
Kako prikazati srčni utrip na KAMENEM LCD -ju z ar
Kako prikazati srčni utrip na KAMENEM LCD -ju z ar

kratek uvod

Pred časom sem pri spletnem nakupovanju našel modul senzorja srčnega utripa MAX30100. Ta modul lahko zbira podatke o kisiku in srčnem utripu uporabnikov v krvi, kar je tudi preprosto in priročno za uporabo. Glede na podatke sem ugotovil, da so v datotekah knjižnice Arduino knjižnice MAX30100. Se pravi, če uporabljam komunikacijo med Arduinom in MAX30100, lahko neposredno pokličem datoteke knjižnice Arduino, ne da bi bilo treba prepisati gonilniške datoteke. To je dobro, zato sem kupil modul MAX30100.

1. korak: Odločil sem se, da bom uporabil Arduino za preverjanje delovanja zbiranja kisika v krvi in krvnega utripa MAX30100

Odločil sem se, da bom uporabil Arduino za preverjanje delovanja zbiranja kisika in krvnega utripa v krvi MAX30100
Odločil sem se, da bom uporabil Arduino za preverjanje delovanja zbiranja kisika in krvnega utripa v krvi MAX30100

Opomba: ta modul je privzeto samo pri komunikacijah MCU na ravni 3,3 V, ker privzeto uporablja vlečni upor IIC pin 4,7 K do 1,8 V, zato privzeto ni komunikacije z Arduinom, če želite komunicirati z Arduinom in potrebujete dva 4,7 K izvlečnega upora IIC pin, priključenega na pin VIN, bosta ta vsebina predstavljena na zadnji strani poglavja.

2. korak: Funkcionalne dodelitve

Pred začetkom tega projekta sem pomislil na nekaj preprostih funkcij:

  • Zbrani so bili podatki o srčnem utripu in kisiku v krvi
  • Podatki o srčnem utripu in kisiku v krvi so prikazani na LCD zaslonu

To sta edini dve funkciji, če pa želimo to implementirati, moramo razmisliti:

  • Kateri glavni MCU se uporablja?
  • Kakšen LCD prikazovalnik?

Kot smo že omenili, za MCU uporabljamo Arduino, vendar gre za projekt Arduino LCD zaslona, zato moramo izbrati ustrezen modul LCD zaslona. Načrtujem uporabo zaslona LCD z zaporednimi vrati. Tukaj imam prikazovalnik STONE STVI070WT-01, če pa mora Arduino komunicirati z njim, je za pretvorbo ravni potreben MAX3232. Nato se osnovni elektronski materiali določijo na naslednji način:

1. Razvojna plošča Arduino Mini Pro

2. MAX30100 modul senzorja srčnega utripa in krvnega kisika

3. STONE060WT-01 STONE LCD prikazovalni modul

4. Modul MAX3232

3. korak: Predstavitev strojne opreme

MAX30100

MAX30100 je integrirana rešitev za merjenje pulzne oksimetrije in merilnika srčnega utripa. Združuje dve LED diodi, fotodetektor, optimizirano optiko in obdelavo analognih signalov z nizkim šumom za zaznavanje pulzne oksimetrije in signalov srčnega utripa.

MAX30100 deluje z napajalniki 1,8 V in 3,3 V in se lahko izklopi s programsko opremo z zanemarljivim tokom v stanju pripravljenosti, kar omogoča, da je napajanje ves čas povezano.

4. korak: Aplikacije

● Nosljive naprave

● Naprave za pomoč pri fitnesu

● Naprave za medicinsko spremljanje

5. korak: Prednosti in funkcije

1, Popolna rešitev pulznega oksimetra in senzorja srčnega utripa poenostavi oblikovanje

  • Integrirane LED diode, senzor za fotografije in visoko zmogljiv analogni sprednji konec
  • Drobni 5,6 mm x 2,8 mm x 1,2 mm 14-pinski optično izboljšani sistem v paketu

2, Delovanje z zelo nizko porabo energije podaljša življenjsko dobo baterije za nosljive naprave

  • Programabilna frekvenca vzorčenja in LED tok za prihranek energije
  • Izredno nizek izklopni tok (0,7 µA, tip)

3, Napredna funkcionalnost izboljša zmogljivost merjenja

  • Visok SNR zagotavlja robustno odpornost na artefakte pri gibanju
  • Integrirano odpravljanje svetlobe v okolici
  • Visoka zmogljivost vzorčenja
  • Zmogljivost hitrega izhoda podatkov

6. korak: Načelo odkrivanja

Načelo odkrivanja
Načelo odkrivanja

S prstom pritisnite na senzor, da ocenite impulzno nasičenost s kisikom (SpO2) in pulz (kar ustreza srčnemu utripu).

Pulzni oksimeter (oksimeter) je mini-spektrometer, ki uporablja načela različnih absorpcijskih spektrov rdečih krvnih celic za analizo nasičenosti krvi s kisikom. Ta metoda hitrega merjenja v realnem času se pogosto uporablja tudi v številnih kliničnih referencah. MAX30100 ne bom predstavljal preveč, ker so ti materiali na voljo na internetu. Zainteresirani prijatelji lahko poiščejo informacije o tem modulu za merjenje srčnega utripa na internetu in bolje razumejo njegovo načelo zaznavanja.

7. korak: STONE STVI070WT-01

KAMEN STVI070WT-01
KAMEN STVI070WT-01

Uvod v prikazovalnik

V tem projektu bom za prikaz srčnega utripa in podatkov o kisiku v krvi uporabil STONE STVI070WT-01. Gonilniški čip je vgrajen v zaslon, uporabniki pa lahko uporabljajo programsko opremo. Uporabniki morajo skozi oblikovane slike uporabniškega vmesnika dodati le gumbe, besedilna polja in drugo logiko, nato pa ustvariti konfiguracijske datoteke in jih prenesti na zaslon za zagon. Zaslon STVI070WT-01 komunicira z MCU prek signala uart-rs232, kar pomeni, da moramo dodati čip MAX3232 za pretvorbo signala RS232 v signal TTL, da lahko komuniciramo z Arduino MCU.

8. korak: Če niste prepričani, kako uporabljati MAX3232, si oglejte naslednje slike:

Če niste prepričani, kako uporabljati MAX3232, si oglejte naslednje slike
Če niste prepričani, kako uporabljati MAX3232, si oglejte naslednje slike

Če menite, da je pretvorba ravni preveč težavna, lahko izberete druge vrste prikazovalnikov STONE, od katerih nekateri lahko neposredno oddajajo signal uart-ttl.

Uradna spletna stran vsebuje podrobne informacije in uvod:

9. korak: Če potrebujete video vaje in vaje, jih lahko najdete tudi na uradni spletni strani

Če potrebujete video vaje in vaje, jih lahko najdete tudi na uradni spletni strani
Če potrebujete video vaje in vaje, jih lahko najdete tudi na uradni spletni strani

10. korak: Koraki razvoja

Trije koraki razvoja STONE zaslona:

  • Zaslonite logiko zaslona in logiko tipk s programsko opremo STONE TOOL in naložite oblikovalsko datoteko v prikazovalni modul.
  • MCU komunicira z zaslonskim modulom STONE prek serijskih vrat.
  • S podatki, pridobljenimi v 2. koraku, MCU izvede druga dejanja.

11. korak: Namestitev programske opreme STONE TOOL

Namestitev programske opreme STONE TOOL
Namestitev programske opreme STONE TOOL

Prenesite najnovejšo različico programske opreme STONE TOOL (trenutno TOOL2019) s spletnega mesta in jo namestite.

Po namestitvi programske opreme se odpre naslednji vmesnik:

Kliknite gumb »Datoteka« v zgornjem levem kotu, da ustvarite nov projekt, o katerem bomo razpravljali kasneje.

12. korak: Arduino

Arduino je odprtokodna elektronska prototipna platforma, ki je enostavna za uporabo in enostavna za uporabo. Vključuje del strojne opreme (različne razvojne plošče, ki so v skladu s specifikacijo Arduino) in del programske opreme (Arduino IDE in z njimi povezani razvojni kompleti).

Strojni del (ali razvojna plošča) je sestavljen iz mikrokrmilnika (MCU), bliskovnega pomnilnika (Flash) in niza univerzalnih vhodno/izhodnih vmesnikov (GPIO), za katere si lahko predstavljate, da so matična plošča mikroračunalnika. Del programske opreme je v glavnem sestavljen iz Arduino IDE na osebnem računalniku, sorodnega paketa podpore na ravni plošče (BSP) in bogate knjižnice funkcij drugih proizvajalcev. pisati svoje programe. Arduino je odprtokodna platforma. Doslej je bilo veliko modelov in veliko izpeljanih krmilnikov, vključno z Arduino Uno, Arduino Nano, ArduinoYun itd. Poleg tega Arduino IDE zdaj ne podpira le razvojnih plošč serije Arduino, temveč dodaja tudi podporo za priljubljene razvojne plošče, kot so kot Intel Galileo in NodeMCU z uvedbo BSP.

Arduino zaznava okolje z različnimi senzorji, krmilnimi lučmi, motorji in drugimi napravami za povratno delovanje in vpliv na okolje. Mikrokrmilnik na plošči je mogoče programirati z programskim jezikom Arduino, prevesti v binarne datoteke in zapisati v mikrokrmilnik. za Arduino je implementiran s programskim jezikom Arduino (na osnovi Wiring) in razvojnim okoljem Arduino (na osnovi Processing). Projekti na osnovi Arduino lahko vsebujejo samo Arduino, pa tudi Arduino in drugo programsko opremo, ki se izvaja na osebnem računalniku, in komunicirajo z vsakim druge (kot so Flash, Processing, MaxMSP).

13. korak: Razvojno okolje

Razvojno okolje
Razvojno okolje

Razvojno okolje Arduino je Arduino IDE, ki ga je mogoče prenesti z interneta.

Prijavite se na uradno spletno mesto Arduina in prenesite programsko opremo https://www.arduino.cc/en/Main/Software?setlang=c… Po namestitvi Arduino IDE se bo ob odprtju programske opreme prikazal naslednji vmesnik:

Arduino IDE privzeto ustvari dve funkciji: funkcijo nastavitve in funkcijo zanke. Na internetu je veliko predstavitev Arduina. Če česa ne razumete, pojdite na internet.

Korak 14: Postopek implementacije projekta Arduino LCD

Postopek implementacije projekta Arduino LCD
Postopek implementacije projekta Arduino LCD

strojna povezava

Za zagotovitev nemotenega naslednjega koraka pri pisanju kode moramo najprej ugotoviti zanesljivost strojne povezave.

V tem projektu so bili uporabljeni le štirje deli strojne opreme:

1. Razvojna plošča Arduino Mini pro

2. STONE STVI070WT-01 tft-lcd zaslon

3. Senzor srčnega utripa in kisika v krvi MAX30100

4. MAX3232 (rs232-> TTL) Razvojna plošča Arduino Mini Pro in zaslonski zaslon TVI-STVI070WT-01 sta povezana prek UART, kar zahteva pretvorbo ravni prek MAX3232, nato pa sta razvojna plošča Arduino Mini Pro in modul MAX30100 povezana prek IIC vmesnik. Po jasnem razmišljanju lahko narišemo naslednjo sliko ožičenja:

15. korak:

Slika
Slika

Prepričajte se, da v povezavi s strojno opremo ni napak in pojdite na naslednji korak.

Korak 16: Oblikovanje uporabniškega vmesnika LCD TFT

Oblikovanje uporabniškega vmesnika LCD TFT
Oblikovanje uporabniškega vmesnika LCD TFT

Najprej moramo oblikovati sliko za prikaz uporabniškega vmesnika, ki jo lahko oblikujemo s programom PhotoShop ali drugimi orodji za oblikovanje slik. Ko oblikujete sliko za prikaz uporabniškega vmesnika, jo shranite v formatu JPG.

Odprite programsko opremo STONE TOOL2019 in ustvarite nov projekt:

17. korak: Odstranite sliko, ki je bila privzeto naložena v novem projektu, in dodajte sliko uporabniškega vmesnika, ki smo jo oblikovali

Odstranite sliko, ki je bila privzeto naložena v novem projektu, in dodajte sliko uporabniškega vmesnika, ki smo jo oblikovali
Odstranite sliko, ki je bila privzeto naložena v novem projektu, in dodajte sliko uporabniškega vmesnika, ki smo jo oblikovali

18. korak: Dodajte komponento za prikaz besedila

Dodajte komponento za prikaz besedila
Dodajte komponento za prikaz besedila

Dodajte komponento za prikaz besedila, oblikujte prikazovalno številko in decimalno vejico, pridobite mesto shranjevanja komponente za prikaz besedila v prikazovalniku.

Učinek je naslednji:

19. korak:

Naslov komponente prikaza besedila:

  • Priključek sta: 0x0008
  • Srčni utrip: 0x0001

Krvni kisik: 0x0005 Glavna vsebina vmesnika uporabniškega vmesnika je naslednja:

  • Stanje povezave
  • Prikaz srčnega utripa
  • Pokazal se je krvni kisik

20. korak: Ustvarite konfiguracijsko datoteko

Ustvari konfiguracijsko datoteko
Ustvari konfiguracijsko datoteko

Ko je zasnova uporabniškega vmesnika končana, lahko konfiguracijsko datoteko ustvarite in naložite na zaslon STVI070WT-01.

Najprej izvedite 1. korak, nato vstavite USB -pogon v računalnik in prikazal se bo simbol diska. Nato kliknite »Prenesi na u-disk«, da prenesete konfiguracijsko datoteko na bliskovni pogon USB in nato vstavite bliskovni pogon USB v STVI070WT-01, da dokončate nadgradnjo.

21. korak: MAX30100

MAX30100
MAX30100

MAX30100 komunicira prek IIC. Njegovo načelo delovanja je, da je vrednost ADC srčnega utripa mogoče doseči z infrardečim sevanjem. Register MAX30100 lahko razdelimo v pet kategorij: državni register, FIFO, nadzorni register, temperaturni register in register ID. bere temperaturno vrednost čipa, da odpravi odstopanje, ki ga povzroči temperatura. ID register lahko prebere ID številko čipa.

MAX30100 je povezan z razvojno ploščo Arduino Mini Pro prek komunikacijskega vmesnika IIC. Ker so v Arduino IDE že pripravljene knjižnične datoteke MAX30100, lahko beremo podatke o srčnem utripu in kisiku v krvi, ne da bi preučevali registre MAX30100. Za tiste, ki jih zanima raziskovanje registra MAX30100, si oglejte podatkovni list MAX30100.

Korak: Spremenite vlečni upor MAX30100 IIC

Spremenite vlečni upor MAX30100 IIC
Spremenite vlečni upor MAX30100 IIC

Opozoriti je treba, da je 4,7 k vlečna upornost IIC zatiča modula MAX30100 priključena na 1,8 V, kar v teoriji ni problem. Raven komunikacijske logike pin Arduino IIC je 5V, zato ne more komunicirati z Arduinom brez spreminjanja strojne opreme modula MAX30100. Neposredna komunikacija je možna, če je MCU STM32 ali drug 3.3V logični nivo MCU.

Zato je treba narediti naslednje spremembe:

Odstranite tri 4,7 k upore, označene na sliki, z električnim spajkalnikom. Nato na zatiče SDA in SCL z VIN zvarite dva upora 4,7 k, da lahko komuniciramo z Arduinom.

23. korak: Arduino

Arduino
Arduino

Odprite Arduino IDE in poiščite naslednje gumbe:

Korak 24: Poiščite "MAX30100", da poiščete dve knjižnici za MAX30100, nato kliknite Prenesi in namesti

Išči
Išči

Korak 25: Po namestitvi lahko predstavitev MAX30100 najdete v mapi knjižnice LIB v Arduinu:

Po namestitvi lahko predstavitev MAX30100 najdete v mapi knjižnice LIB v Arduinu
Po namestitvi lahko predstavitev MAX30100 najdete v mapi knjižnice LIB v Arduinu

Korak 26: Dvokliknite datoteko, da jo odprete

Dvokliknite datoteko, da jo odprete
Dvokliknite datoteko, da jo odprete

Korak 27: Celotna koda je naslednja:

To predstavitev je mogoče neposredno preizkusiti. Če je povezava s strojno opremo v redu, lahko prenesete zbirko kode na razvojno ploščo Arduibo in si ogledate podatke MAX30100 v orodju za serijsko odpravljanje napak.

Celotna koda je naslednja:

/* Arduino-MAX30100 knjižnica integriranih senzorjev oksimetrije /srčnega utripa Avtorska pravica (C) 2016 OXullo Intersecans Ta program je brezplačna programska oprema: lahko ga razširjate in /ali spreminjate pod pogoji Splošne javne licence GNU, ki jo je objavila Fundacija za brezplačno programsko opremo, bodisi različico 3 licence ali (po vaši izbiri) katero koli poznejšo različico. Ta program se distribuira v upanju, da bo koristen, vendar BREZ KAKRŠNE GARANCIJE; brez celo implicitne garancije o TRGOVINSKI ZNANOSTI ali PRIMERNOSTI ZA POSEBEN NAMEN. Za več podrobnosti glejte Splošno javno licenco GNU. S tem programom bi morali prejeti kopijo splošne javne licence GNU. Če ne, glej. */ #include #include "MAX30100_PulseOximeter.h" #define REPORTING_PERIOD_MS 1000 // PulseOximeter je vmesnik višje ravni do senzorja // ponuja: // * poročanje o zaznavanju utripov // * izračun srčnega utripa // * SpO2 (raven oksidacije) izračun PulseOximeter pox; uint32_t tsLastReport = 0; // Povratni klic (spodaj registriran) sprožen, ko se zazna impulz void onBeatDetected () {Serial.println ("Beat!"); } void setup () {Serial.begin (115200); Serial.print ("Inicializacija pulznega oksimetra.."); // Inicializiraj primerek PulseOximeter // Napake so običajno posledica nepravilnega ožičenja I2C, pomanjkanja napajanja // ali napačnega ciljnega čipa if (! Pox.begin ()) {Serial.println ("FAILED"); za (;;); } else {Serial.println ("USPEH"); } // Privzeti tok za IR LED je 50 mA in ga lahko spremenimo // z razkomentiranjem naslednje vrstice. Preverite MAX30100_Registers.h za vse // razpoložljive možnosti. // pox.setIRLedCurrent (MAX30100_LED_CURR_7_6MA); // Registriramo povratni klic za zaznavanje utripov pox.setOnBeatDetectedCallback (onBeatDetected); } void loop () {// Poskrbite, da boste čim prej poklicali update pox.update (); // Asinhrono izpis srčnega utripa in ravni oksidacije v serijo // Za oba vrednost 0 pomeni "neveljavno" if (millis () - tsLastReport> REPORTING_PERIOD_MS) {Serial.print ("Srčni utrip:"); Serial.print (pox.getHeartRate ()); Serial.print ("bpm / SpO2:"); Serial.print (pox.getSpO2 ()); Serial.println ("%"); tsLastReport = millis (); }}

28. korak:

Slika
Slika

Ta koda je zelo preprosta, verjamem, da jo lahko razumete na prvi pogled. Moram reči, da je modularno programiranje Arduina zelo priročno in mi sploh ni treba razumeti, kako se izvaja gonilniška koda Uart in IIC.

Seveda je zgornja koda uradna predstavitev in še vedno moram narediti nekaj sprememb za prikaz podatkov na prikazovalniku STONE.

Korak 29: Prikaz podatkov na prikazovalniku STONE prek Arduina

Najprej moramo dobiti naslov komponente, ki prikazuje podatke o srčnem utripu in kisiku v krvi v prikazovalniku STONE:

V mojem projektu je naslov naslednji: Naslov komponente prikaza srčnega utripa: 0x0001 Naslov modula za prikaz kisika v krvi: 0x0005 Naslov statusa povezave senzorja: 0x0008 Če morate spremeniti vsebino zaslona v ustreznem prostoru, lahko spremenite vsebino zaslona s pošiljanjem podatkov na ustrezen naslov zaslona prek serijskih vrat Arduino.

30. korak: Spremenjena koda je naslednja:

/* Arduino-MAX30100 knjižnica integriranih senzorjev oksimetrije /srčnega utripa Avtorska pravica (C) 2016 OXullo Intersecans Ta program je brezplačna programska oprema: lahko ga razširjate in /ali spreminjate pod pogoji Splošne javne licence GNU, ki jo je objavila Fundacija za brezplačno programsko opremo, bodisi različico 3 licence ali (po vaši izbiri) katero koli poznejšo različico. Ta program se distribuira v upanju, da bo koristen, vendar BREZ KAKRŠNE GARANCIJE; brez implicitne garancije TRGOVINSKE USTANOVLJENOSTI ali PRIMERNOSTI ZA POSEBEN NAMEN. Za več podrobnosti glejte Splošno javno licenco GNU. S tem programom bi morali prejeti kopijo splošne javne licence GNU. Če ne, glej. */ #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 brez znaka heart_rate_xx, 0x5, 0x5, 0x5, 0 0x00}; nepodpisani znak 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 je vmesnik višje ravni do senzorja // ponuja: // * poročanje o zaznavanju utripov // * izračun srčnega utripa // * SpO2 (raven oksidacije) izračun PulseOximeter pox; uint32_t tsLastReport = 0; // Povratni klic (spodaj registriran) sprožen, ko se zazna impulz void onBeatDetected () {// Serial.println ("Beat!"); } void setup () {Serial.begin (115200); // Serial.print ("Inicializacija pulznega oksimetra.."); // Inicializiraj primerek PulseOximeter // Napake so običajno posledica nepravilnega ožičenja I2C, pomanjkanja napajanja // ali napačnega ciljnega čipa if (! Pox.begin ()) {// Serial.println ("FAILED"); // connect_sta_send [7] = 0x00; // Serial.write (connect_sta_send, 8); za (;;); } else {connect_sta_send [7] = 0x01; Serial.write (connect_sta_send, 8); // Serial.println ("USPEH"); } // Privzeti tok za IR LED je 50 mA in ga lahko spremenimo // z razkomentiranjem naslednje vrstice. Preverite MAX30100_Registers.h za vse // razpoložljive možnosti.pox.setIRLedCurrent (MAX30100_LED_CURR_7_6MA); // Registriramo povratni klic za zaznavanje utripov pox.setOnBeatDetectedCallback (onBeatDetected); } void loop () {// Poskrbite, da boste čim prej poklicali update pox.update (); // Asinhrono izpis srčnega utripa in ravni oksidacije v serijo // Za oba vrednost 0 pomeni "neveljavno" if (millis () - tsLastReport> REPORTING_PERIOD_MS) {// Serial.print ("Srčni utrip:"); // 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 (); }}

Korak 31: Prikažite srčni utrip na LCD -ju z Arduinom

Prikažite srčni utrip na LCD z Arduinom
Prikažite srčni utrip na LCD z Arduinom

Sestavite kodo, jo naložite na razvojno ploščo Arduino in pripravljeni ste na testiranje.

Vidimo lahko, da ko prsti zapustijo MAX30100, se srčni utrip in kisik v krvi prikažeta 0. Postavite prst na zbiralnik MAX30100, da v realnem času vidite srčni utrip in raven kisika v krvi.

Učinek je viden na naslednji sliki:

Priporočena: