Innehållsförteckning:
- Steg 1: Jag bestämde mig för att använda Arduino för att verifiera MAX30100s hjärtfrekvens och blodsyreuppsamlingsfunktion
- Steg 2: Funktionella uppdrag
- Steg 3: Hårdvaruintroduktion
- Steg 4: Applikationer
- Steg 5: Fördelar och funktioner
- Steg 6: Detekteringsprincip
- Steg 7: STONE STVI070WT-01
- Steg 8: Om du inte är säker på hur du använder MAX3232, se följande bilder:
- Steg 9: Om du behöver videotutorials och självstudier att använda kan du också hitta den på den officiella webbplatsen
- Steg 10: Utvecklingssteg
- Steg 11: Installation av STONE TOOL -programvara
- Steg 12: Arduino
- Steg 13: Utvecklingsmiljö
- Steg 14: Arduino LCD -projektets implementeringsprocess
- Steg 15:
- Steg 16: TFT LCD -användargränssnittsdesign
- Steg 17: Ta bort bilden som laddades som standard i det nya projektet och lägg till den användargränssnittsbild som vi utformade
- Steg 18: Lägg till textdisplaykomponenten
- Steg 19:
- Steg 20: Skapa konfigurationsfil
- Steg 21: MAX30100
- Steg 22: Ändra MAX30100 IIC Pull-up Resistor
- Steg 23: Arduino
- Steg 24: Sök efter "MAX30100" för att hitta två bibliotek för MAX30100, klicka sedan på Ladda ner och installera
- Steg 25: Efter installationen kan du hitta demonstrationen av MAX30100 i LIB -biblioteksmappen i Arduino:
- Steg 26: Dubbelklicka på filen för att öppna den
- Steg 27: Den kompletta koden är enligt följande:
- Steg 28:
- Steg 29: Visa data till STONE Displayer via Arduino
- Steg 30: Den modifierade koden följer följande:
- Steg 31: Visa pulsen på LCD -skärmen med Arduino
Video: Hur man visar puls på STONE LCD -skärmen med Ar: 31 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:37
kort introduktion
För en tid sedan hittade jag en pulsmätarmodul MAX30100 när jag handlade på nätet. Denna modul kan samla in blodsyre- och pulsdata från användare, vilket också är enkelt och bekvämt att använda. Enligt uppgifterna fann jag att det finns bibliotek med MAX30100 i Arduino biblioteksfiler. Det vill säga, om jag använder kommunikationen mellan Arduino och MAX30100 kan jag direkt ringa Arduino -biblioteksfilerna utan att behöva skriva om drivrutinsfilerna. Det här är bra, så jag köpte modulen MAX30100.
Steg 1: Jag bestämde mig för att använda Arduino för att verifiera MAX30100s hjärtfrekvens och blodsyreuppsamlingsfunktion
Observera: denna modul som standard endast med 3,3 V -nivå MCU -kommunikation, eftersom den som standard använder IIC -stiftdragningsresistans på 4,7 K till 1,8 V, så det finns ingen kommunikation med Arduino som standard om du vill kommunicera med Arduino och behöver två 4,7 K av IIC-stiftets uppdragningsmotstånd anslutet till VIN-stiftet, kommer detta innehåll att introduceras längst bak i kapitlet.
Steg 2: Funktionella uppdrag
Innan jag startade detta projekt tänkte jag på några enkla funktioner:
- Pulsdata och blodsyreuppgifter samlades in
- Hjärtfrekvens och blodsyresdata visas via en LCD -skärm
Det här är de enda två funktionerna, men om vi vill implementera det måste vi tänka mer:
- Vilken master MCU används?
- Vilken typ av LCD -skärm?
Som vi nämnde tidigare använder vi Arduino för MCU, men det här är ett Arduino LCD -displayprojekt, så vi måste välja lämplig LCD -displaymodul. Jag planerar att använda LCD -skärmen med serieport. Jag har en STONE STVI070WT-01 displayer här, men om Arduino behöver kommunicera med den behövs MAX3232 för att göra nivåkonvertering. Sedan bestäms de grundläggande elektroniska materialen enligt följande:
1. Arduino Mini Pro utvecklingskort
2. MAX30100 hjärtfrekvens och blodsyresensormodul
3. STONE STVI070WT-01 LCD-seriell portvisningsmodul
4. MAX3232 -modul
Steg 3: Hårdvaruintroduktion
MAX30100
MAX30100 är en integrerad lösning för pulsoximetri och pulsmätare. Den kombinerar två lysdioder, en fotodetektorn, optimerad optik och ljudlös analog signalbehandling för att detektera pulsoximetri och pulssignaler.
MAX30100 drivs från 1,8V och 3,3V nätaggregat och kan stängas av via programvara med försumbar standbyström, vilket gör att strömförsörjningen alltid kan vara ansluten.
Steg 4: Applikationer
● Bärbara enheter
● Fitness Assistant -enheter
● Medicinsk övervakningsenhet
Steg 5: Fördelar och funktioner
1 、 Komplett pulsoximeter och pulssensorslösning förenklar designen
- Integrerade lysdioder, fotosensor och högpresterande analog framsida
- Liten 5,6 mm x 2,8 mm x 1,2 mm 14-stifts optiskt förbättrat system-i-paket
2 、 Ultra-Low-Power-drift Ökar batteriets livslängd för bärbara enheter
- Programmerbar samplingshastighet och LED -ström för energibesparingar
- Ultra-låg avstängningsström (0,7 µA, typ)
3 、 Avancerad funktionalitet förbättrar mätprestanda
- Hög SNR ger robust motståndskraft mot artefakter
- Integrerad avstängning av omgivande ljus
- Hög provhastighet
- Snabb datautmatning
Steg 6: Detekteringsprincip
Tryck bara fingret mot sensorn för att uppskatta pulsens syremättnad (SpO2) och puls (motsvarande hjärtslag).
Pulsoximetern (oximetern) är en minispektrometer som använder principerna för olika röda cellabsorptionsspektra för att analysera blodets syremättnad. Denna realtids- och snabbmätningsmetod används också ofta i många kliniska referenser. Jag kommer inte att introducera MAX30100 för mycket, eftersom dessa material är tillgängliga på Internet. Intresserade vänner kan leta upp informationen från denna pulsmätningsmodul på Internet och få en djupare förståelse för dess detekteringsprincip.
Steg 7: STONE STVI070WT-01
Introduktion till displayen
I detta projekt kommer jag att använda STONE STVI070WT-01 för att visa hjärtfrekvens och blodsyresdata. Drivrutinen har integrerats inuti skärmen och det finns programvara för användare att använda. Användare behöver bara lägga till knappar, textrutor och annan logik genom de utformade UI -bilderna och sedan generera konfigurationsfiler och ladda ner dem till skärmen för att köra. Displayen på STVI070WT-01 kommunicerar med MCU via uart-rs232-signal, vilket innebär att vi måste lägga till ett MAX3232-chip för att konvertera RS232-signal till TTL-signal, så att vi kan kommunicera med Arduino MCU.
Steg 8: Om du inte är säker på hur du använder MAX3232, se följande bilder:
Om du tycker att nivåkonverteringen är för besvärlig kan du välja andra typer av STONE-displayer, varav några direkt kan mata ut uart-ttl-signal.
Den officiella webbplatsen har detaljerad information och introduktion:
Steg 9: Om du behöver videotutorials och självstudier att använda kan du också hitta den på den officiella webbplatsen
Steg 10: Utvecklingssteg
Tre steg i utvecklingen av STONE -skärmen:
- Designa displaylogiken och knapplogiken med programvaran STONE TOOL och ladda ner designfilen till displaymodulen.
- MCU kommunicerar med STONE LCD -displaymodul via serieporten.
- Med data som erhållits i steg 2 gör MCU andra åtgärder.
Steg 11: Installation av STONE TOOL -programvara
Ladda ner den senaste versionen av programvaran STONE TOOL (för närvarande TOOL2019) från webbplatsen och installera den.
Efter att programvaran har installerats öppnas följande gränssnitt:
Klicka på "Arkiv" -knappen i det övre vänstra hörnet för att skapa ett nytt projekt, som vi kommer att diskutera senare.
Steg 12: Arduino
Arduino är en öppen källkod elektronisk prototypplattform som är lätt att använda och lätt att använda. Den innehåller hårdvarudelen (olika utvecklingskort som överensstämmer med Arduino -specifikationen) och programvarudelen (Arduino IDE och relaterade utvecklingssatser).
Hårdvarudelen (eller utvecklingskortet) består av en mikrokontroller (MCU), Flash -minne (Flash) och en uppsättning universella ingångs-/utgångsgränssnitt (GPIO), som du kan tänka dig som ett mikrodatorns moderkort. Programvarudelen består huvudsakligen av Arduino IDE på PC, relaterat board-support-paket (BSP) och rikt tredjepartsfunktionsbibliotek. Med Arduino IDE kan du enkelt ladda ner BSP som är kopplat till ditt utvecklingskort och de bibliotek du behöver att skriva dina program. Arduino är en öppen källkod plattform. Hittills har det funnits många modeller och många härledda styrenheter, inklusive Arduino Uno, Arduino Nano, ArduinoYun och så vidare. Dessutom stöder Arduino IDE nu inte bara Arduino -seriens utvecklingskort, utan lägger också till stöd för populära utvecklingskort som t.ex. som Intel Galileo och NodeMCU genom att introducera BSP.
Arduino känner av miljön genom en mängd olika sensorer, kontrollampor, motorer och andra enheter för att mata tillbaka och påverka miljön. Mikrokontrollern på kortet kan programmeras med ett Arduino -programmeringsspråk, sammanställas i binärer och brännas in i mikrokontrollern. Programmering för Arduino implementeras med Arduino programmeringsspråk (baserat på ledningar) och Arduino utvecklingsmiljö (baserat på bearbetning). Arduino-baserade projekt kan endast innehålla Arduino, liksom Arduino och annan programvara som körs på PC, och de kommunicerar med varje annat (som Flash, Processing, MaxMSP).
Steg 13: Utvecklingsmiljö
Arduino -utvecklingsmiljön är Arduino IDE, som kan laddas ner från Internet.
Logga in på Arduinos officiella webbplats och ladda ner programvaran https://www.arduino.cc/en/Main/Software?setlang=c… Efter installationen av Arduino IDE visas följande gränssnitt när du öppnar programvaran:
Arduino IDE skapar två funktioner som standard: installationsfunktionen och loop -funktionen. Det finns många Arduino -introduktioner på Internet. Om du inte förstår något kan du gå till Internet för att hitta det.
Steg 14: Arduino LCD -projektets implementeringsprocess
hårdvaruanslutning
För att se till att nästa steg i att skriva kod går smidigt måste vi först fastställa maskinvaruanslutningens tillförlitlighet.
Endast fyra hårdvaror användes i detta projekt:
1. Arduino Mini pro utvecklingsbräda
2. STONE STVI070WT-01 tft-lcd-skärm
3. MAX30100 hjärtfrekvens och blodsyresensor
4. MAX3232 (rs232-> TTL) Arduino Mini Pro-utvecklingskortet och STVI070WT-01 TFT-LCD-skärmen är anslutna via UART, vilket kräver nivåkonvertering via MAX3232, sedan ansluts Arduino Mini Pro-utvecklingskortet och MAX30100-modulen via IIC -gränssnitt. Efter att ha tänkt klart kan vi rita följande ledningsbild:
Steg 15:
Se till att det inte finns några fel i maskinvaruanslutningen och fortsätt till nästa steg.
Steg 16: TFT LCD -användargränssnittsdesign
Först och främst måste vi designa en UI -bild som kan designas av PhotoShop eller andra bilddesignverktyg. Spara bilden i-j.webp
Öppna programvaran STONE TOOL2019 och skapa ett nytt projekt:
Steg 17: Ta bort bilden som laddades som standard i det nya projektet och lägg till den användargränssnittsbild som vi utformade
Steg 18: Lägg till textdisplaykomponenten
Lägg till textdisplaykomponenten, utforma visningssiffran och decimalpunkten, få lagringsplatsen för textdisplaykomponenten i displayen.
Effekten är följande:
Steg 19:
Textvisningskomponentadress:
- Anslutning: 0x0008
- Puls: 0x0001
Blodsyre: 0x0005 Huvudinnehållet i UI -gränssnittet är följande:
- Anslutningsstatus
- Pulsvisning
- Blodsyre visade sig
Steg 20: Skapa konfigurationsfil
När UI-designen är klar kan konfigurationsfilen genereras och laddas ner till STVI070WT-01 displaye.
Utför först steg 1, sätt sedan in usb -flashenheten i datorn så visas disksymbolen. Klicka sedan på "Ladda ner till u-disk" för att ladda ner konfigurationsfilen till USB-flashenheten och sätt sedan in USB-flashenheten i STVI070WT-01 för att slutföra uppgraderingen.
Steg 21: MAX30100
MAX30100 kommunicerar via IIC. Dess arbetsprincip är att hjärtfrekvensens ADC -värde kan erhållas genom infraröd ledstrålning. MAX30100 -registret kan delas in i fem kategorier: statligt register, FIFO, kontrollregister, temperaturregister och ID -register. Temperaturregistret läser temperaturvärdet för chipet för att korrigera avvikelsen som orsakas av temperaturen. ID -registret kan läsa chipets ID -nummer.
MAX30100 är anslutet till Arduino Mini Pro -utvecklingskortet via IIC -kommunikationsgränssnittet. Eftersom det finns färdiga MAX30100-biblioteksfiler i Arduino IDE kan vi läsa hjärtfrekvens och blodsyresdata utan att studera registren för MAX30100. För dem som är intresserade av att utforska MAX30100-registret, se MAX30100-databladet.
Steg 22: Ändra MAX30100 IIC Pull-up Resistor
Det bör noteras att 4,7k pull-up-motståndet för IIC-stiftet på MAX30100-modulen är anslutet till 1,8v, vilket inte är ett problem i teorin. Kommunikationslogiknivån för Arduino IIC -stiftet är dock 5V, så den kan inte kommunicera med Arduino utan att ändra hårdvaran i MAX30100 -modulen. Direkt kommunikation är möjlig om MCU är STM32 eller en annan 3.3v logiknivå MCU.
Därför måste följande ändringar göras:
Ta bort de tre 4,7k -motstånden som är markerade på bilden med ett elektriskt lödkolv. Svets sedan två motstånd på 4,7k vid stiften på SDA och SCL till VIN, så att vi kan kommunicera med Arduino.
Steg 23: Arduino
Öppna Arduino IDE och hitta följande knappar:
Steg 24: Sök efter "MAX30100" för att hitta två bibliotek för MAX30100, klicka sedan på Ladda ner och installera
Steg 25: Efter installationen kan du hitta demonstrationen av MAX30100 i LIB -biblioteksmappen i Arduino:
Steg 26: Dubbelklicka på filen för att öppna den
Steg 27: Den kompletta koden är enligt följande:
Denna demo kan testas direkt. Om maskinvaruanslutningen är ok kan du ladda ner kodsammanställningen till Arduibo -utvecklingskortet och se data från MAX30100 i det seriella felsökningsverktyget.
Den fullständiga koden är följande:
/* Arduino-MAX30100 oximetri /puls integrerat sensorbibliotek Copyright (C) 2016 OXullo Intersecans Detta program är gratis programvara: du kan omfördela det och /eller ändra det enligt villkoren i GNU General Public License som publicerats av Free Software Foundation, antingen version 3 av licensen, eller (efter eget val) någon senare version. Detta program distribueras i hopp om att det kommer att vara användbart, men UTAN NÅGON GARANTI; utan ens den underförstådda garantin om SÄLJBARHET eller KRAV FÖR ETT SÄRSKILT SYFTE. Se GNU General Public License för mer information. Du borde ha fått en kopia av GNU General Public License tillsammans med detta program. Om inte, se. ***) beräkning PulseOximeter pox; uint32_t tsLastReport = 0; // Återuppringning (registrerad nedan) avfyras när en puls detekteras ogiltig onBeatDetected () {Serial.println ("Beat!"); } void setup () {Serial.begin (115200); Serial.print ("Initialiserar pulsoximeter.."); // Initiera PulseOximeter -instansen // Fel beror i allmänhet på felaktig I2C -ledning, saknad strömförsörjning // eller fel målchip om (! Pox.begin ()) {Serial.println ("FAILED"); för(;;); } annat {Serial.println ("SUCCESS"); } // Standardströmmen för IR -lysdioden är 50mA och den kan ändras // genom att inte kommentera följande rad. Kontrollera MAX30100_Registers.h för alla // tillgängliga alternativ. // pox.setIRLedCurrent (MAX30100_LED_CURR_7_6MA); // Registrera ett återuppringning för beatdetekteringen pox.setOnBeatDetectedCallback (onBeatDetected); } void loop () {// Se till att ringa uppdatering så snabbt som möjligt pox.update (); // Asynkront dumpa hjärtfrekvens och oxidationsnivåer till serien // För båda betyder värdet 0 "ogiltigt" 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 (); }}
Steg 28:
Den här koden är väldigt enkel, jag tror att du kan förstå den med en blick. Jag måste säga att den modulära programmeringen av Arduino är mycket bekväm, och jag behöver inte ens förstå hur drivrutinkoden för Uart och IIC implementeras.
Naturligtvis är ovanstående kod en officiell demo, och jag måste fortfarande göra några ändringar för att visa data för STONE: s displayer.
Steg 29: Visa data till STONE Displayer via Arduino
Först måste vi få adressen till den komponent som visar hjärtfrekvens och blodsyre -data i STONE: s displayer:
I mitt projekt är adressen följande: Pulsvisningskomponentadress: 0x0001 Adress för blodsyremodul: 0x0005 Status för adress för sensoranslutning: 0x0008 Om du behöver ändra bildinnehållet i motsvarande utrymme kan du ändra visningsinnehållet genom att skicka data till motsvarande adress på skärmen genom serieporten på Arduino.
Steg 30: Den modifierade koden följer följande:
/* Arduino-MAX30100 oximetri /puls integrerat sensorbibliotek Copyright (C) 2016 OXullo Intersecans Detta program är gratis programvara: du kan omfördela det och /eller ändra det enligt villkoren i GNU General Public License som publicerats av Free Software Foundation, antingen version 3 av licensen, eller (efter eget val) någon senare version. Detta program distribueras i hopp om att det kommer att vara användbart, men UTAN NÅGON GARANTI; utan ens den underförstådda garantin om SÄLJBARHET eller KRAV FÖR ETT SÄRSKILT SYFTE. Se GNU General Public License för mer information. Du borde ha fått en kopia av GNU General Public License tillsammans med detta program. Om inte, se. *** 0x00}; osignerad char Sop2_send [8] = {0xA5, 0x5A, 0x05, 0x82, 0x00, / Sop2_dis_addr, 0x00, 0x00}; osignerad char connect_sta_send [8] = {0xA5, 0x5A, 0x05, 0x82, 0x00, / connect_sta_addr, 0x00, 0x00}; // PulseOximeter är gränssnittet på högre nivå till sensorn // den erbjuder: // * beatdetekteringsrapport // * pulsberäkning // * SpO2 (oxidationsnivå) beräkning PulseOximeter pox; uint32_t tsLastReport = 0; // Återuppringning (registrerad nedan) avfyras när en puls detekteras void onBeatDetected () {// Serial.println ("Beat!"); } void setup () {Serial.begin (115200); // Serial.print ("Initierar pulsoximeter.."); // Initiera PulseOximeter -instansen // Fel beror i allmänhet på felaktig I2C -ledning, saknad strömförsörjning // eller fel målchip om (! Pox.begin ()) {// Serial.println ("FAILED"); // connect_sta_send [7] = 0x00; // Serial.write (connect_sta_send, 8); för(;;); } annat {connect_sta_send [7] = 0x01; Serial.write (connect_sta_send, 8); // Serial.println ("SUCCESS"); } // Standardströmmen för IR -lysdioden är 50mA och den kan ändras // genom att inte kommentera följande rad. Kontrollera MAX30100_Registers.h för alla // tillgängliga alternativ.pox.setIRLedCurrent (MAX30100_LED_CURR_7_6MA); // Registrera ett återuppringning för beatdetekteringen pox.setOnBeatDetectedCallback (onBeatDetected); } void loop () {// Se till att ringa uppdatering så snabbt som möjligt pox.update (); // Dumpa asynkront puls och oxidationsnivåer till serien // För båda betyder värdet 0 "ogiltigt" 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 (); }}
Steg 31: Visa pulsen på LCD -skärmen med Arduino
Kompilera koden, ladda ner den till Arduino utvecklingskort och du är redo att börja testa.
Vi kan se att när fingrarna lämnar MAX30100 visar pulsen och blodets syre 0. Placera fingret på MAX30100-uppsamlaren för att se din puls och blodets syrehalter i realtid.
Effekten kan ses på följande bild:
Rekommenderad:
DIY Hur man visar tid på M5StickC ESP32 med Visuino - enkelt att göra: 9 steg
DIY Hur man visar tid på M5StickC ESP32 med Visuino - enkelt att göra: I den här självstudien lär vi oss hur man programmerar ESP32 M5Stack StickC med Arduino IDE och Visuino för att visa tiden på LCD -skärmen
Puls på STONE LCD: 7 steg
Puls på STONE LCD: För en tid sedan hittade jag en pulsmätarmodul MAX30100 när jag handlade online. Denna modul kan samla in blodsyre- och hjärtfrekvensdata för användare, vilket också är enkelt och bekvämt att använda. Enligt uppgifterna fann jag att det finns bibliotek av M
16 X 2 LCD I2c Visar MQTT -data: 3 steg
16 X 2 LCD I2c Visar MQTT -data: Tack till Random Nerd Tutorials och 3KU_Delta för deras inspiration, hjälp och kod
Hur man visar ett meddelande på en SenseHat: 5 steg
Hur man visar ett meddelande på en SenseHat: Hej, idag kommer jag att visa dig hur du visar ett meddelande på en Raspberry Pi SenseHat
Visar knappsatsnumren i 16 X 2 LCD med 8051: 4 steg
Visar knappsatsnumren i 16 X 2 LCD med 8051: I det här projektet ska vi koppla knappsats och LCD med 8051. När vi trycker på tangenten i knappsatsen får vi korrespondensnumret i vår LCD