Taula de continguts:

Com es mostra la freqüència cardíaca a la pantalla STONE amb AR: 31 passos
Com es mostra la freqüència cardíaca a la pantalla STONE amb AR: 31 passos

Vídeo: Com es mostra la freqüència cardíaca a la pantalla STONE amb AR: 31 passos

Vídeo: Com es mostra la freqüència cardíaca a la pantalla STONE amb AR: 31 passos
Vídeo: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Juliol
Anonim
Com es mostra la freqüència cardíaca a la pantalla STONE amb Ar
Com es mostra la freqüència cardíaca a la pantalla STONE amb Ar

breu introducció

Fa un temps, vaig trobar un mòdul de sensor de freqüència cardíaca MAX30100 a les compres en línia. Aquest mòdul pot recollir dades d’oxigen sanguini i de freqüència cardíaca dels usuaris, que també són senzilles i còmodes d’utilitzar. Segons les dades, vaig trobar que hi ha biblioteques de MAX30100 als fitxers de la biblioteca Arduino. És a dir, si faig servir la comunicació entre Arduino i MAX30100, puc trucar directament als fitxers de la biblioteca Arduino sense haver de reescriure els fitxers del controlador. Això és bo, així que vaig comprar el mòdul de MAX30100.

Pas 1: Vaig decidir utilitzar Arduino per verificar la funció de recollida d’oxigen sanguini i de freqüència cardíaca de MAX30100

Vaig decidir fer servir Arduino per verificar la funció de recollida d’oxigen sanguini i de freqüència cardíaca del MAX30100
Vaig decidir fer servir Arduino per verificar la funció de recollida d’oxigen sanguini i de freqüència cardíaca del MAX30100

Nota: aquest mòdul de manera predeterminada només té comunicacions MCU de 3,3 V, ja que per defecte utilitza una resistència a la pujada del pin IIC de 4,7 K a 1,8 V, de manera que no hi ha comunicació amb l'Arduino per defecte, si voleu compartir amb l'Arduino i necessiten dos 4,7 K de la resistència de tracció del pin IIC connectada al pin VIN, aquest contingut s'introduirà a la part posterior del capítol.

Pas 2: Tasques funcionals

Abans d’iniciar aquest projecte, vaig pensar en algunes funcions senzilles:

  • Es van recollir dades de freqüència cardíaca i dades d’oxigen en sang
  • Les dades de freqüència cardíaca i oxigen sanguini es mostren a través d’una pantalla LCD

Aquestes són les dues úniques funcions, però si volem implementar-la, hem de pensar més:

  • Quina MCU mestra s’utilitza?
  • Quin tipus de pantalla LCD?

Com hem esmentat anteriorment, fem servir Arduino per a l’MCU, però es tracta d’un projecte de pantalla LCD Arduino, per tant, hem de triar el mòdul de pantalla LCD adequat. Tinc previst utilitzar la pantalla LCD amb port sèrie. Tinc un visualitzador STONE STVI070WT-01 aquí, però si Arduino necessita comunicar-s’hi, cal MAX3232 per fer la conversió de nivell. A continuació, els materials electrònics bàsics es determinen de la següent manera:

1. Tauler de desenvolupament Arduino Mini Pro

2. Mòdul de sensor de freqüència cardíaca i oxigen sanguini MAX30100

3. STONE STVI070WT-01 mòdul de visualització del port sèrie LCD

4. Mòdul MAX3232

Pas 3: Introducció al maquinari

MAX30100

El MAX30100 és una solució integrada de sensors d’oximetria de pols i de freqüència cardíaca. Combina dos LED, un fotodetector, òptica optimitzada i processament de senyal analògic de baix soroll per detectar senyals d’oximetria de pols i de freqüència cardíaca.

El MAX30100 funciona amb fonts d’alimentació d’1,8V i 3,3V i es pot apagar mitjançant un programari amb un corrent d’espera insignificant, cosa que permet que la font d’alimentació estigui connectada en tot moment.

Pas 4: aplicacions

● Dispositius portables

● Dispositius de fitness assistant

● Dispositius de vigilància mèdica

Pas 5: avantatges i funcions

1 Ox L'oximetre de pols complet i la solució del sensor de freqüència cardíaca simplifiquen el disseny

  • LED integrats, sensor de foto i frontal analògic d'alt rendiment
  • Petit sistema de 6,6 mm x 2,8 mm x 1,2 mm de 14 pins, òpticament millorat

2 Operation El funcionament de baixa potència augmenta la durada de la bateria dels dispositius portables

  • Velocitat de mostra programable i corrent LED per estalviar energia
  • Corrent d'apagat ultra baix (0,7µA, típic)

3 、 La funcionalitat avançada millora el rendiment de la mesura

  • Un alt SNR proporciona una resistència als artefactes de moviment robusta
  • Cancel·lació de llum ambiental integrada
  • Capacitat de freqüència de mostra alta
  • Capacitat de sortida de dades ràpida

Pas 6: Principi de detecció

Principi de detecció
Principi de detecció

Simplement premeu el dit contra el sensor per estimar la saturació d’oxigen del pols (SpO2) i el pols (equivalent al batec del cor).

El pulsioxímetre (oxímetre) és un miniespectròmetre que utilitza els principis de diferents espectres d’absorció de glòbuls vermells per analitzar la saturació d’oxigen de la sang. Aquest mètode de mesura ràpida i en temps real també s’utilitza àmpliament en moltes referències clíniques. No introduiré massa el MAX30100, perquè aquests materials estan disponibles a Internet. Els amics interessats poden consultar la informació d’aquest mòdul de proves de freqüència cardíaca a Internet i conèixer millor el seu principi de detecció.

Pas 7: PEDRA STVI070WT-01

STONE STVI070WT-01
STONE STVI070WT-01

Introducció al visualitzador

En aquest projecte, utilitzaré STONE STVI070WT-01 per mostrar les dades de freqüència cardíaca i oxigen en sang. El xip del controlador s’ha integrat a la pantalla i hi ha programari que els usuaris poden utilitzar. Els usuaris només necessiten afegir botons, quadres de text i altra lògica a través de les imatges de la interfície d’usuari dissenyades i, a continuació, generar fitxers de configuració i descarregar-los a la pantalla per executar-los. La visualització de STVI070WT-01 es comunica amb la MCU mitjançant el senyal uart-rs232, cosa que significa que hem d’afegir un xip MAX3232 per convertir el senyal RS232 en senyal TTL, de manera que puguem comunicar-nos amb la MCU Arduino.

Pas 8: si no esteu segur de com utilitzar el MAX3232, consulteu les imatges següents:

Si no esteu segur de com utilitzar el MAX3232, consulteu les imatges següents
Si no esteu segur de com utilitzar el MAX3232, consulteu les imatges següents

Si creieu que la conversió de nivell és massa problemàtica, podeu triar altres tipus de visualitzadors de STONE, alguns dels quals poden generar directament senyal uart-ttl.

El lloc web oficial conté informació i informació detallada:

Pas 9: si necessiteu tutorials de vídeo i tutorials per utilitzar, també el podreu trobar al lloc web oficial

Si necessiteu tutorials en vídeo i tutorials per utilitzar, també el podreu trobar al lloc web oficial
Si necessiteu tutorials en vídeo i tutorials per utilitzar, també el podreu trobar al lloc web oficial

Pas 10: Passos de desenvolupament

Tres passos per al desenvolupament de la pantalla de visualització STONE:

  • Dissenyeu la lògica de visualització i la lògica de botons amb el programari STONE TOOL i descarregueu el fitxer de disseny al mòdul de visualització.
  • MCU es comunica amb el mòdul de pantalla LCD STONE a través del port sèrie.
  • Amb les dades obtingudes al pas 2, la MCU fa altres accions.

Pas 11: Instal·lació del programari STONE TOOL

Instal·lació de programari STONE TOOL
Instal·lació de programari STONE TOOL

Descarregueu la versió més recent del programari STONE TOOL (actualment TOOL2019) del lloc web i instal·leu-lo.

Després d’instal·lar el programari, s’obrirà la interfície següent:

Feu clic al botó "Fitxer" a l'extrem superior esquerre per crear un projecte nou, que parlarem més endavant.

Pas 12: Arduino

Arduino és una plataforma de prototip electrònic de codi obert fàcil d'utilitzar i fàcil d'utilitzar. Inclou la part de maquinari (diverses plaques de desenvolupament que s’ajusten a l’especificació d’Arduino) i la part de programari (Arduino IDE i kits de desenvolupament relacionats).

La part de maquinari (o placa de desenvolupament) consisteix en un microcontrolador (MCU), memòria Flash (Flash) i un conjunt d’interfícies d’entrada / sortida universals (GPIO), que podeu considerar com una placa base de microordinadors. La part del programari es compon principalment d’Arduino IDE a PC, paquet de suport a nivell de placa (BSP) i biblioteca de funcions de tercers. Amb l’Arduino IDE, podeu descarregar fàcilment el BSP associat amb la vostra placa de desenvolupament i les biblioteques que necessiteu. per escriure els vostres programes. Arduino és una plataforma de codi obert. Fins ara, hi ha hagut molts models i molts controladors derivats, inclosos Arduino Uno, Arduino Nano, ArduinoYun, etc. A més, Arduino IDE ara no només admet les plaques de desenvolupament de la sèrie Arduino, sinó que també afegeix suport per a les populars plaques de desenvolupament com ara com Intel Galileo i NodeMCU mitjançant la introducció de BSP.

Arduino detecta l’entorn a través d’una gran varietat de sensors, controlant llums, motors i altres dispositius per retroalimentar i influir en l’entorn. per a Arduino s’implementa amb el llenguatge de programació Arduino (basat en el cablejat) i l’entorn de desenvolupament Arduino (basat en Processament). Els projectes basats en Arduino només poden contenir Arduino, així com Arduino i altres programes que s’executen a PC i es comuniquen amb cadascun d’ells. altres (com Flash, Processing, MaxMSP).

Pas 13: entorn de desenvolupament

Entorn de desenvolupament
Entorn de desenvolupament

L’entorn de desenvolupament Arduino és l’IDE Arduino, que es pot descarregar des d’Internet.

Inicieu sessió al lloc web oficial d'Arduino i descarregueu el programari https://www.arduino.cc/en/Main/Software?setlang=c… Després d'instal·lar l'IDE Arduino, apareixerà la següent interfície quan obriu el programari:

L’IDE Arduino crea dues funcions per defecte: la funció de configuració i la funció de bucle. Hi ha moltes introduccions d’Arduino a Internet. Si no enteneu alguna cosa, podeu anar a Internet per trobar-la.

Pas 14: procés d'implementació del projecte LCD Arduino

Procés d'implementació del projecte LCD Arduino
Procés d'implementació del projecte LCD Arduino

connexió de maquinari

Per assegurar-nos que el següent pas en escriure el codi transcorre sense problemes, primer hem de determinar la fiabilitat de la connexió de maquinari.

Només es van utilitzar quatre components de maquinari en aquest projecte:

1. Taula de desenvolupament Arduino Mini pro

2. STONE STVI070WT-01 pantalla tft-lcd

3. Sensor de freqüència cardíaca i oxigen en sang MAX30100

4. MAX3232 (rs232-> TTL) La placa de desenvolupament Arduino Mini Pro i la pantalla de visualització TFT-LCD STVI070WT-01 es connecten mitjançant UART, que requereix una conversió de nivell mitjançant MAX3232, i després es connecten la placa de desenvolupament Arduino Mini Pro i el mòdul MAX30100 Interfície IIC. Després de pensar-ho clarament, podem dibuixar la següent imatge de cablejat:

Pas 15:

Imatge
Imatge

Assegureu-vos que no hi hagi errors a la connexió de maquinari i continueu amb el pas següent.

Pas 16: disseny de la interfície d'usuari TFT LCD

Disseny d'interfície d'usuari LCD TFT
Disseny d'interfície d'usuari LCD TFT

Primer de tot, hem de dissenyar una imatge de visualització d’interfície d’usuari que pugui dissenyar PhotoShop o altres eines de disseny d’imatges. Després de dissenyar la imatge de visualització de la IU, deseu-la en format JPG.

Obriu el programari STONE TOOL2019 i creeu un nou projecte:

Pas 17: traieu la imatge que es va carregar per defecte al nou projecte i afegiu la imatge de la interfície d'usuari que hem dissenyat

Traieu la imatge que es va carregar per defecte al nou projecte i afegiu la imatge d'interfície d'usuari que hem dissenyat
Traieu la imatge que es va carregar per defecte al nou projecte i afegiu la imatge d'interfície d'usuari que hem dissenyat

Pas 18: afegiu el component de visualització de text

Afegiu el component de visualització de text
Afegiu el component de visualització de text

Afegiu el component de visualització de text, dissenyeu el dígit de visualització i el punt decimal, obteniu la ubicació d'emmagatzematge del component de visualització de text al visualitzador.

L’efecte és el següent:

Pas 19:

Adreça del component de visualització de text:

  • Sta de connexió: 0x0008
  • Freqüència cardíaca: 0x0001

Oxigen sanguini: 0x0005 El contingut principal de la interfície d’interfície d’usuari és el següent:

  • Estat de la connexió
  • Visualització de la freqüència cardíaca
  • Va aparèixer oxigen en sang

Pas 20: generar un fitxer de configuració

Genera un fitxer de configuració
Genera un fitxer de configuració

Un cop finalitzat el disseny de la IU, es pot generar i descarregar el fitxer de configuració a la pantalla STVI070WT-01.

Primer, realitzeu el pas 1 i, a continuació, inseriu la unitat flash USB a l'ordinador i es mostrarà el símbol del disc. A continuació, feu clic a "Descarrega a u-disk" per descarregar el fitxer de configuració a la unitat flash USB i, a continuació, introduïu la unitat flash USB a STVI070WT-01 per completar l'actualització.

Pas 21: MAX30100

MAX30100
MAX30100

MAX30100 es comunica a través de la IIC. El seu principi de treball és que el valor ADC de la freqüència cardíaca es pot obtenir mitjançant la irradiació amb led per infrarojos. El registre MAX30100 es pot dividir en cinc categories: registre d’estats, FIFO, registre de control, registre de temperatura i registre d’ID. llegeix el valor de temperatura del xip per corregir la desviació causada per la temperatura. El registre d’identificació pot llegir el número d’identificació del xip.

MAX30100 està connectat amb la placa de desenvolupament Arduino Mini Pro mitjançant la interfície de comunicació IIC. Com que hi ha fitxers de la biblioteca MAX30100 ja fets a l’Arduino IDE, podem llegir les dades de freqüència cardíaca i oxigen sanguini sense estudiar els registres de MAX30100. Per a aquells que estiguin interessats en explorar el registre MAX30100, consulteu el full de dades MAX30100.

Pas 22: Modifiqueu la resistència de tracció MAX30100 IIC

Modifiqueu la resistència de tracció MAX30100 IIC
Modifiqueu la resistència de tracció MAX30100 IIC

Cal tenir en compte que la resistència a la tracció de 4,7 k del pin IIC del mòdul MAX30100 està connectada a 1,8 v, cosa que no és un problema en teoria. Tot i això, el nivell de lògica de comunicació del pin Arduino IIC és de 5 V, de manera que no es pot comunicar amb Arduino sense canviar el maquinari del mòdul MAX30100. La comunicació directa és possible si l’MCU és STM32 o un altre MCU de nivell lògic de 3,3 v.

Per tant, cal fer els canvis següents:

Traieu les tres resistències de 4,7 k marcades a la imatge amb un soldador elèctric. Després soldeu dues resistències de 4,7 k als passadors de SDA i SCL a VIN, de manera que puguem comunicar-nos amb Arduino.

Pas 23: Arduino

Arduino
Arduino

Obriu l'IDE d'Arduino i cerqueu els botons següents:

Pas 24: cerqueu "MAX30100" per trobar dues biblioteques per a MAX30100 i, a continuació, feu clic a Baixa i instal·la

Buscar
Buscar

Pas 25: després de la instal·lació, podeu trobar la demostració de MAX30100 a la carpeta de la biblioteca LIB d'Arduino:

Després de la instal·lació, podeu trobar la demostració de MAX30100 a la carpeta de la biblioteca LIB d'Arduino
Després de la instal·lació, podeu trobar la demostració de MAX30100 a la carpeta de la biblioteca LIB d'Arduino

Pas 26: feu doble clic al fitxer per obrir-lo

Feu doble clic al fitxer per obrir-lo
Feu doble clic al fitxer per obrir-lo

Pas 27: el codi complet és el següent:

Aquesta demostració es pot provar directament. Si la connexió de maquinari està bé, podeu descarregar la compilació de codi a la placa de desenvolupament Arduibo i veure les dades de MAX30100 a l'eina de depuració en sèrie.

El codi complet és el següent:

/ * Arduino-MAX30100 biblioteca de sensors integrada d’oximetria / freqüència cardíaca Copyright (C) 2016 OXullo Intersecans Aquest programa és programari lliure: podeu redistribuir-lo i / o modificar-lo segons els termes de la Llicència Pública General GNU publicada per la Free Software Foundation, ja sigui la versió 3 de la Llicència, o (segons el vostre criteri) qualsevol versió posterior. Aquest programa es distribueix amb l'esperança que sigui útil, però SENSE CAP GARANTIA; ni tan sols amb la garantia implícita de COMERCIALITZACIÓ o IDONEITAT PER A UN PROPOSESIT PARTICULAR. Vegeu la llicència pública general de GNU per obtenir més informació. Hauríeu d’haver rebut una còpia de la llicència pública general de GNU juntament amb aquest programa. Si no, vegeu. * / #include #include "MAX30100_PulseOximeter.h" #define REPORTING_PERIOD_MS 1000 // PulseOximeter és la interfície de nivell superior del sensor // que ofereix: // * informes de detecció de batecs // * càlcul de la freqüència cardíaca // * SpO2 (nivell d’oxidació)) càlcul PulseOximeter; uint32_t tsLastReport = 0; // La devolució de trucada (registrada a continuació) es dispara quan es detecta un pols buit aBeatDetected () {Serial.println ("Beat!"); } void setup () {Serial.begin (115200); Serial.print ("Inicialització de l'oxímetre de pols.."); // Inicialitzeu la instància de PulseOximeter // Les fallades generalment es deuen a un cablejat I2C incorrecte, falta una font d'alimentació // o un xip objectiu incorrecte si (! Pox.begin ()) {Serial.println ("FAILED"); per (;;); } else {Serial.println ("ÈXIT"); } // El corrent predeterminat del LED IR és de 50 mA i es pot canviar // si no es comenta la línia següent. Consulteu MAX30100_Registers.h per a totes les // opcions disponibles. // pox.setIRLedCurrent (MAX30100_LED_CURR_7_6MA); // Registre una devolució de trucada per a la detecció de batecs pox.setOnBeatDetectedCallback (onBeatDetected); } void loop () {// Assegureu-vos de trucar a actualització el més ràpidament possible pox.update (); // Volteig asíncron de la freqüència cardíaca i els nivells d'oxidació al serial // Per a tots dos, un valor de 0 significa "invàlid" si (millis () - tsLastReport> REPORTING_PERIOD_MS) {Serial.print ("Freqüència cardíaca:"); Serial.print (pox.getHeartRate ()); Serial.print ("bpm / SpO2:"); Serial.print (pox.getSpO2 ()); Serial.println ("%"); tsLastReport = millis (); }}

Pas 28:

Imatge
Imatge

Aquest codi és molt senzill, crec que el podeu entendre d'un cop d'ull. He de dir que la programació modular d'Arduino és molt convenient i que ni tan sols necessito entendre com s'implementa el codi del controlador d'Uart i IIC.

Per descomptat, el codi anterior és una demostració oficial i encara he de fer alguns canvis per mostrar les dades al visualitzador de STONE.

Pas 29: mostra les dades al visualitzador STONE mitjançant Arduino

En primer lloc, hem d’obtenir l’adreça del component que mostra la freqüència cardíaca i les dades d’oxigen en sang al visualitzador de STONE:

Al meu projecte, l’adreça és la següent: Adreça del component de visualització de la freqüència cardíaca: 0x0001 Adreça del mòdul de visualització d’oxigen en sang: 0x0005 Adreça d’estat de la connexió del sensor: 0x0008 Si heu de canviar el contingut de la pantalla a l’espai corresponent, podeu canviar el contingut de la pantalla enviant dades a l’adreça corresponent de la pantalla a través del port sèrie d’Arduino.

Pas 30: el codi modificat és el següent:

/ * Biblioteca de sensors integrada oximetria / freqüència cardíaca Arduino-MAX30100 Copyright (C) 2016 OXullo Intersecans Aquest programa és programari lliure: podeu redistribuir-lo i / o modificar-lo segons els termes de la Llicència Pública General GNU publicada per la Free Software Foundation, ja sigui la versió 3 de la llicència, o (segons el vostre criteri) qualsevol versió posterior. Aquest programa es distribueix amb l'esperança que sigui útil, però SENSE CAP GARANTIA; ni tan sols amb la garantia implícita de COMERCIALITZACIÓ o IDONEITAT PER A UN PROPOSESIT PARTICULAR. Vegeu la llicència pública general de GNU per obtenir més informació. Hauríeu d’haver rebut una còpia de la llicència pública general de GNU juntament amb aquest programa. Si no, vegeu. * / #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 [8] = {0xAx, 0x, 0x, 0x, 5 0x00}; unsigned char 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 és la interfície de nivell superior del sensor // que ofereix: // * informes de detecció de batecs // * càlcul de la freqüència cardíaca // * càlcul SpO2 (nivell d’oxidació) PulseOximeter pox; uint32_t tsLastReport = 0; // La devolució de trucada (registrada a continuació) es dispara quan es detecta un pols buit aBeatDetected () {// Serial.println ("Beat!"); } void setup () {Serial.begin (115200); // Serial.print ("Inicialització de l'oxímetre de pols.."); // Inicialitzeu la instància de PulseOximeter // Les falles generalment es deuen a un cablejat I2C incorrecte, falta una font d'alimentació // o un xip objectiu incorrecte si (! Pox.begin ()) {// Serial.println ("FALLAT"); // connect_sta_send [7] = 0x00; // Serial.write (connect_sta_send, 8); per (;;); } else {connect_sta_send [7] = 0x01; Serial.write (connect_sta_send, 8); // Serial.println ("ÈXIT"); } // El corrent predeterminat del LED IR és de 50 mA i es pot canviar // si no es comenta la línia següent. Consulteu MAX30100_Registers.h per a totes les // opcions disponibles.pox.setIRLedCurrent (MAX30100_LED_CURR_7_6MA); // Registre una devolució de trucada per a la detecció de batecs pox.setOnBeatDetectedCallback (onBeatDetected); } void loop () {// Assegureu-vos de trucar a actualització el més ràpidament possible pox.update (); // Volteig cardíac i nivells d'oxidació de manera asíncrona a la sèrie // Per a tots dos, un valor de 0 significa "no vàlid" si (millis () - tsLastReport> REPORTING_PERIOD_MS) {// Serial.print ("Freqüència cardíaca:"); // 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 (); }}

Pas 31: mostra la freqüència cardíaca a la pantalla LCD amb Arduino

Mostra la freqüència cardíaca a la pantalla LCD amb Arduino
Mostra la freqüència cardíaca a la pantalla LCD amb Arduino

Compileu el codi, descarregueu-lo a la placa de desenvolupament Arduino i ja podreu començar a provar.

Podem veure que quan els dits surten del MAX30100, la freqüència cardíaca i l’oxigen en sang mostren 0. Col·loqueu el dit al col·lector MAX30100 per veure la freqüència cardíaca i els nivells d’oxigen en sang en temps real.

L'efecte es pot veure a la imatge següent:

Recomanat: