Índice:

Como exibir a frequência cardíaca no LCD STONE com Ar: 31 etapas
Como exibir a frequência cardíaca no LCD STONE com Ar: 31 etapas

Vídeo: Como exibir a frequência cardíaca no LCD STONE com Ar: 31 etapas

Vídeo: Como exibir a frequência cardíaca no LCD STONE com Ar: 31 etapas
Vídeo: Acidente de trabalho em máquina 2024, Julho
Anonim
Como exibir a frequência cardíaca no LCD STONE com Ar
Como exibir a frequência cardíaca no LCD STONE com Ar

breve introdução

Há algum tempo, encontrei um módulo sensor de frequência cardíaca MAX30100 em compras online. Este módulo pode coletar dados de oxigênio no sangue e frequência cardíaca dos usuários, o que também é simples e conveniente de usar. De acordo com os dados, descobri que existem bibliotecas do MAX30100 nos arquivos da biblioteca do Arduino. Ou seja, se eu usar a comunicação entre o Arduino e o MAX30100, posso chamar diretamente os arquivos da biblioteca do Arduino sem ter que reescrever os arquivos do driver. Isso é uma coisa boa, então comprei o módulo do MAX30100.

Etapa 1: Decidi usar o Arduino para verificar a frequência cardíaca e a função de coleta de oxigênio no sangue do MAX30100

Decidi usar o Arduino para verificar a frequência cardíaca e a função de coleta de oxigênio no sangue do MAX30100
Decidi usar o Arduino para verificar a frequência cardíaca e a função de coleta de oxigênio no sangue do MAX30100

Nota: este módulo por padrão apenas com comunicações MCU de nível de 3,3 V, porque o padrão é usar a resistência de pull up do pino IIC de 4,7 K a 1,8 V, portanto, não há comunicação com o Arduino por padrão, se você quiser se comunicar com o Arduino e precisa de dois 4,7 K do resistor pull-up do pino IIC conectado ao pino VIN, este conteúdo será apresentado no final do capítulo.

Etapa 2: atribuições funcionais

Antes de iniciar este projeto, pensei em alguns recursos simples:

  • Dados de frequência cardíaca e dados de oxigênio no sangue foram coletados
  • Os dados de frequência cardíaca e oxigênio no sangue são exibidos em uma tela LCD

Esses são os dois únicos recursos, mas se quisermos implementá-los, precisamos pensar mais:

  • Qual MCU mestre é usado?
  • Que tipo de display lcd?

Como mencionamos anteriormente, usamos Arduino para o MCU, mas este é um projeto de display LCD Arduino, então precisamos escolher o módulo de display LCD apropriado. Planejo usar a tela de display LCD com porta serial. Eu tenho um displayer STONE STVI070WT-01 aqui, mas se o Arduino precisar se comunicar com ele, MAX3232 será necessário para fazer a conversão de nível. Em seguida, os materiais eletrônicos básicos são determinados da seguinte forma:

1. Placa de desenvolvimento Arduino Mini Pro

2. Módulo sensor de frequência cardíaca e oxigênio no sangue MAX30100

3. Módulo de exibição de porta serial de LCD STONE STVI070WT-01

4. Módulo MAX3232

Etapa 3: Introdução ao Hardware

MAX30100

O MAX30100 é uma solução integrada de sensor de oximetria de pulso e monitor de freqüência cardíaca. Ele combina dois LEDs, um fotodetector, óptica otimizada e processamento de sinal analógico de baixo ruído para detectar sinais de oximetria de pulso e frequência cardíaca.

O MAX30100 opera com fontes de alimentação de 1,8 V e 3,3 V e pode ser desligado por meio de software com corrente de espera insignificante, permitindo que a fonte de alimentação permaneça conectada o tempo todo.

Etapa 4: Aplicativos

● Dispositivos vestíveis

● Dispositivos Fitness Assistant

● Dispositivos de monitoramento médico

Etapa 5: benefícios e recursos

1 、 Oxímetro de pulso completo e sensor de frequência cardíaca Solução simplifica o projeto

  • LEDs integrados, fotossensor e extremidade dianteira analógica de alto desempenho
  • Minúsculo 5,6 mm x 2,8 mm x 1,2 mm 14 pinos opticamente aprimorado em pacote

2 、 A operação de energia ultrabaixa aumenta a vida útil da bateria para dispositivos que podem ser usados

  • Taxa de amostragem programável e corrente de LED para economia de energia
  • Corrente de desligamento ultrabaixa (0,7 µA, típico)

3 、 Funcionalidade avançada melhora o desempenho da medição

  • SNR alto fornece resiliência robusta do artefato de movimento
  • Cancelamento de luz ambiente integrado
  • Capacidade de alta taxa de amostragem
  • Capacidade de saída rápida de dados

Etapa 6: Princípio de detecção

Princípio de Detecção
Princípio de Detecção

Basta pressionar o dedo contra o sensor para estimar a saturação de oxigênio do pulso (SpO2) e o pulso (equivalente ao batimento cardíaco).

O oxímetro de pulso (oxímetro) é um miniespetrômetro que USA os princípios de diferentes espectros de absorção de hemácias para analisar a saturação de oxigênio do sangue. Este método de medição rápido e em tempo real também é amplamente utilizado em muitas referências clínicas. Não vou apresentar muito o MAX30100, pois esses materiais estão disponíveis na Internet. Amigos interessados podem pesquisar as informações desse módulo de teste de frequência cardíaca na Internet e ter uma compreensão mais profunda de seu princípio de detecção.

Etapa 7: STONE STVI070WT-01

STONE STVI070WT-01
STONE STVI070WT-01

Introdução ao displayer

Neste projeto, usarei STONE STVI070WT-01 para exibir os dados de frequência cardíaca e oxigênio no sangue. O chip do driver foi integrado na tela do monitor e há software para uso dos usuários. Os usuários só precisam adicionar botões, caixas de texto e outra lógica por meio das imagens da interface do usuário projetadas e, em seguida, gerar arquivos de configuração e baixá-los na tela de exibição para executar. O display do STVI070WT-01 se comunica com o MCU por meio do sinal uart-rs232, o que significa que precisamos adicionar um chip MAX3232 para converter o sinal RS232 em TTL, para que possamos nos comunicar com o Arduino MCU.

Etapa 8: Se você não tiver certeza de como usar o MAX3232, consulte as seguintes imagens:

Se você não tiver certeza de como usar o MAX3232, consulte as seguintes imagens
Se você não tiver certeza de como usar o MAX3232, consulte as seguintes imagens

Se você acha que a conversão de nível é muito problemática, você pode escolher outros tipos de exibidores de STONE, alguns dos quais podem emitir diretamente o sinal uart-ttl.

O site oficial possui informações detalhadas e introdução:

Etapa 9: Se você precisar de tutoriais em vídeo e tutoriais para usar, também pode encontrá-los no site oficial

Se você precisar de tutoriais em vídeo e tutoriais, também poderá encontrá-los no site oficial
Se você precisar de tutoriais em vídeo e tutoriais, também poderá encontrá-los no site oficial

Etapa 10: etapas de desenvolvimento

Três etapas de desenvolvimento da tela STONE:

  • Projete a lógica de exibição e a lógica de botão com o software STONE TOOL e baixe o arquivo de design para o módulo de exibição.
  • O MCU se comunica com o módulo de display LCD STONE através da porta serial.
  • Com os dados obtidos na etapa 2, o MCU realiza outras ações.

Etapa 11: Instalação do software STONE TOOL

Instalação do software STONE TOOL
Instalação do software STONE TOOL

Baixe a versão mais recente do software STONE TOOL (atualmente TOOL2019) do site e instale-o.

Após a instalação do software, a seguinte interface será aberta:

Clique no botão "Arquivo" no canto superior esquerdo para criar um novo projeto, que discutiremos mais tarde.

Etapa 12: Arduino

Arduino é uma plataforma de protótipo eletrônico de código aberto fácil de usar e fácil de usar. Inclui a parte do hardware (várias placas de desenvolvimento que estão em conformidade com a especificação do Arduino) e a parte do software (IDE do Arduino e kits de desenvolvimento relacionados).

A parte de hardware (ou placa de desenvolvimento) consiste em um microcontrolador (MCU), memória Flash (Flash) e um conjunto de interfaces universais de entrada / saída (GPIO), que você pode considerar como uma placa-mãe de microcomputador. A parte do software é composta principalmente de Arduino IDE no PC, pacote de suporte de nível de placa relacionado (BSP) e rica biblioteca de funções de terceiros. Com o Arduino IDE, você pode facilmente baixar o BSP associado à sua placa de desenvolvimento e as bibliotecas de que precisa para escrever seus programas. Arduino é uma plataforma de código aberto. Até agora, houve muitos modelos e muitos controladores derivados, incluindo Arduino Uno, Arduino Nano, ArduinoYun e assim por diante. Além disso, o IDE do Arduino agora não só oferece suporte às placas de desenvolvimento da série Arduino, mas também adiciona suporte para placas de desenvolvimento populares, como como Intel Galileo e NodeMCU pela introdução do BSP.

O Arduino detecta o ambiente por meio de uma variedade de sensores, controlando luzes, motores e outros dispositivos para retroalimentar e influenciar o ambiente. O microcontrolador na placa pode ser programado com uma linguagem de programação Arduino, compilado em binários e gravado no microcontrolador. Programação para Arduino é implementado com a linguagem de programação Arduino (baseada em Wiring) e o ambiente de desenvolvimento Arduino (baseado em Processing). Projetos baseados em Arduino podem conter apenas Arduino, bem como Arduino e outro software em execução no PC, e eles se comunicam com cada um outro (como Flash, Processing, MaxMSP).

Etapa 13: Ambiente de Desenvolvimento

Ambiente de desenvolvimento
Ambiente de desenvolvimento

O ambiente de desenvolvimento do Arduino é o IDE do Arduino, que pode ser baixado da Internet.

Faça login no site oficial do Arduino e baixe o software https://www.arduino.cc/en/Main/Software?setlang=c… Depois de instalar o IDE do Arduino, a seguinte interface aparecerá quando você abrir o software:

O IDE do Arduino cria duas funções por padrão: a função de configuração e a função de loop. Existem muitas introduções ao Arduino na Internet. Se você não entende alguma coisa, pode acessar a Internet para encontrá-la.

Etapa 14: Processo de implementação do projeto Arduino LCD

Processo de implementação do projeto Arduino LCD
Processo de implementação do projeto Arduino LCD

conexão de hardware

Para garantir que a próxima etapa da escrita do código ocorra sem problemas, devemos primeiro determinar a confiabilidade da conexão do hardware.

Apenas quatro peças de hardware foram usadas neste projeto:

1. Placa de desenvolvimento pro Arduino Mini

2. STONE STVI070WT-01 tela de exibição tft-lcd

3. MAX30100 frequência cardíaca e sensor de oxigênio no sangue

4. MAX3232 (rs232-> TTL) A placa de desenvolvimento Arduino Mini Pro e a tela de exibição TFT-LCD STVI070WT-01 são conectadas por meio de UART, que requer conversão de nível por MAX3232, e então a placa de desenvolvimento Arduino Mini Pro e o módulo MAX30100 são conectados por Interface IIC. Depois de pensar com clareza, podemos desenhar a seguinte imagem de fiação:

Etapa 15:

Imagem
Imagem

Certifique-se de que não haja erros na conexão do hardware e prossiga para a próxima etapa.

Etapa 16: Design da interface do usuário TFT LCD

Design de interface de usuário TFT LCD
Design de interface de usuário TFT LCD

Em primeiro lugar, precisamos projetar uma imagem de exibição da IU, que pode ser projetada pelo PhotoShop ou outras ferramentas de design de imagem. Depois de projetar a imagem de exibição da IU, salve a imagem no formato JPG.

Abra o software STONE TOOL2019 e crie um novo projeto:

Etapa 17: Remova a imagem que foi carregada por padrão no novo projeto e adicione a imagem de interface do usuário que projetamos

Remova a imagem que foi carregada por padrão no novo projeto e adicione a imagem da IU que projetamos
Remova a imagem que foi carregada por padrão no novo projeto e adicione a imagem da IU que projetamos

Etapa 18: adicionar o componente de exibição de texto

Adicionar o componente de exibição de texto
Adicionar o componente de exibição de texto

Adicione o componente de exibição de texto, projete o dígito de exibição e o ponto decimal, obtenha o local de armazenamento do componente de exibição de texto no visor.

O efeito é o seguinte:

Etapa 19:

Endereço do componente de exibição de texto:

  • Estação de conexão: 0x0008
  • Frequência cardíaca: 0x0001

Oxigênio no sangue: 0x0005 O conteúdo principal da interface da IU é o seguinte:

  • Status da conexão
  • Mostrador de freqüência cardíaca
  • Oxigênio no sangue mostrou

Etapa 20: Gerar Arquivo de Configuração

Gerar arquivo de configuração
Gerar arquivo de configuração

Assim que o design da IU estiver concluído, o arquivo de configuração pode ser gerado e baixado para o display do STVI070WT-01.

Primeiro, execute a etapa 1 e, em seguida, insira a unidade flash USB no computador e o símbolo do disco será exibido. Em seguida, clique em "Download to u-disk" para baixar o arquivo de configuração para a unidade flash USB e, em seguida, insira a unidade flash USB no STVI070WT-01 para concluir a atualização.

Etapa 21: MAX30100

MAX30100
MAX30100

O MAX30100 se comunica via IIC. Seu princípio de funcionamento é que o valor ADC da frequência cardíaca pode ser obtido por meio de irradiação de LED infravermelho. O registro MAX30100 pode ser dividido em cinco categorias: registro de estado, FIFO, registro de controle, registro de temperatura e registro de ID. lê o valor da temperatura do chip para corrigir o desvio causado pela temperatura. O registro de ID pode ler o número de ID do chip.

O MAX30100 é conectado à placa de desenvolvimento do Arduino Mini Pro por meio da interface de comunicação IIC. Como existem arquivos de biblioteca MAX30100 prontos no IDE do Arduino, podemos ler os dados de frequência cardíaca e oxigênio no sangue sem estudar os registros do MAX30100. Para aqueles que estão interessados em explorar o registro MAX30100, consulte a folha de dados do MAX30100.

Etapa 22: Modificar o resistor de pull-up MAX30100 IIC

Modificar o resistor de pull-up MAX30100 IIC
Modificar o resistor de pull-up MAX30100 IIC

Deve-se observar que a resistência de pull-up de 4,7 k do pino IIC do módulo MAX30100 está conectada a 1,8 V, o que não é um problema em teoria. No entanto, o nível de lógica de comunicação do pino IIC do Arduino é 5 V, portanto, ele não pode se comunicar com o Arduino sem alterar o hardware do módulo MAX30100. A comunicação direta é possível se o MCU for STM32 ou outro MCU de nível lógico de 3,3 V.

Portanto, as seguintes alterações precisam ser feitas:

Remova os três resistores de 4,7k marcados na imagem com um ferro de solda elétrico. Em seguida, solde dois resistores de 4,7k nos pinos do SDA e SCL ao VIN, para que possamos nos comunicar com o Arduino.

Etapa 23: Arduino

Arduino
Arduino

Abra o IDE do Arduino e encontre os seguintes botões:

Etapa 24: Pesquise "MAX30100" para encontrar duas bibliotecas para MAX30100 e clique em Baixar e instalar

Procurar
Procurar

Etapa 25: após a instalação, você pode encontrar a demonstração do MAX30100 na pasta da biblioteca LIB do Arduino:

Após a instalação, você pode encontrar a demonstração do MAX30100 na pasta da biblioteca LIB do Arduino
Após a instalação, você pode encontrar a demonstração do MAX30100 na pasta da biblioteca LIB do Arduino

Etapa 26: Clique duas vezes no arquivo para abri-lo

Clique duas vezes no arquivo para abri-lo
Clique duas vezes no arquivo para abri-lo

Etapa 27: O código completo é o seguinte:

Esta demonstração pode ser testada diretamente. Se a conexão do hardware estiver ok, você pode baixar a compilação do código na placa de desenvolvimento Arduibo e ver os dados do MAX30100 na ferramenta de depuração serial.

O código completo é o seguinte:

/ * Arduino-MAX30100 oximetria / biblioteca de sensor integrado de frequência cardíaca Copyright (C) 2016 OXullo Intersecans Este programa é um software livre: você pode redistribuí-lo e / ou modificá-lo sob os termos da GNU General Public License publicada pela Free Software Foundation, a versão 3 da Licença ou (conforme sua opção) qualquer versão posterior. Este programa é distribuído na esperança de que seja útil, mas SEM NENHUMA GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou ADEQUAÇÃO A UM DETERMINADO FIM. Consulte a GNU General Public License para obter mais detalhes. Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este programa. Se não, veja. * / #include #include "MAX30100_PulseOximeter.h" #define REPORTING_PERIOD_MS 1000 // PulseOximeter é a interface de nível superior para o sensor // oferece: // * relatório de detecção de batimento // * cálculo de freqüência cardíaca // * SpO2 (nível de oxidação) cálculo PulseOximeter pox; uint32_t tsLastReport = 0; // Callback (registrado abaixo) disparado quando um pulso é detectado void onBeatDetected () {Serial.println ("Beat!"); } void setup () {Serial.begin (115200); Serial.print ("Inicializando oxímetro de pulso.."); // Inicialize a instância do PulseOximeter // As falhas geralmente são devidas a uma fiação I2C inadequada, fonte de alimentação ausente // ou chip de destino errado if (! Pox.begin ()) {Serial.println ("FAILED"); para(;;); } else {Serial.println ("SUCCESS"); } // A corrente padrão para o LED IV é 50mA e pode ser alterada // removendo o comentário da linha a seguir. Verifique MAX30100_Registers.h para todas as // opções disponíveis. // pox.setIRLedCurrent (MAX30100_LED_CURR_7_6MA); // Registra um retorno de chamada para a detecção de batida pox.setOnBeatDetectedCallback (onBeatDetected); } void loop () {// Certifique-se de chamar update o mais rápido possível pox.update (); // Descarrega de maneira assíncrona a frequência cardíaca e os níveis de oxidação para o serial // Para ambos, um valor 0 significa "inválido" if (millis () - tsLastReport> REPORTING_PERIOD_MS) {Serial.print ("Heart rate:"); Serial.print (pox.getHeartRate ()); Serial.print ("bpm / SpO2:"); Serial.print (pox.getSpO2 ()); Serial.println ("%"); tsLastReport = millis (); }}

Etapa 28:

Imagem
Imagem

Este código é muito simples, acredito que você possa entendê-lo de relance. Devo dizer que a programação modular do Arduino é muito conveniente e nem preciso entender como o código do driver do Uart e do IIC é implementado.

Claro, o código acima é uma demonstração oficial, e ainda preciso fazer algumas alterações para exibir os dados no displayer do STONE.

Etapa 29: Exibir dados para o STONE Displayer por meio do Arduino

Primeiro, precisamos obter o endereço do componente que exibe os dados de frequência cardíaca e oxigênio no sangue no visor de STONE:

No meu projeto, o endereço é o seguinte: Endereço do componente de exibição de frequência cardíaca: 0x0001 Endereço do módulo de exibição de oxigênio no sangue: 0x0005 Endereço de status de conexão do sensor: 0x0008 Se você precisar alterar o conteúdo de exibição no espaço correspondente, você pode alterar o conteúdo de exibição enviando dados para o endereço correspondente da tela de exibição por meio da porta serial do Arduino.

Etapa 30: O código modificado é o seguinte:

/ * Arduino-MAX30100 oximetria / biblioteca de sensor integrado de frequência cardíaca Copyright (C) 2016 OXullo Intersecans Este programa é um software livre: você pode redistribuí-lo e / ou modificá-lo sob os termos da GNU General Public License publicada pela Free Software Foundation, a versão 3 da Licença ou (conforme sua opção) qualquer versão posterior. Este programa é distribuído na esperança de que seja útil, mas SEM NENHUMA GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou ADEQUAÇÃO A UM DETERMINADO FIM. Consulte a GNU General Public License para obter mais detalhes. Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este programa. Se não, veja. * / #Include #include "MAX30100_PulseOximeter.h" #define REPORTING_PERIOD_MS 1000 #define Heart_dis_addr 0x01 #define Sop2_dis_addr 0x05 0x08 #define connect_sta_addr unsigned char heart_rate_send [8] = {0xA5, 0x5A, 0x05, 0x82, / 0x00, Heart_dis_addr, 0x00, 0x00}; char sem sinal Sop2_send [8] = {0xA5, 0x5A, 0x05, 0x82, 0x00, / Sop2_dis_addr, 0x00, 0x00}; char não assinado connect_sta_send [8] = {0xA5, 0x5A, 0x05, 0x82, 0x00, / connect_sta_addr, 0x00, 0x00}; // PulseOximeter é a interface de nível superior para o sensor // oferece: // * relatório de detecção de batimento // * cálculo de freqüência cardíaca // * cálculo de SpO2 (nível de oxidação) PulseOximeter pox; uint32_t tsLastReport = 0; // Callback (registrado abaixo) disparado quando um pulso é detectado void onBeatDetected () {// Serial.println ("Beat!"); } void setup () {Serial.begin (115200); // Serial.print ("Inicializando oxímetro de pulso.."); // Inicialize a instância do PulseOximeter // As falhas geralmente são devidas a uma fiação I2C inadequada, fonte de alimentação ausente // ou chip de destino errado if (! Pox.begin ()) {// Serial.println ("FAILED"); // connect_sta_send [7] = 0x00; // Serial.write (connect_sta_send, 8); para(;;); } else {connect_sta_send [7] = 0x01; Serial.write (connect_sta_send, 8); // Serial.println ("SUCCESS"); } // A corrente padrão para o LED IV é 50mA e pode ser alterada // removendo o comentário da linha a seguir. Verifique MAX30100_Registers.h para todas as // opções disponíveis.pox.setIRLedCurrent (MAX30100_LED_CURR_7_6MA); // Registra um retorno de chamada para a detecção de batida pox.setOnBeatDetectedCallback (onBeatDetected); } void loop () {// Certifique-se de chamar update o mais rápido possível pox.update (); // Descarrega de maneira assíncrona a frequência cardíaca e os níveis de oxidação para o serial // Para ambos, um valor 0 significa "inválido" if (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 = millis (); }}

Etapa 31: exibir a frequência cardíaca no LCD com o Arduino

Exibir frequência cardíaca no LCD com Arduino
Exibir frequência cardíaca no LCD com Arduino

Compile o código, baixe-o para a placa de desenvolvimento do Arduino e você estará pronto para iniciar o teste.

Podemos ver que quando os dedos deixam o MAX30100, a frequência cardíaca e o oxigênio no sangue são exibidos como 0. Coloque o dedo no coletor MAX30100 para ver sua frequência cardíaca e os níveis de oxigênio no sangue em tempo real.

O efeito pode ser visto na seguinte imagem:

Recomendado: