Innholdsfortegnelse:

Hvordan vise puls på STONE LCD -skjermen med Ar: 31 trinn
Hvordan vise puls på STONE LCD -skjermen med Ar: 31 trinn

Video: Hvordan vise puls på STONE LCD -skjermen med Ar: 31 trinn

Video: Hvordan vise puls på STONE LCD -skjermen med Ar: 31 trinn
Video: ВКУСНАЯ ЕДА ИЗ ПРОСТЫХ ПРОДУКТОВ В КАЗАНЕ 2 РЕЦЕПТА Узбекский суп 2024, Juli
Anonim
Hvordan vise puls på STONE LCD -skjermen med Ar
Hvordan vise puls på STONE LCD -skjermen med Ar

kort introduksjon

For en tid siden fant jeg en pulssensormodul MAX30100 i shopping på nettet. Denne modulen kan samle inn oksygen- og pulsdata fra brukere, som også er enkel og praktisk å bruke. I følge dataene fant jeg ut at det er biblioteker med MAX30100 i Arduino -biblioteksfilene. Det vil si at hvis jeg bruker kommunikasjonen mellom Arduino og MAX30100, kan jeg ringe Arduino -biblioteksfilene direkte uten å måtte omskrive driverfilene. Dette er bra, så jeg kjøpte modulen til MAX30100.

Trinn 1: Jeg bestemte meg for å bruke Arduino til å verifisere funksjonen for pulsmåling og blodoksygen for MAX30100

Jeg bestemte meg for å bruke Arduino til å verifisere funksjonen for pulsen og oksygeninnsamlingen i blodet til MAX30100
Jeg bestemte meg for å bruke Arduino til å verifisere funksjonen for pulsen og oksygeninnsamlingen i blodet til MAX30100

Merk: denne modulen er som standard bare med 3,3 V nivå MCU -kommunikasjon, fordi den som standard bruker IIC pin pull up -motstand på 4,7 K til 1,8 V, så det er ingen kommunikasjon med Arduino som standard hvis du vil kommunisere med Arduino og trenger to 4,7 K av IIC pin pull-up motstand koblet til VIN pin, vil dette innholdet bli introdusert på baksiden av kapitlet.

Trinn 2: Funksjonelle oppgaver

Før jeg startet dette prosjektet, tenkte jeg på noen enkle funksjoner:

  • Pulsdata og oksygendata i blod ble samlet inn
  • Puls og oksygendata i blodet vises via en LCD -skjerm

Dette er de to eneste funksjonene, men hvis vi ønsker å implementere det, må vi tenke mer:

  • Hvilken master MCU brukes?
  • Hva slags LCD -skjerm?

Som vi nevnte tidligere, bruker vi Arduino for MCU, men dette er et Arduino LCD -skjermprosjekt, så vi må velge riktig LCD -skjermmodul. Jeg planlegger å bruke LCD -skjermen med seriell port. Jeg har en STONE STVI070WT-01-skjerm her, men hvis Arduino trenger å kommunisere med den, er MAX3232 nødvendig for å gjøre nivåkonvertering. Deretter bestemmes de grunnleggende elektroniske materialene som følger:

1. Arduino Mini Pro utviklingstavle

2. MAX30100 hjertefrekvens og blod oksygen sensor modul

3. STONE STVI070WT-01 LCD seriell portvisningsmodul

4. MAX3232 -modul

Trinn 3: Innføring i maskinvare

MAX30100

MAX30100 er en integrert løsning for pulsoksymetri og pulsmåler. Den kombinerer to lysdioder, en fotodetektoren, optimalisert optikk og lydløs analog signalbehandling for å oppdage pulsoksymetri og pulssignaler.

MAX30100 driver fra 1.8V og 3.3V strømforsyninger og kan slås av via programvare med ubetydelig standby -strøm, slik at strømforsyningen kan forbli tilkoblet hele tiden.

Trinn 4: Søknader

● Bærbare enheter

● Fitness Assistant -enheter

● Medisinske overvåkingsenheter

Trinn 5: Fordeler og funksjoner

1 、 Komplett pulsoksymeter og hjertefrekvenssensor forenkler design

  • Integrerte lysdioder, fotosensor og høyytende analog front -slutt
  • Liten 5,6 mm x 2,8 mm x 1,2 mm 14-pinners optisk forbedret system-i-pakke

2 、 Ultra-Low-Power-drift Øker batterilevetiden for bærbare enheter

  • Programmerbar prøvehastighet og LED -strøm for strømsparing
  • Ultralav avstengningsstrøm (0,7µA, typ)

3, Avansert funksjonalitet Forbedrer måleytelsen

  • Høy SNR gir robust motstand mot artefakter
  • Integrert omgivelseslysavlysning
  • Høy prøvehastighet
  • Rask datautmatningsevne

Trinn 6: Deteksjonsprinsipp

Deteksjonsprinsipp
Deteksjonsprinsipp

Bare trykk fingeren mot sensoren for å estimere puls oksygenmetning (SpO2) og puls (tilsvarer hjerteslag).

Pulsoksymeteret (oksimeteret) er et minispektrometer som bruker prinsippene for forskjellige røde celleabsorpsjonsspektre for å analysere oksygenmetningen i blodet. Denne sanntids og hurtige målemetoden er også mye brukt i mange kliniske referanser. Jeg vil ikke introdusere MAX30100 for mye, fordi disse materialene er tilgjengelige på Internett. Interesserte venner kan slå opp informasjonen til denne pulsmålingsmodulen på Internett, og ha en dypere forståelse av deteksjonsprinsippet.

Trinn 7: STONE STVI070WT-01

STEN STVI070WT-01
STEN STVI070WT-01

Introduksjon til displayet

I dette prosjektet vil jeg bruke STONE STVI070WT-01 til å vise puls og blodets oksygendata. Driverchippen er integrert inne i skjermen, og det er programvare som brukerne kan bruke. Brukere trenger bare å legge til knapper, tekstbokser og annen logikk gjennom de designede brukergrensesnittbildene, og deretter generere konfigurasjonsfiler og laste dem ned til skjermbildet for å kjøre. Displayet til STVI070WT-01 kommuniserer med MCU gjennom uart-rs232 signal, noe som betyr at vi må legge til en MAX3232 chip for å konvertere RS232 signal til TTL signal, slik at vi kan kommunisere med Arduino MCU.

Trinn 8: Hvis du ikke er sikker på hvordan du bruker MAX3232, vennligst se følgende bilder:

Hvis du ikke er sikker på hvordan du bruker MAX3232, vennligst se følgende bilder
Hvis du ikke er sikker på hvordan du bruker MAX3232, vennligst se følgende bilder

Hvis du synes nivåkonverteringen er for plagsom, kan du velge andre typer displayere av STONE, hvorav noen kan sende uart-ttl-signal direkte.

Det offisielle nettstedet har detaljert informasjon og introduksjon:

Trinn 9: Hvis du trenger videoopplæringer og opplæringsprogrammer du kan bruke, kan du også finne den på det offisielle nettstedet

Hvis du trenger videoopplæringer og opplæringsprogrammer å bruke, kan du også finne den på det offisielle nettstedet
Hvis du trenger videoopplæringer og opplæringsprogrammer å bruke, kan du også finne den på det offisielle nettstedet

Trinn 10: Utviklingstrinn

Tre trinn i utviklingen av STONE -skjermbildet:

  • Design skjermlogikken og knappelogikken med programvaren STONE TOOL, og last ned designfilen til skjermmodulen.
  • MCU kommuniserer med STONE LCD -skjermmodul gjennom serieporten.
  • Med dataene innhentet i trinn 2, gjør MCU andre handlinger.

Trinn 11: Installasjon av programvare for steinverktøy

Installasjon av programvare for steinverktøy
Installasjon av programvare for steinverktøy

Last ned den nyeste versjonen av STONE TOOL -programvaren (for tiden TOOL2019) fra nettstedet, og installer den.

Etter at programvaren er installert, åpnes følgende grensesnitt:

Klikk på "File" -knappen i øvre venstre hjørne for å lage et nytt prosjekt, som vi vil diskutere senere.

Trinn 12: Arduino

Arduino er en åpen kildekode elektronisk prototypeplattform som er enkel å bruke og enkel å bruke. Den inkluderer maskinvaredelen (forskjellige utviklingstavler som samsvarer med Arduino -spesifikasjonen) og programvaredelen (Arduino IDE og relaterte utviklingssett).

Maskinvaredelen (eller utviklingskortet) består av en mikrokontroller (MCU), Flash -minne (Flash) og et sett med universelle inngangs-/utgangsgrensesnitt (GPIO), som du kan tenke på som et mikrodatamaskin hovedkort. Programvaredelen består hovedsakelig av Arduino IDE på PC, relatert brettpakke (BSP) og et rikt tredjeparts funksjonsbibliotek. Med Arduino IDE kan du enkelt laste ned BSP knyttet til utviklingskortet og bibliotekene du trenger å skrive programmene dine. Arduino er en åpen kildekode -plattform. Så langt har det vært mange modeller og mange avledede kontrollere, inkludert Arduino Uno, Arduino Nano, ArduinoYun og så videre. I tillegg støtter Arduino IDE nå ikke bare utviklingskortene i Arduino -serien, men legger også til støtte for populære utviklingskort som som Intel Galileo og NodeMCU ved å introdusere BSP.

Arduino registrerer miljøet gjennom en rekke sensorer, kontrollerende lys, motorer og andre enheter for å mate tilbake og påvirke miljøet. Mikrokontrolleren på brettet kan programmeres med et Arduino -programmeringsspråk, samles i binære filer og brennes inn i mikrokontrolleren. Programmering for Arduino er implementert med Arduino programmeringsspråk (basert på ledninger) og Arduino utviklingsmiljø (basert på prosessering). Arduino-baserte prosjekter kan bare inneholde Arduino, så vel som Arduino og annen programvare som kjører på PC, og de kommuniserer med hver andre (for eksempel Flash, Processing, MaxMSP).

Trinn 13: Utviklingsmiljø

Utviklingsmiljø
Utviklingsmiljø

Arduino -utviklingsmiljøet er Arduino IDE, som kan lastes ned fra Internett.

Logg deg på det offisielle nettstedet til Arduino og last ned programvaren https://www.arduino.cc/en/Main/Software?setlang=c… Etter at du har installert Arduino IDE, vil følgende grensesnitt vises når du åpner programvaren:

Arduino IDE lager to funksjoner som standard: oppsettfunksjonen og sløyfefunksjonen. Det er mange Arduino -introduksjoner på Internett. Hvis du ikke forstår noe, kan du gå til Internett for å finne det.

Trinn 14: Arduino LCD Project Implementation Process

Arduino LCD -prosjektgjennomføringsprosess
Arduino LCD -prosjektgjennomføringsprosess

maskinvaretilkobling

For å sikre at det neste trinnet i å skrive kode går greit, må vi først bestemme påliteligheten til maskinvaretilkoblingen.

Bare fire stykker maskinvare ble brukt i dette prosjektet:

1. Arduino Mini pro utviklingstavle

2. STONE STVI070WT-01 tft-lcd-skjerm

3. MAX30100 hjertefrekvens- og oksygensensor i blodet

4. MAX3232 (rs232-> TTL) Arduino Mini Pro utviklingskort og STVI070WT-01 TFT-LCD-skjerm er tilkoblet via UART, noe som krever nivåkonvertering gjennom MAX3232, og deretter er Arduino Mini Pro utviklingskort og MAX30100 modul koblet gjennom IIC -grensesnitt. Etter å ha tenkt klart, kan vi tegne følgende ledningsbilde:

Trinn 15:

Bilde
Bilde

Sørg for at det ikke er noen feil i maskinvaretilkoblingen, og fortsett til neste trinn.

Trinn 16: TFT LCD brukergrensesnittdesign

TFT LCD brukergrensesnittdesign
TFT LCD brukergrensesnittdesign

Først og fremst må vi designe et UI -visningsbilde, som kan designes av PhotoShop eller andre bildedesignverktøy. Etter å ha designet UI -skjermbildet, lagre bildet i-j.webp

Åpne programvaren STONE TOOL2019 og lag et nytt prosjekt:

Trinn 17: Fjern bildet som ble lastet som standard i det nye prosjektet, og legg til brukergrensesnittet som vi designet

Fjern bildet som ble lastet som standard i det nye prosjektet, og legg til brukergrensesnittet som vi designet
Fjern bildet som ble lastet som standard i det nye prosjektet, og legg til brukergrensesnittet som vi designet

Trinn 18: Legg til tekstvisningskomponenten

Legg til tekstvisningskomponenten
Legg til tekstvisningskomponenten

Legg til tekstvisningskomponenten, design visningssifret og desimaltegnet, få lagringsstedet for tekstvisningskomponenten i displayet.

Effekten er som følger:

Trinn 19:

Tekstvisningskomponentadresse:

  • Tilkoblingsstatus: 0x0008
  • Puls: 0x0001

Blodoksygen: 0x0005 Hovedinnholdet i brukergrensesnittet er som følger:

  • Tilkoblingsstatus
  • Pulsvisning
  • Blodoksygen viste seg

Trinn 20: Generer konfigurasjonsfil

Generer konfigurasjonsfil
Generer konfigurasjonsfil

Når UI-designen er fullført, kan konfigurasjonsfilen genereres og lastes ned til STVI070WT-01 displaye.

Utfør først trinn 1, sett deretter inn USB -flash -stasjonen i datamaskinen, og disksymbolet vises. Klikk deretter "Last ned til u-disk" for å laste ned konfigurasjonsfilen til USB-flash-stasjonen, og sett deretter inn USB-flash-stasjonen i STVI070WT-01 for å fullføre oppgraderingen.

Trinn 21: MAX30100

MAX30100
MAX30100

MAX30100 kommuniserer via IIC. Arbeidsprinsippet er at hjertefrekvensens ADC -verdi kan oppnås ved infrarød ledning. MAX30100 -registeret kan deles inn i fem kategorier: statlig register, FIFO, kontrollregister, temperaturregister og ID -register. Temperaturregisteret leser temperaturverdien til brikken for å korrigere avviket forårsaket av temperaturen. ID -registeret kan lese brikkens ID -nummer.

MAX30100 er koblet til Arduino Mini Pro utviklingskort gjennom IIC kommunikasjonsgrensesnitt. Fordi det er ferdige MAX30100 biblioteksfiler i Arduino IDE, kan vi lese hjertefrekvens og blodets oksygendata uten å studere registrene til MAX30100. For de som er interessert i å utforske MAX30100-registeret, se MAX30100-databladet.

Trinn 22: Endre MAX30100 IIC Pull-up Resistor

Endre MAX30100 IIC Pull-up Resistor
Endre MAX30100 IIC Pull-up Resistor

Det skal bemerkes at 4,7k pull-up-motstanden til IIC-pinnen på MAX30100-modulen er koblet til 1,8v, noe som ikke er et problem i teorien. Imidlertid er kommunikasjonslogikknivået til Arduino IIC -pinnen 5V, så den kan ikke kommunisere med Arduino uten å endre maskinvaren til MAX30100 -modulen. Direkte kommunikasjon er mulig hvis MCU er STM32 eller en annen 3.3v logisk nivå MCU.

Derfor må følgende endringer gjøres:

Fjern de tre 4,7k -motstandene som er merket på bildet med et elektrisk loddejern. Sveis deretter to motstander på 4,7k på pinnene på SDA og SCL til VIN, slik at vi kan kommunisere med Arduino.

Trinn 23: Arduino

Arduino
Arduino

Åpne Arduino IDE og finn følgende knapper:

Trinn 24: Søk etter "MAX30100" for å finne to biblioteker for MAX30100, klikk deretter på Last ned og installer

Søk etter
Søk etter

Trinn 25: Etter installasjonen kan du finne demonstrasjonen av MAX30100 i LIB -biblioteksmappen til Arduino:

Etter installasjonen kan du finne demonstrasjonen av MAX30100 i LIB -biblioteksmappen til Arduino
Etter installasjonen kan du finne demonstrasjonen av MAX30100 i LIB -biblioteksmappen til Arduino

Trinn 26: Dobbeltklikk på filen for å åpne den

Dobbeltklikk på filen for å åpne den
Dobbeltklikk på filen for å åpne den

Trinn 27: Den komplette koden er som følger:

Denne demoen kan testes direkte. Hvis maskinvaretilkoblingen er ok, kan du laste ned kodesamlingen til Arduibo -utviklingskortet og se dataene til MAX30100 i det serielle feilsøkingsverktøyet.

Den komplette koden er som følger:

/* Arduino-MAX30100 oksimetri /hjertefrekvens integrert sensorbibliotek Copyright (C) 2016 OXullo Intersecans Dette programmet er gratis programvare: du kan omfordele det og /eller endre det under vilkårene i GNU General Public License som utgitt av Free Software Foundation, enten versjon 3 av lisensen, eller (etter eget valg) en senere versjon. Dette programmet distribueres i håp om at det vil være nyttig, men UTEN NOEN GARANTI; uten engang den underforståtte garantien om SALGBARHET eller egnethet for et spesifikt formål. Se GNU General Public License for mer informasjon. Du burde ha mottatt en kopi av GNU General Public License sammen med dette programmet. Hvis ikke, se. ***) beregning PulseOximeter kopper; uint32_t tsLastReport = 0; // Tilbakeringing (registrert nedenfor) avfyres når en puls oppdages ugyldig onBeatDetected () {Serial.println ("Beat!"); } ugyldig oppsett () {Serial.begin (115200); Serial.print ("Initialiserer pulsoksymeter.."); // Initialiser PulseOximeter -forekomsten // Feil skyldes vanligvis feil I2C -ledninger, manglende strømforsyning // eller feil målbrikke hvis (! Pox.begin ()) {Serial.println ("FAILED"); til(;;); } annet {Serial.println ("SUCCESS"); } // Standardstrømmen for IR -lysdioden er 50mA, og den kan endres // ved å ikke kommentere følgende linje. Sjekk MAX30100_Registers.h for alle // tilgjengelige alternativer. // pox.setIRLedCurrent (MAX30100_LED_CURR_7_6MA); // Registrer en tilbakeringing for beatdeteksjonen pox.setOnBeatDetectedCallback (onBeatDetected); } void loop () {// Sørg for å ringe oppdateringen så raskt som mulig pox.update (); // Asynkront dump puls og oksidasjonsnivåer til serien // For begge betyr verdien 0 "ugyldig" if (millis () - tsLastReport> REPORTING_PERIOD_MS) {Serial.print ("Puls:"); Serial.print (pox.getHeartRate ()); Serial.print ("bpm / SpO2:"); Serial.print (pox.getSpO2 ()); Serial.println ("%"); tsLastReport = millis (); }}

Trinn 28:

Bilde
Bilde

Denne koden er veldig enkel, jeg tror du kan forstå den på et øyeblikk. Jeg må si at den modulære programmeringen av Arduino er veldig praktisk, og jeg trenger ikke engang å forstå hvordan driverkoden til Uart og IIC er implementert.

Selvfølgelig er koden ovenfor en offisiell demonstrasjon, og jeg må fortsatt gjøre noen endringer for å vise dataene til STONEs displayer.

Trinn 29: Vis data til STONE Displayer gjennom Arduino

Først må vi få adressen til komponenten som viser puls og oksygendata i blodet i STONEs displayer:

I prosjektet mitt er adressen som følger: Pulsvisningskomponentadresse: 0x0001 Adresse for oksygenvisningsmodul for blod: 0x0005 Status for adresse for sensortilkobling: 0x0008 Hvis du trenger å endre visningsinnholdet i det tilsvarende rommet, kan du endre visningsinnholdet ved å sende data til den tilsvarende adressen til skjermbildet gjennom den serielle porten på Arduino.

Trinn 30: Den endrede koden er som følger:

/* Arduino-MAX30100 oksimetri /hjertefrekvens integrert sensorbibliotek Copyright (C) 2016 OXullo Intersecans Dette programmet er gratis programvare: du kan omfordele det og /eller endre det under vilkårene i GNU General Public License som utgitt av Free Software Foundation, enten versjon 3 av lisensen, eller (etter eget valg) en senere versjon. Dette programmet distribueres i håp om at det vil være nyttig, men UTEN NOEN GARANTI; uten engang den underforståtte garantien om SALGBARHET eller egnethet for et spesifikt formål. Se GNU General Public License for mer informasjon. Du burde ha mottatt en kopi av GNU General Public License sammen med dette programmet. Hvis ikke, se. *** 0x00}; usignert char Sop2_send [8] = {0xA5, 0x5A, 0x05, 0x82, 0x00, / Sop2_dis_addr, 0x00, 0x00}; usignert char connect_sta_send [8] = {0xA5, 0x5A, 0x05, 0x82, 0x00, / connect_sta_addr, 0x00, 0x00}; // PulseOximeter er grensesnittet på det høyere nivået til sensoren // det tilbyr: // * beatdetection -rapportering // * pulsberegning // * SpO2 (oksidasjonsnivå) beregning PulseOximeter -pox; uint32_t tsLastReport = 0; // Tilbakeringing (registrert nedenfor) avfyres når en puls oppdages ugyldig onBeatDetected () {// Serial.println ("Beat!"); } ugyldig oppsett () {Serial.begin (115200); // Serial.print ("Initialiserer pulsoksymeter.."); // Initialiser PulseOximeter -forekomsten // Feil skyldes vanligvis feil I2C -ledninger, manglende strømforsyning // eller feil målbrikke hvis (! Pox.begin ()) {// Serial.println ("FAILED"); // connect_sta_send [7] = 0x00; // Serial.write (connect_sta_send, 8); til(;;); } annet {connect_sta_send [7] = 0x01; Serial.write (connect_sta_send, 8); // Serial.println ("SUCCESS"); } // Standardstrømmen for IR -lysdioden er 50mA, og den kan endres // ved å ikke kommentere følgende linje. Sjekk MAX30100_Registers.h for alle // tilgjengelige alternativer.pox.setIRLedCurrent (MAX30100_LED_CURR_7_6MA); // Registrer en tilbakeringing for beatdeteksjonen pox.setOnBeatDetectedCallback (onBeatDetected); } void loop () {// Sørg for å ringe oppdateringen så raskt som mulig pox.update (); // Asynkront dump puls og oksidasjonsnivåer til serien // For begge betyr verdien 0 "ugyldig" if (millis () - tsLastReport> REPORTING_PERIOD_MS) {// Serial.print ("Puls:"); // 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 (); }}

Trinn 31: Vis puls på LCD -skjermen med Arduino

Vis puls på LCD -skjermen med Arduino
Vis puls på LCD -skjermen med Arduino

Kompilér koden, last den ned til Arduino utviklingstavle, og du er klar til å begynne å teste.

Vi kan se at når fingrene forlater MAX30100, viser pulsen og blodets oksygen 0. Plasser fingeren på MAX30100-oppsamleren for å se pulsen og oksygenivået i blodet i sanntid.

Effekten kan sees på følgende bilde:

Anbefalt: