Obsah:

Jak zobrazit srdeční frekvenci na kamenném LCD displeji pomocí Ar: 31 kroků
Jak zobrazit srdeční frekvenci na kamenném LCD displeji pomocí Ar: 31 kroků

Video: Jak zobrazit srdeční frekvenci na kamenném LCD displeji pomocí Ar: 31 kroků

Video: Jak zobrazit srdeční frekvenci na kamenném LCD displeji pomocí Ar: 31 kroků
Video: Život po infarktu – otázky a odpovědi 2024, Červenec
Anonim
Jak zobrazit srdeční frekvenci na kamenném LCD displeji pomocí Ar
Jak zobrazit srdeční frekvenci na kamenném LCD displeji pomocí Ar

stručný úvod

Před nějakou dobou jsem při online nakupování našel modul snímače tepové frekvence MAX30100. Tento modul může shromažďovat údaje o krevním kyslíku a tepové frekvenci uživatelů, což je také jednoduché a pohodlné použití. Podle údajů jsem zjistil, že v souborech knihoven Arduino jsou knihovny MAX30100. To znamená, že pokud používám komunikaci mezi Arduino a MAX30100, mohu přímo volat soubory knihovny Arduino, aniž bych musel přepisovat soubory ovladačů. To je dobře, proto jsem koupil modul MAX30100.

Krok 1: Rozhodl jsem se použít Arduino k ověření funkce odběru srdeční frekvence a krevního kyslíku u MAX30100

Rozhodl jsem se použít Arduino k ověření funkce odběru srdeční frekvence a krevního kyslíku u MAX30100
Rozhodl jsem se použít Arduino k ověření funkce odběru srdeční frekvence a krevního kyslíku u MAX30100

Poznámka: tento modul je ve výchozím nastavení pouze s komunikací MCU na úrovni 3,3 V, protože ve výchozím nastavení používá odpor vytažení pinů IIC 4,7 K až 1,8 V, takže ve výchozím nastavení neexistuje komunikace s Arduino, pokud chcete komunikovat s Arduino a potřebujete dva 4,7 K IIC pinového výsuvného odporu připojeného ke kolíku VIN, tento obsah bude představen v zadní části kapitoly.

Krok 2: Funkční přiřazení

Před zahájením tohoto projektu jsem přemýšlel o několika jednoduchých funkcích:

  • Byly shromážděny údaje o srdeční frekvenci a kyslíku v krvi
  • Údaje o srdeční frekvenci a krevním kyslíku se zobrazují na LCD obrazovce

Toto jsou jediné dvě funkce, ale pokud ji chceme implementovat, musíme více přemýšlet:

  • Jaký hlavní MCU se používá?
  • Jaký LCD displej?

Jak jsme již zmínili dříve, pro MCU používáme Arduino, ale toto je projekt Arduino LCD displeje, takže musíme vybrat příslušný modul displeje LCD. Mám v plánu použít obrazovku LCD se sériovým portem. Mám zde zobrazovač STONE STVI070WT-01, ale pokud s ním Arduino potřebuje komunikovat, je potřeba MAX3232 k provedení převodu úrovně. Poté jsou základní elektronické materiály určeny následovně:

1. Vývojová deska Arduino Mini Pro

2. MAX30100 modul snímače srdeční frekvence a krevního kyslíku

3. STONE STVI070WT-01 LCD modul pro zobrazení sériového portu

4. Modul MAX3232

Krok 3: Úvod do hardwaru

MAX30100

MAX30100 je integrované řešení snímače pulsní oxymetrie a snímače srdečního tepu. Kombinuje dvě diody LED, fotodetektor, optimalizovanou optiku a zpracování analogového signálu s nízkým šumem pro detekci signálů pulzní oxymetrie a tepové frekvence.

MAX30100 pracuje z napájecích zdrojů 1,8 V a 3,3 V a lze jej vypnout pomocí softwaru se zanedbatelným pohotovostním proudem, což umožňuje, aby napájecí zdroj zůstal vždy připojen.

Krok 4: Aplikace

● Nositelná zařízení

● Zařízení Fitness Assistant

● Lékařská monitorovací zařízení

Krok 5: Výhody a funkce

1 、 Kompletní pulzní oxymetr a snímač srdečního tepu Řešení zjednodušuje design

  • Integrované LED diody, foto senzor a vysoce výkonný analogový přední konec
  • Malý 5,6 mm x 2,8 mm x 1,2 mm 14pinový opticky vylepšený balíček systému

2 、 Provoz s extrémně nízkou spotřebou prodlužuje životnost baterie u nositelných zařízení

  • Programovatelná vzorkovací frekvence a proud LED pro úsporu energie
  • Extrémně nízký vypínací proud (0,7 µA, typ.)

3 、 Pokročilá funkčnost zlepšuje výkon měření

  • Vysoká SNR poskytuje odolnost proti pohybovým artefaktům
  • Integrované zrušení okolního světla
  • Vysoká rychlost vzorkování
  • Možnost rychlého výstupu dat

Krok 6: Princip detekce

Princip detekce
Princip detekce

Stisknutím prstu proti senzoru odhadnete pulzní saturaci kyslíkem (SpO2) a puls (ekvivalent srdečního tepu).

Pulzní oxymetr (oximetr) je minispektrometr, který POUŽÍVÁ principy různých absorpčních spekter červených krvinek k analýze nasycení krve kyslíkem. Tato metoda rychlého měření v reálném čase je také široce používána v mnoha klinických referencích. MAX30100 příliš představovat nebudu, protože tyto materiály jsou dostupné na internetu. Zainteresovaní přátelé si mohou vyhledat informace o tomto modulu testu srdečního tepu na internetu a lépe porozumět jeho principu detekce.

Krok 7: STONE STVI070WT-01

STONE STVI070WT-01
STONE STVI070WT-01

Úvod do zobrazovacího zařízení

V tomto projektu použiji STONE STVI070WT-01 k zobrazení údajů o srdeční frekvenci a krevním kyslíku. Čip ovladače byl integrován do obrazovky displeje a uživatelé mohou používat software. Uživatelům stačí přidat tlačítka, textová pole a další logiku prostřednictvím navržených obrázků uživatelského rozhraní a poté vygenerovat konfigurační soubory a stáhnout je na obrazovku, aby se spustily. Displej STVI070WT-01 komunikuje s MCU prostřednictvím signálu uart-rs232, což znamená, že potřebujeme přidat čip MAX3232 pro převod signálu RS232 na signál TTL, abychom mohli komunikovat s Arduino MCU.

Krok 8: Pokud si nejste jisti, jak používat MAX3232, podívejte se na následující obrázky:

Pokud si nejste jisti, jak používat MAX3232, podívejte se na následující obrázky
Pokud si nejste jisti, jak používat MAX3232, podívejte se na následující obrázky

Pokud si myslíte, že převod úrovní je příliš obtížný, můžete zvolit jiné typy zobrazovačů STONE, z nichž některé mohou přímo vysílat signál uart-ttl.

Oficiální webová stránka obsahuje podrobné informace a úvod:

Krok 9: Pokud potřebujete video tutoriály a návody k použití, najdete je také na oficiálních webových stránkách

Pokud potřebujete video tutoriály a návody k použití, najdete je také na oficiálních webových stránkách
Pokud potřebujete video tutoriály a návody k použití, najdete je také na oficiálních webových stránkách

Krok 10: Kroky vývoje

Tři kroky vývoje displeje STONE:

  • Navrhněte logiku zobrazení a logiku tlačítek pomocí softwaru STONE TOOL a stáhněte soubor návrhu do modulu displeje.
  • MCU komunikuje s modulem LCD displeje STONE přes sériový port.
  • S daty získanými v kroku 2 provádí MCU další akce.

Krok 11: Instalace softwaru STONE TOOL

Instalace softwaru STONE TOOL
Instalace softwaru STONE TOOL

Stáhněte si z webu nejnovější verzi softwaru STONE TOOL (aktuálně TOOL2019) a nainstalujte jej.

Po instalaci softwaru se otevře následující rozhraní:

Kliknutím na tlačítko „Soubor“v levém horním rohu vytvoříte nový projekt, o kterém budeme diskutovat později.

Krok 12: Arduino

Arduino je open source platforma elektronických prototypů, která se snadno používá a snadno používá. Obsahuje hardwarovou část (různé vývojové desky, které odpovídají specifikaci Arduino) a softwarovou část (Arduino IDE a související vývojové sady).

Hardwarová část (nebo vývojová deska) se skládá z mikrokontroléru (MCU), paměti Flash (Flash) a sady univerzálních vstupně/výstupních rozhraní (GPIO), které si můžete představit jako základní desku mikropočítače. Softwarová část se skládá hlavně z Arduino IDE na PC, souvisejícího balíčku podpory na úrovni desky (BSP) a bohaté knihovny funkcí třetích stran. S Arduino IDE si můžete snadno stáhnout BSP související s vaší vývojovou deskou a knihovnami, které potřebujete psát své programy. Arduino je open source platforma. Doposud existovalo mnoho modelů a mnoho odvozených řadičů, včetně Arduino Uno, Arduino Nano, ArduinoYun atd. Arduino IDE nyní nejen podporuje vývojové desky řady Arduino, ale také přidává podporu pro populární vývojové desky, jako jsou jako Intel Galileo a NodeMCU zavedením BSP.

Arduino snímá prostředí prostřednictvím řady senzorů, ovládajících světla, motory a další zařízení, aby zpětně reagovalo a ovlivňovalo prostředí. Mikrokontrolér na desce lze naprogramovat pomocí programovacího jazyka Arduino, zkompilovat do binárních souborů a vypálit do mikrokontroléru. Arduino je implementováno s programovacím jazykem Arduino (na základě zapojení) a vývojovým prostředím Arduino (na základě zpracování). Projekty založené na Arduinu mohou obsahovat pouze Arduino, stejně jako Arduino a další software běžící na PC a komunikují s každým jiné (například Flash, Processing, MaxMSP).

Krok 13: Vývojové prostředí

Vývojové prostředí
Vývojové prostředí

Vývojovým prostředím Arduina je Arduino IDE, které lze stáhnout z internetu.

Přihlaste se na oficiální webové stránky Arduina a stáhněte si software https://www.arduino.cc/en/Main/Software?setlang=c… Po instalaci Arduino IDE se po otevření softwaru zobrazí následující rozhraní:

Arduino IDE ve výchozím nastavení vytváří dvě funkce: funkci nastavení a funkci smyčky. Existuje mnoho představení Arduino na internetu. Pokud něčemu nerozumíte, můžete to najít na internetu.

Krok 14: Proces implementace projektu Arduino LCD

Proces implementace projektu Arduino LCD
Proces implementace projektu Arduino LCD

hardwarové připojení

Abychom zajistili, že další krok při psaní kódu proběhne hladce, musíme nejprve určit spolehlivost hardwarového připojení.

V tomto projektu byly použity pouze čtyři kusy hardwaru:

1. Vývojová deska Arduino Mini pro

2. Obrazovka displeje STONE STVI070WT-01 tft-lcd

3. MAX30100 snímač srdeční frekvence a krevního kyslíku

4. MAX3232 (rs232-> TTL) Vývojová deska Arduino Mini Pro a TFT-LCD displej STVI070WT-01 TFT-LCD jsou propojeny pomocí UART, což vyžaduje převod úrovně prostřednictvím MAX3232, a poté vývojová deska Arduino Mini Pro a modul MAX30100 jsou propojeny prostřednictvím Rozhraní IIC. Poté, co jasně přemýšlíme, můžeme nakreslit následující obrázek zapojení:

Krok 15:

obraz
obraz

Ujistěte se, že v hardwarovém připojení nejsou žádné chyby, a přejděte k dalšímu kroku.

Krok 16: Návrh uživatelského rozhraní TFT LCD

Design uživatelského rozhraní TFT LCD
Design uživatelského rozhraní TFT LCD

Nejprve musíme navrhnout obrázek zobrazení uživatelského rozhraní, který může být navržen aplikací PhotoShop nebo jinými nástroji pro návrh obrázků. Po návrhu obrázku zobrazení UI uložte obrázek ve formátu JPG.

Otevřete software STONE TOOL2019 a vytvořte nový projekt:

Krok 17: Odeberte obrázek, který byl načten ve výchozím nastavení v novém projektu, a přidejte obrázek uživatelského rozhraní, který jsme navrhli

Odeberte obrázek, který byl načten ve výchozím nastavení v novém projektu, a přidejte obrázek uživatelského rozhraní, který jsme navrhli
Odeberte obrázek, který byl načten ve výchozím nastavení v novém projektu, a přidejte obrázek uživatelského rozhraní, který jsme navrhli

Krok 18: Přidejte komponentu zobrazení textu

Přidejte komponentu zobrazení textu
Přidejte komponentu zobrazení textu

Přidejte komponentu zobrazení textu, navrhněte zobrazovací číslici a desetinnou čárku, získejte umístění úložiště součásti zobrazení textu v zobrazovači.

Účinek je následující:

Krok 19:

Adresa součásti zobrazení textu:

  • Standardní připojení: 0x0008
  • Tepová frekvence: 0x0001

Krevní kyslík: 0x0005 Hlavní obsah rozhraní uživatelského rozhraní je následující:

  • Stav připojení
  • Zobrazení tepové frekvence
  • Krevní kyslík ukázal

Krok 20: Vygenerujte konfigurační soubor

Generovat konfigurační soubor
Generovat konfigurační soubor

Jakmile je návrh uživatelského rozhraní dokončen, lze konfigurační soubor vygenerovat a stáhnout na displej STVI070WT-01.

Nejprve proveďte krok 1, poté vložte USB flash disk do počítače a zobrazí se symbol disku. Poté kliknutím na „Stáhnout na u-disk“stáhněte konfigurační soubor na USB flash disk a poté vložte USB flash disk do STVI070WT-01 a dokončete upgrade.

Krok 21: MAX30100

MAX30100
MAX30100

MAX30100 komunikuje přes IIC. Jeho princip práce spočívá v tom, že ADC hodnotu srdeční frekvence lze získat pomocí infračerveného ozařování. Registr MAX30100 lze rozdělit do pěti kategorií: stavový registr, FIFO, kontrolní registr, teplotní registr a ID registr. Teplotní registr čte hodnotu teploty čipu, aby opravil odchylku způsobenou teplotou. ID registr může přečíst ID číslo čipu.

MAX30100 je propojen s vývojovou deskou Arduino Mini Pro prostřednictvím komunikačního rozhraní IIC. Protože v Arduino IDE jsou hotové soubory knihoven MAX30100, můžeme číst údaje o srdeční frekvenci a krevním kyslíku, aniž bychom studovali registry MAX30100. Pro ty, kteří mají zájem prozkoumat registr MAX30100, viz datový list MAX30100.

Krok 22: Upravte přítlačný odpor MAX30100 IIC

Upravte přítlačný odpor MAX30100 IIC
Upravte přítlačný odpor MAX30100 IIC

Je třeba poznamenat, že 4,7k tahový odpor IIC pinu modulu MAX30100 je připojen k 1,8 V, což teoreticky není problém. Komunikační logická úroveň pinu Arduino IIC je však 5V, takže nemůže komunikovat s Arduino bez změny hardwaru modulu MAX30100. Přímá komunikace je možná, pokud je MCU STM32 nebo jiný MCU s logickou úrovní 3,3 V.

Proto je třeba provést následující změny:

Pomocí elektrické páječky odstraňte tři odpory 4,7k označené na obrázku. Poté přivařte dva odpory 4,7k na piny SDA a SCL k VIN, abychom mohli komunikovat s Arduinem.

Krok 23: Arduino

Arduino
Arduino

Otevřete Arduino IDE a najděte následující tlačítka:

Krok 24: Vyhledejte „MAX30100“a najděte dvě knihovny pro MAX30100, poté klikněte na Stáhnout a nainstalovat

Hledat
Hledat

Krok 25: Po instalaci najdete demo MAX30100 ve složce knihovny LIB Arduino:

Po instalaci najdete demo MAX30100 ve složce knihovny LIB Arduino
Po instalaci najdete demo MAX30100 ve složce knihovny LIB Arduino

Krok 26: Poklepáním na soubor jej otevřete

Poklepáním na soubor jej otevřete
Poklepáním na soubor jej otevřete

Krok 27: Kompletní kód je následující:

Toto demo lze přímo vyzkoušet. Pokud je hardwarové připojení v pořádku, můžete si stáhnout kompilaci kódu do vývojové desky Arduibo a zobrazit data MAX30100 v nástroji pro sériové ladění.

Úplný kód je následující:

/* Oximetrie Arduino-MAX30100 /integrovaná knihovna snímačů srdeční frekvence Copyright (C) 2016 OXullo Intersecans Tento program je svobodný software: můžete jej znovu distribuovat a /nebo upravovat podle podmínek obecné veřejné licence GNU zveřejněné Free Software Foundation, buď verze 3 licence, nebo (podle vašeho výběru) jakákoli novější verze. Tento program je distribuován v naději, že bude užitečný, ale BEZ JAKÉKOLI ZÁRUKY; bez předpokládané záruky OBCHODOVATELNOSTI nebo VHODNOSTI PRO ZVLÁŠTNÍ ÚČEL. Další podrobnosti viz Obecná veřejná licence GNU. Spolu s tímto programem byste měli obdržet kopii obecné veřejné licence GNU. Pokud ne, viz. */ #include #include "MAX30100_PulseOximeter.h" #define REPORTING_PERIOD_MS 1000 // PulseOximeter je rozhraní vyšší úrovně k senzoru // nabízí: // * hlášení detekce rytmu // * výpočet srdeční frekvence // * SpO2 (úroveň oxidace) výpočet neštovic PulseOximeter; uint32_t tsLastReport = 0; // Zpětné volání (registrováno níže) spuštěno, když je detekován puls neplatný onBeatDetected () {Serial.println ("Beat!"); } neplatné nastavení () {Serial.begin (115200); Serial.print ("Inicializace pulzního oxymetru.."); // Inicializace instance PulseOximeter // Poruchy jsou obecně způsobeny nesprávným zapojením I2C, chybějícím zdrojem napájení // nebo špatným cílovým čipem if (! Pox.begin ()) {Serial.println ("FAILED"); pro(;;); } else {Serial.println ("ÚSPĚCH"); } // Výchozí proud pro IR LED je 50mA a lze jej změnit // odkomentováním následujícího řádku. Na stránce MAX30100_Registers.h najdete všechny // dostupné možnosti. // pox.setIRLedCurrent (MAX30100_LED_CURR_7_6MA); // Zaregistrujte zpětné volání pro detekci beatu pox.setOnBeatDetectedCallback (onBeatDetected); } void loop () {// Nezapomeňte zavolat aktualizaci co nejrychleji pox.update (); // Asynchronně ukládá srdeční frekvence a úrovně oxidace do sériového // Pro obě znamená hodnota 0 „neplatné“, pokud (millis () - tsLastReport> REPORTING_PERIOD_MS) {Serial.print ("Heart rate:"); Serial.print (pox.getHeartRate ()); Serial.print ("bpm / SpO2:"); Serial.print (pox.getSpO2 ()); Serial.println ("%"); tsLastReport = milis (); }}

Krok 28:

obraz
obraz

Tento kód je velmi jednoduchý, věřím, že ho můžete pochopit na první pohled. Musím říci, že modulární programování Arduina je velmi pohodlné a ani nemusím rozumět tomu, jak je implementován kód ovladače Uart a IIC.

Výše uvedený kód je samozřejmě oficiální ukázkou a stále potřebuji provést nějaké změny, abych data zobrazil na displeji STONE.

Krok 29: Zobrazte data na zobrazovač STONE přes Arduino

Nejprve musíme získat adresu komponenty, která zobrazuje údaje o srdeční frekvenci a krevním kyslíku v zobrazovači STONE:

V mém projektu je adresa následující: Adresa komponenty zobrazení tepové frekvence: 0x0001 Adresa modulu zobrazení krevního kyslíku: 0x0005 Stavová adresa připojení senzoru: 0x0008 Pokud potřebujete změnit obsah displeje v odpovídajícím prostoru, můžete změnit obsah displeje odesláním dat na odpovídající adresu obrazovky přes sériový port Arduina.

Krok 30: Upravený kód je následující:

/* Oximetrie Arduino-MAX30100 /integrovaná knihovna snímačů srdeční frekvence Copyright (C) 2016 OXullo Intersecans Tento program je svobodný software: můžete jej znovu distribuovat a /nebo upravovat podle podmínek obecné veřejné licence GNU zveřejněné Free Software Foundation, buď verze 3 licence, nebo (podle vašeho výběru) jakákoli novější verze. Tento program je distribuován v naději, že bude užitečný, ale BEZ JAKÉKOLI ZÁRUKY; bez předpokládané záruky OBCHODOVATELNOSTI nebo VHODNOSTI PRO ZVLÁŠTNÍ ÚČEL. Další podrobnosti viz Obecná veřejná licence GNU. Spolu s tímto programem byste měli obdržet kopii obecné veřejné licence GNU. Pokud ne, viz. */ #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 [0] 0x00}; nepodepsaný znak Sop2_send [8] = {0xA5, 0x5A, 0x05, 0x82, 0x00, / Sop2_dis_addr, 0x00, 0x00}; nepodepsaný znak connect_sta_send [8] = {0xA5, 0x5A, 0x05, 0x82, 0x00, / connect_sta_addr, 0x00, 0x00}; // PulseOximeter je rozhraní vyšší úrovně k senzoru // nabízí: // * hlášení detekce tepu // * výpočet srdeční frekvence // * výpočet SpO2 (úroveň oxidace) PulseOximeter pox; uint32_t tsLastReport = 0; // Zpětné volání (registrováno níže) spuštěno, když je detekován puls neplatný onBeatDetected () {// Serial.println ("Beat!"); } neplatné nastavení () {Serial.begin (115200); // Serial.print ("Inicializace pulzního oxymetru.."); // Inicializace instance PulseOximeter // Poruchy jsou obecně způsobeny nesprávným zapojením I2C, chybějícím napájecím zdrojem // nebo špatným cílovým čipem if (! Pox.begin ()) {// Serial.println ("FAILED"); // connect_sta_send [7] = 0x00; // Serial.write (connect_sta_send, 8); pro(;;); } else {connect_sta_send [7] = 0x01; Serial.write (connect_sta_send, 8); // Serial.println ("ÚSPĚCH"); } // Výchozí proud pro IR LED je 50mA a lze jej změnit // odkomentováním následujícího řádku. Na stránce MAX30100_Registers.h najdete všechny // dostupné možnosti.pox.setIRLedCurrent (MAX30100_LED_CURR_7_6MA); // Zaregistrujte zpětné volání pro detekci beatu pox.setOnBeatDetectedCallback (onBeatDetected); } void loop () {// Nezapomeňte zavolat aktualizaci co nejrychleji pox.update (); // Asynchronně ukládá srdeční frekvence a úrovně oxidace do sériového // Pro obě znamená hodnota 0 „neplatné“, pokud (millis () - tsLastReport> REPORTING_PERIOD_MS) {// Serial.print ("Heart rate:"); // 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 = milis (); }}

Krok 31: Zobrazte srdeční frekvenci na LCD s Arduino

Zobrazte srdeční frekvenci na LCD s Arduino
Zobrazte srdeční frekvenci na LCD s Arduino

Zkompilujte kód, stáhněte jej na vývojovou desku Arduino a jste připraveni začít testovat.

Vidíme, že když prsty opustí MAX30100, zobrazí se srdeční frekvence a krevní kyslík 0. Položte prst na kolektor MAX30100, abyste v reálném čase viděli svoji srdeční frekvenci a hladinu kyslíku v krvi.

Efekt je vidět na následujícím obrázku:

Doporučuje: