Indholdsfortegnelse:

Sådan vises puls på STONE LCD med Ar: 31 trin
Sådan vises puls på STONE LCD med Ar: 31 trin

Video: Sådan vises puls på STONE LCD med Ar: 31 trin

Video: Sådan vises puls på STONE LCD med Ar: 31 trin
Video: Hvordan reagerer børn, når man fortæller, at der ikke er råd til at holde jul? 2024, November
Anonim
Sådan vises puls på STONE LCD med Ar
Sådan vises puls på STONE LCD med Ar

kort introduktion

For noget tid siden fandt jeg et pulssensormodul MAX30100 i shopping online. Dette modul kan indsamle brugerens ilt- og pulsdata i blodet, hvilket også er enkelt og praktisk at bruge. Ifølge dataene fandt jeg ud af, at der er biblioteker med MAX30100 i Arduino -bibliotekets filer. Det vil sige, at hvis jeg bruger kommunikationen mellem Arduino og MAX30100, kan jeg direkte ringe til Arduino -bibliotekets filer uden at skulle omskrive driverfilerne. Dette er en god ting, så jeg købte modulet MAX30100.

Trin 1: Jeg besluttede at bruge Arduino til at verificere MAX30100s hjertefrekvens og blodoxygenopsamlingsfunktion

Jeg besluttede at bruge Arduino til at verificere MAX30100s hjertefrekvens og blodoxygenopsamlingsfunktion
Jeg besluttede at bruge Arduino til at verificere MAX30100s hjertefrekvens og blodoxygenopsamlingsfunktion

Bemærk: dette modul er som standard kun med 3,3 V niveau MCU -kommunikation, fordi det som standard bruges til at bruge IIC pin pull up -modstand på 4,7 K til 1,8 V, så der er ingen kommunikation med Arduino som standard, hvis du vil kommunikere med Arduino og har brug for to 4,7 K af IIC pin pull-up modstand tilsluttet VIN pin, vil dette indhold blive introduceret bag i kapitlet.

Trin 2: Funktionelle opgaver

Inden jeg startede dette projekt, tænkte jeg på nogle enkle funktioner:

  • Pulsdata og iltdata i blodet blev indsamlet
  • Puls og iltdata i blodet vises via en LCD -skærm

Dette er de eneste to funktioner, men hvis vi vil implementere det, skal vi tænke mere:

  • Hvilken master MCU bruges?
  • Hvilken slags LCD -display?

Som vi nævnte tidligere, bruger vi Arduino til MCU, men dette er et Arduino LCD -displayprojekt, så vi skal vælge det passende LCD -displaymodul. Jeg planlægger at bruge LCD -skærmen med seriel port. Jeg har en STONE STVI070WT-01 displayer her, men hvis Arduino skal kommunikere med den, er MAX3232 nødvendig for at lave niveaukonvertering. Derefter bestemmes de grundlæggende elektroniske materialer som følger:

1. Arduino Mini Pro udviklingstavle

2. MAX30100 pulsmåler og blod oxygen sensor modul

3. STONE STVI070WT-01 LCD-seriel portvisningsmodul

4. MAX3232 modul

Trin 3: Introduktion til hardware

MAX30100

MAX30100 er en integreret løsning til pulsoximetri og pulsmåler. Den kombinerer to lysdioder, en fotodetektoren, optimeret optik og støjsvag analog signalbehandling til at detektere pulsoximetri og pulssignaler.

MAX30100 fungerer fra 1.8V og 3.3V strømforsyninger og kan slukkes via software med ubetydelig standby -strøm, hvilket gør det muligt for strømforsyningen at forblive tilsluttet hele tiden.

Trin 4: Applikationer

● Bærbare enheder

● Fitness Assistant -enheder

● Medicinske overvågningsenheder

Trin 5: Fordele og funktioner

1, Komplet pulsoximeter og pulssensorløsning forenkler design

  • Integrerede lysdioder, fotosensor og højtydende analog front -slut
  • Små 5,6 mm x 2,8 mm x 1,2 mm 14-benet optisk forbedret system-i-pakke

2 、 Ultra-Low-Power-drift øger batteriets levetid for bærbare enheder

  • Programmerbar prøvehastighed og LED -strøm til strømbesparelser
  • Ultra-lav nedlukningsstrøm (0,7 µA, typ)

3, Avanceret funktionalitet forbedrer måleydelsen

  • Høj SNR Giver Robust Motion Artifact Resilience
  • Integreret annullering af omgivende lys
  • Høj prøvehastighed
  • Hurtig dataoutput kapacitet

Trin 6: Opdagelsesprincip

Opdagelsesprincip
Opdagelsesprincip

Bare tryk din finger mod sensoren for at estimere iltmætning af puls (SpO2) og puls (svarende til hjerteslag).

Pulsoximeteret (oximeter) er et minispektrometer, der bruger principperne for forskellige røde celleabsorptionsspektre til at analysere iltmætningen af blodet. Denne realtids- og hurtige målemetode er også meget udbredt i mange kliniske referencer. Jeg vil ikke introducere MAX30100 for meget, fordi disse materialer er tilgængelige på Internettet. Interesserede venner kan slå oplysningerne fra dette pulsmåletestmodul op på Internettet og have en dybere forståelse af dets detekteringsprincip.

Trin 7: STONE STVI070WT-01

STEN STVI070WT-01
STEN STVI070WT-01

Introduktion til displayet

I dette projekt vil jeg bruge STONE STVI070WT-01 til at vise puls og iltdata i blodet. Driverchippen er integreret inde på skærmen, og der er software, som brugerne kan bruge. Brugere behøver kun at tilføje knapper, tekstbokse og anden logik gennem de designede UI -billeder og derefter generere konfigurationsfiler og downloade dem til skærmen for at køre. Displayet på STVI070WT-01 kommunikerer med MCU via uart-rs232 signal, hvilket betyder, at vi skal tilføje en MAX3232 chip for at konvertere RS232 signal til TTL signal, så vi kan kommunikere med Arduino MCU.

Trin 8: Hvis du ikke er sikker på, hvordan du bruger MAX3232, kan du se følgende billeder:

Hvis du ikke er sikker på, hvordan du bruger MAX3232, se venligst følgende billeder
Hvis du ikke er sikker på, hvordan du bruger MAX3232, se venligst følgende billeder

Hvis du synes, at niveaukonverteringen er for besværlig, kan du vælge andre typer af STONE-udstillere, hvoraf nogle direkte kan sende uart-ttl-signal.

Det officielle websted har detaljerede oplysninger og introduktion:

Trin 9: Hvis du har brug for videotutorials og selvstudier til brug, kan du også finde det på det officielle websted

Hvis du har brug for videovejledninger og vejledninger til brug, kan du også finde det på det officielle websted
Hvis du har brug for videovejledninger og vejledninger til brug, kan du også finde det på det officielle websted

Trin 10: Udviklingstrin

Tre trin i udviklingen af STONE displayskærm:

  • Design visningslogikken og knappelogikken med STONE TOOL -softwaren, og download designfilen til displaymodulet.
  • MCU kommunikerer med STONE LCD -displaymodul via den serielle port.
  • Med dataene opnået i trin 2 udfører MCU andre handlinger.

Trin 11: Installation af stenværktøj

Installation af stenværktøj
Installation af stenværktøj

Download den nyeste version af STONE TOOL -softwaren (i øjeblikket TOOL2019) fra webstedet, og installer det.

Efter softwaren er installeret, åbnes følgende interface:

Klik på knappen "File" i øverste venstre hjørne for at oprette et nyt projekt, som vi vil diskutere senere.

Trin 12: Arduino

Arduino er en open source elektronisk prototype platform, der er let at bruge og let at bruge. Det inkluderer hardwaredelen (forskellige udviklingskort, der overholder Arduino -specifikationen) og softwaredelen (Arduino IDE og relaterede udviklingssæt).

Hardwaredelen (eller udviklingskortet) består af en mikrokontroller (MCU), Flash -hukommelse (Flash) og et sæt universelle input/output -grænseflader (GPIO), som du kan tænke på som et mikrocomputer bundkort. Softwaredelen består hovedsageligt af Arduino IDE på pc, relateret board-level support-pakke (BSP) og rigt tredjeparts funktionsbibliotek. Med Arduino IDE kan du nemt downloade BSP, der er knyttet til dit udviklingskort og de biblioteker, du har brug for at skrive dine programmer. Arduino er en open source -platform. Hidtil har der været mange modeller og mange afledte controllere, herunder Arduino Uno, Arduino Nano, ArduinoYun og så videre. Derudover understøtter Arduino IDE nu ikke kun Arduino -serien udviklingsplader, men tilføjer også understøttelse af populære udviklingsplader som f.eks. som Intel Galileo og NodeMCU ved at introducere BSP.

Arduino registrerer miljøet gennem en række forskellige sensorer, styrende lys, motorer og andre enheder til at føde tilbage og påvirke miljøet. Mikrocontrolleren på tavlen kan programmeres med et Arduino -programmeringssprog, samles i binære filer og brændes ned i mikrokontrolleren. Programmering for Arduino er implementeret med Arduino programmeringssprog (baseret på ledninger) og Arduino udviklingsmiljø (baseret på behandling). Arduino-baserede projekter kan kun indeholde Arduino samt Arduino og anden software, der kører på pc, og de kommunikerer med hver andet (f.eks. Flash, Processing, MaxMSP).

Trin 13: Udviklingsmiljø

Udviklingsmiljø
Udviklingsmiljø

Arduino -udviklingsmiljøet er Arduino IDE, som kan downloades fra Internettet.

Log ind på det officielle websted for Arduino, og download softwaren https://www.arduino.cc/en/Main/Software?setlang=c… Efter installation af Arduino IDE vises følgende grænseflade, når du åbner softwaren:

Arduino IDE opretter to funktioner som standard: opsætningsfunktionen og loop -funktionen. Der er mange Arduino -introduktioner på Internettet. Hvis du ikke forstår noget, kan du gå til Internettet for at finde det.

Trin 14: Arduino LCD -projektimplementeringsproces

Arduino LCD -projektimplementeringsproces
Arduino LCD -projektimplementeringsproces

hardware forbindelse

For at sikre, at det næste trin i at skrive kode går gnidningsløst, skal vi først fastslå pålideligheden af hardware -forbindelsen.

Kun fire stykker hardware blev brugt i dette projekt:

1. Arduino Mini pro udviklingsplade

2. STONE STVI070WT-01 tft-lcd skærm

3. MAX30100 hjertefrekvens og blod oxygen sensor

4. MAX3232 (rs232-> TTL) Arduino Mini Pro-udviklingskortet og STVI070WT-01 TFT-LCD-skærmen er forbundet via UART, hvilket kræver niveaukonvertering via MAX3232, og derefter er Arduino Mini Pro-udviklingskortet og MAX30100-modulet forbundet via IIC interface. Efter at have tænkt klart kan vi tegne følgende ledningsbillede:

Trin 15:

Billede
Billede

Sørg for, at der ikke er fejl i hardwareforbindelsen, og fortsæt til næste trin.

Trin 16: Design af TFT LCD -brugergrænseflade

TFT LCD brugergrænseflade design
TFT LCD brugergrænseflade design

Først og fremmest skal vi designe et UI -displaybillede, som kan designes af PhotoShop eller andre billeddesignværktøjer. Når du har designet UI -visningsbilledet, skal du gemme billedet i-j.webp

Åbn softwaren STONE TOOL2019 og opret et nyt projekt:

Trin 17: Fjern det billede, der blev indlæst som standard i det nye projekt, og tilføj det UI -billede, vi designede

Fjern det billede, der blev indlæst som standard i det nye projekt, og tilføj det UI -billede, vi designede
Fjern det billede, der blev indlæst som standard i det nye projekt, og tilføj det UI -billede, vi designede

Trin 18: Tilføj komponenten til tekstvisning

Tilføj komponenten til tekstvisning
Tilføj komponenten til tekstvisning

Tilføj tekstvisningskomponenten, design displaycifret og decimalpunktet, få lagringsstedet for tekstvisningskomponenten i displayet.

Effekten er som følger:

Trin 19:

Tekstvisningskomponentadresse:

  • Tilslutningsstørrelse: 0x0008
  • Puls: 0x0001

Blodoxygen: 0x0005 Hovedindholdet i UI -grænsefladen er som følger:

  • Forbindelsesstatus
  • Pulsvisning
  • Blod -ilt viste sig

Trin 20: Generer konfigurationsfil

Generer konfigurationsfil
Generer konfigurationsfil

Når UI-designet er fuldført, kan konfigurationsfilen genereres og downloades til STVI070WT-01 displaye.

Først skal du udføre trin 1, derefter indsætte usb -flashdrevet i computeren, og disksymbolet vises. Klik derefter på "Download til u-disk" for at downloade konfigurationsfilen til usb-flashdrevet, og indsæt derefter usb-flashdrevet i STVI070WT-01 for at fuldføre opgraderingen.

Trin 21: MAX30100

MAX30100
MAX30100

MAX30100 kommunikerer via IIC. Dets arbejdsprincip er, at pulsens ADC -værdi kan opnås gennem infrarød ledbestråling. Max30100 -registret kan opdeles i fem kategorier: statsregister, FIFO, kontrolregister, temperaturregister og ID -register. Temperaturregisteret læser chipens temperaturværdi for at korrigere afvigelsen forårsaget af temperaturen. ID -registret kan læse chipens ID -nummer.

MAX30100 er forbundet med Arduino Mini Pro -udviklingskortet via IIC -kommunikationsgrænsefladen. Fordi der er færdige MAX30100 biblioteksfiler i Arduino IDE, kan vi læse puls- og iltdata i blodet uden at studere MAX30100's registre. For dem, der er interesseret i at udforske MAX30100-registret, se MAX30100-databladet.

Trin 22: Rediger MAX30100 IIC Pull-up Resistor

Rediger MAX30100 IIC Pull-up Resistor
Rediger MAX30100 IIC Pull-up Resistor

Det skal bemærkes, at 4,7k pull-up-modstanden for IIC-stiften på MAX30100-modulet er forbundet til 1,8v, hvilket ikke er et problem i teorien. Kommunikationslogikniveauet for Arduino IIC -stiften er imidlertid 5V, så det kan ikke kommunikere med Arduino uden at ændre hardware i MAX30100 -modulet. Direkte kommunikation er mulig, hvis MCU'en er STM32 eller et andet 3.3v logisk niveau MCU.

Derfor skal følgende ændringer foretages:

Fjern de tre 4,7k modstande markeret på billedet med et elektrisk loddejern. Svejs derefter to modstande på 4,7k ved stifterne på SDA og SCL til VIN, så vi kan kommunikere med Arduino.

Trin 23: Arduino

Arduino
Arduino

Åbn Arduino IDE, og find følgende knapper:

Trin 24: Søg efter "MAX30100" for at finde to biblioteker til MAX30100, klik derefter på Download og installer

Søge efter
Søge efter

Trin 25: Efter installationen kan du finde demonstrationen af MAX30100 i LIB -biblioteksmappen i Arduino:

Efter installationen kan du finde demonstrationen af MAX30100 i LIB -biblioteksmappen i Arduino
Efter installationen kan du finde demonstrationen af MAX30100 i LIB -biblioteksmappen i Arduino

Trin 26: Dobbeltklik på filen for at åbne den

Dobbeltklik på filen for at åbne den
Dobbeltklik på filen for at åbne den

Trin 27: Den komplette kode er som følger:

Denne demo kan testes direkte. Hvis hardwareforbindelsen er ok, kan du downloade kodesamlingen til Arduibo -udviklingskortet og se dataene fra MAX30100 i det serielle fejlfindingsværktøj.

Den komplette kode er som følger:

/* Arduino-MAX30100 oximetri /puls integreret sensorbibliotek Copyright (C) 2016 OXullo Intersecans Dette program er gratis software: du kan omfordele det og /eller ændre det under vilkårene i GNU General Public License som udgivet af Free Software Foundation, enten version 3 af licensen eller (efter eget valg) en senere version. Dette program distribueres i håb om, at det vil være nyttigt, men UDEN NOGEN GARANTI; uden selv den underforståede garanti om SALGSMÆSSIGHED eller egnethed til et særligt formål. Se GNU General Public License for flere detaljer. Du skulle have modtaget en kopi af GNU General Public License sammen med dette program. Hvis ikke, se. ***) beregning PulseOximeter pox; uint32_t tsLastReport = 0; // Tilbagekaldelse (registreret nedenfor) affyret, når en puls detekteres ugyldig onBeatDetected () {Serial.println ("Beat!"); } ugyldig opsætning () {Serial.begin (115200); Serial.print ("Initialiserer pulsoximeter.."); // Initialiser PulseOximeter -forekomsten // Fejl skyldes generelt en forkert I2C -ledning, manglende strømforsyning // eller forkert målchip, hvis (! Pox.begin ()) {Serial.println ("FAILED"); til(;;); } ellers {Serial.println ("SUCCESS"); } // Standardstrømmen for IR -LED'en er 50mA, og den kan ændres // ved ikke at kommentere følgende linje. Kontroller MAX30100_Registers.h for alle // tilgængelige muligheder. // pox.setIRLedCurrent (MAX30100_LED_CURR_7_6MA); // Registrer et tilbagekald til beatdetektering pox.setOnBeatDetectedCallback (onBeatDetected); } void loop () {// Sørg for at kalde opdatering så hurtigt som muligt pox.update (); // Asynkront dump puls og oxidationsniveauer til serien // For begge betyder værdien 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 (); }}

Trin 28:

Billede
Billede

Denne kode er meget enkel, jeg tror, at du kan forstå det på et øjeblik. Jeg må sige, at den modulære programmering af Arduino er meget praktisk, og jeg behøver ikke engang at forstå, hvordan driverkoden til Uart og IIC er implementeret.

Selvfølgelig er ovenstående kode en officiel demo, og jeg skal stadig foretage nogle ændringer for at vise dataene til STONEs displayer.

Trin 29: Vis data til STONE Displayer gennem Arduino

Først skal vi hente adressen på den komponent, der viser puls og iltdata i blodet i STONEs display:

I mit projekt er adressen som følger: Pulsvisningskomponentadresse: 0x0001 Adresse på blod oxygen display -modul: 0x0005 Status for adresse til sensorforbindelse: 0x0008 Hvis du skal ændre displayindholdet i det tilsvarende rum, kan du ændre displayindholdet ved at sende data til den tilsvarende adresse på skærmen gennem den serielle port på Arduino.

Trin 30: Den ændrede kode er som følger:

/* Arduino-MAX30100 oximetri /puls integreret sensorbibliotek Copyright (C) 2016 OXullo Intersecans Dette program er gratis software: du kan omfordele det og /eller ændre det under vilkårene i GNU General Public License som udgivet af Free Software Foundation, enten version 3 af licensen eller (efter eget valg) en senere version. Dette program distribueres i håb om, at det vil være nyttigt, men UDEN NOGEN GARANTI; uden selv den underforståede garanti om SALGSMÆSSIGHED eller egnethed til et særligt formål. Se GNU General Public License for flere detaljer. Du skulle have modtaget en kopi af GNU General Public License sammen med dette program. Hvis ikke, se. *** 0x00}; usigneret char Sop2_send [8] = {0xA5, 0x5A, 0x05, 0x82, 0x00, / Sop2_dis_addr, 0x00, 0x00}; usigneret char connect_sta_send [8] = {0xA5, 0x5A, 0x05, 0x82, 0x00, / connect_sta_addr, 0x00, 0x00}; // PulseOximeter er grænsefladen på det højere niveau til sensoren // den tilbyder: // * beat -detekteringsrapportering // * pulsberegning // * SpO2 (oxidationsniveau) beregning PulseOximeter -pox; uint32_t tsLastReport = 0; // Tilbagekaldelse (registreret nedenfor) affyret, når en puls detekteres ugyldig onBeatDetected () {// Serial.println ("Beat!"); } ugyldig opsætning () {Serial.begin (115200); // Serial.print ("Initialiserer pulsoximeter.."); // Initialiser PulseOximeter -forekomsten // Fejl skyldes generelt en forkert I2C -ledning, manglende strømforsyning // eller forkert målchip, hvis (! Pox.begin ()) {// Serial.println ("FAILED"); // connect_sta_send [7] = 0x00; // Serial.write (connect_sta_send, 8); til(;;); } ellers {connect_sta_send [7] = 0x01; Serial.write (connect_sta_send, 8); // Serial.println ("SUCCESS"); } // Standardstrømmen for IR -LED'en er 50mA, og den kan ændres // ved ikke at kommentere følgende linje. Kontroller MAX30100_Registers.h for alle // tilgængelige muligheder.pox.setIRLedCurrent (MAX30100_LED_CURR_7_6MA); // Registrer et tilbagekald til beatdetektering pox.setOnBeatDetectedCallback (onBeatDetected); } void loop () {// Sørg for at kalde opdatering så hurtigt som muligt pox.update (); // Asynkront dump puls og oxidationsniveauer til serien // For begge betyder værdien 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 (); }}

Trin 31: Vis puls på LCD -skærmen med Arduino

Vis puls på LCD'en med Arduino
Vis puls på LCD'en med Arduino

Kompilér koden, download den til Arduino -udviklingskortet, og du er klar til at begynde at teste.

Vi kan se, at når fingrene forlader MAX30100, viser pulsen og iltet i blodet 0. Placer din finger på MAX30100-samleren for at se din puls og blodets iltindhold i realtid.

Effekten kan ses på følgende billede:

Anbefalede: