Índice:

Monitor de frequência cardíaca IOT (ESP8266 e aplicativo Android): 5 etapas
Monitor de frequência cardíaca IOT (ESP8266 e aplicativo Android): 5 etapas

Vídeo: Monitor de frequência cardíaca IOT (ESP8266 e aplicativo Android): 5 etapas

Vídeo: Monitor de frequência cardíaca IOT (ESP8266 e aplicativo Android): 5 etapas
Vídeo: Heart Beat Monitoring with New Blynk IoT App- Pulse Sensor with IoT | Serial communication 2024, Novembro
Anonim
Image
Image

Como parte do meu projeto de último ano, eu queria projetar um dispositivo que monitorasse sua frequência cardíaca, armazenasse seus dados em um servidor e o notificasse por meio de notificação quando sua frequência cardíaca estivesse anormal. A ideia por trás deste projeto surgiu quando tentei construir um aplicativo adequado que notifica um usuário quando ele está tendo um problema cardíaco, mas não consigo descobrir uma maneira de usar informações em tempo real. O projeto tem quatro partes principais. incluindo o circuito físico para medir os batimentos cardíacos, um módulo ESP8266 Wi-Fi com código de processamento de sinal, o servidor para armazenar o código e um aplicativo Android para exibir a frequência cardíaca.

Um vídeo detalhando o circuito físico pode ser visto acima. Todo o código do projeto pode ser encontrado no meu Github.

Etapa 1: O circuito

O circuito
O circuito

Existem dois métodos principais para medir os batimentos cardíacos, mas para este projeto decidi usar fotopletismografia (PPG), que usa uma fonte de luz infravermelha ou vermelha que é refratada através das primeiras camadas da pele. Um fotossensor é usado para medir a mudança na intensidade da luz (quando o sangue está fluindo através de um vaso). Os sinais PPG são incrivelmente barulhentos, então usei um filtro passa-banda para filtrar as frequências específicas necessárias. Um coração humano bate entre 1 e 1,6 Hz de frequência. O op-amp que usei foi o lm324, que tinha o melhor desvio de tensão de todos os op-amps disponíveis para mim. Se você estiver recriando este projeto, um amplificador operacional de precisão seria uma escolha muito melhor.

Um ganho de apenas dois foi usado porque a tolerância máxima de voltagem no ESP8266 é 3,3v e eu não queria danificar minha placa!

Siga o circuito acima e tente fazê-lo funcionar em uma placa de pão. Se você não tiver um osciloscópio em casa, pode conectar a saída em um Arduino e representá-la, mas certifique-se de que a tensão não seja superior à tolerância do arduino ou do microcontrolador.

O circuito foi testado em uma placa de pão e uma mudança na saída foi observada quando um dedo foi colocado sobre o LED e o fototransistor. Decidi então soldar a placa, o que não foi mostrado no vídeo.

Etapa 2: O Código de Processamento de Sinal e Comunicações do Servidor

Image
Image
O Código de Processamento de Sinal e Comunicações do Servidor
O Código de Processamento de Sinal e Comunicações do Servidor

Decidi usar o IDE do Arduino no ESP8266 porque é muito fácil de usar. Quando o sinal foi plotado, ele ainda era muito barulhento, então decidi limpá-lo com um filtro de média móvel FIR com um número de amostra de dez. Modifiquei um programa Arduino de exemplo chamado "smoothing" para fazer isso. Fiz algumas experiências para encontrar uma maneira de medir a frequência do sinal. Os pulsos eram de comprimento e amplitude variáveis devido ao coração ter quatro tipos diferentes de pulsos e as características dos sinais PPG. Eu escolhi um valor médio conhecido que o sinal sempre cruzou como um ponto de referência para cada pulso. Usei um buffer de anel para determinar quando a inclinação do sinal era positiva ou negativa. A combinação dos dois me permitiu calcular o período entre os pulsos quando o sinal era positivo e igual a um valor específico.

O software produziu um BPM bastante impreciso que não pôde ser usado. Com iterações adicionais, um programa melhor poderia ser projetado, mas devido às limitações de tempo, essa não era uma opção. O código pode ser encontrado no link abaixo.

Software ESP8266

Etapa 3: o servidor e as comunicações de dados

O Servidor e Comunicações de Dados
O Servidor e Comunicações de Dados

Decidi usar o Firebase para armazenar os dados, pois é um serviço gratuito e muito fácil de usar com aplicativos móveis. Não existe uma API oficial para Firebase com o ESP8266, mas descobri que a biblioteca do Arduino funcionou muito bem.

Existe um programa de exemplo que pode ser encontrado na biblioteca ESP8266WiFi.h que permite que você se conecte a um roteador com o SSID e a senha. Isso foi usado para conectar a placa à internet para que os dados pudessem ser enviados.

Embora o armazenamento de dados tenha sido feito facilmente, ainda há uma série de problemas com o envio de notificações push por meio de uma solicitação HTTP POST. Encontrei um comentário no Github que usava um método legado de fazer isso por meio de mensagens em nuvem do Google e a biblioteca HTTP para ESP8266. Este método pode ser visto no código em meu Github.

No Firebase, criei um projeto e usei a API e as chaves de registro do software. O Firebase Cloud Messaging foi usado com o aplicativo para enviar notificações push ao usuário. Quando as comunicações foram testadas, os dados puderam ser vistos no banco de dados enquanto o ESP8266 estava em execução.

Etapa 4: o aplicativo Android

O aplicativo Android
O aplicativo Android

Um aplicativo Android muito básico foi projetado com duas atividades. A primeira atividade conectou o usuário ou o registrou usando a API Firebase. Pesquisei a ficha técnica e encontrei vários tutoriais sobre como usar o Firebase com um aplicativo móvel. A atividade principal que exibia ao usuário de dados do usuário um ouvinte de eventos em tempo real para que não houvesse atraso perceptível nas mudanças no BPM do usuário. As notificações push foram feitas usando o Firebase Cloud Messaging mencionado anteriormente. Há muitas informações úteis na folha de dados do Firebase sobre como implementar isso e o aplicativo pode ser testado enviando notificações do painel no site do Firebase.

Todo o código para as atividades e os métodos para mensagens em nuvem podem ser encontrados em meu Repositório Github.

Etapa 5: Conclusão

Houve alguns problemas importantes com a medição do BPM do usuário. Os valores variavam muito e não podiam ser usados para determinar a saúde de um usuário. Isso se resumiu ao código de processamento de sinal que foi implementado no ESP8266. Após pesquisas adicionais, descobri que um coração tem quatro pulsos diferentes com períodos variados, então não era de se admirar que o software fosse impreciso. Uma forma de combater isso seria pegar uma média dos quatro pulsos em uma matriz e calcular o período do coração nesses quatro pulsos.

O resto do sistema estava funcional, mas este é um dispositivo muito experimental que eu queria construir para ver se o objeto era possível. O código legado usado para enviar notificações push em breve ficará inutilizável, portanto, se você estiver lendo isso no final de 2018 ou no final, um método diferente será necessário. No entanto, esse problema só ocorre com o ESP, portanto, se você quisesse implementar isso em um Arduino compatível com WiFi, não haveria problema.

Se você tiver dúvidas ou problemas, sinta-se à vontade para me enviar uma mensagem no Instructables.

Recomendado: