Neste artigo vamos aprender a usar o sensor de batimentos cardíacos e montar um circuito com datalogger para armazenar séries históricas de frequência cardíaca. O datalogger foi assunto deste post, e no texto a seguir vamos focar no sensor e na medição da frequência cardíaca.
O sensor KY-039 não é o mais preciso e estável do mercado. Pode ser desafiador montar um medidor com ele que seja fiável. Neste artigo mostramos como ele funciona e um exemplo de como interfaceá-lo com Arduino e um datalogger. Outros sensores podem ser usados no lugar do KY-039 para salvar os dados no datalogger com pequenas alterações no código.
Atenção: Este artigo é para fins didáticos apenas. Para aplicações reais, deve ser utilizar um medidor homologado e certificado. O presente post tem por objetivo explicar o funcionamento e mostrar um exemplo de como esse tipo de sensor pode ser interfaceado com o Arduino, mas não se trata de um projeto para aplicações reais.
O sensor de frequência cardíaca é baseado em um emissor e um receptor de infravermelho. O princípio de funcionamento é o seguinte: Quando o coração bate, a pressão sanguínea e, consequentemente o volume de sangue nas veias, aumenta momentaneamente. A cada batida, é como se uma pequena variação de volume e pressão acontecesse. O sensor funciona emitindo um feixe infravermelho que atravessa o dedo do usuário. Quando a pressão do sangue aumenta, a quantidade de luz infravermelha que chega ao receptor (fototransistor) atravessando o dedo é diferente de quando a pressão/volume do sangue está mais baixa. Essa diferença é traduzida em variações no sinal de saída do fototransistor.
O sensor é mostrado na figura abaixo:

Medidor de batimentos cardíacos com arduino
Especificações:
Uma observação importante é não deixar luz artificial (de lâmpadas incandescentes ou fluorescentes) incidir diretamente sobre o sensor, pois a oscilação (No Brasil 60Hz) pode interferir no valor lido pelo receptor infravermelho.
Nos projetos disponíveis na internet, em geral os desenvolvedores tiveram dificuldades para trabalhar com esse sensor, devido à variação de saída ser muito pequena e instável(sujeita a variações nas condições ambientes, no posicionamento do sensor/receptor e na forma com que o dedo segura o sensor).
Como firmware e montagem base em questão, é possível medir as variações na saída do sensor, mas ter uma medição precisa pode ser desafiador. Ao final do artigo, damos algumas dicas para que você incremente e possa melhorar o projeto. Damos também indicações de outros sensores que podem ser avaliados para se obter maior precisão.
Vamos usar um cartão microSD para armazenar os dados de frequência cardíaca durante o tempo em que o sistema estiver ligado. Assim, mesmo após desligarmos, teremos uma base dados que pode ser usada para plotar gráficos e fazer análises. O datalogger já foi tema aqui do blog, caso você tenha perdido, acesse aqui o artigo original e aprende a como gravar e ler dados de um cartão microSD com arduino.
Recapitulando bem resumidamente, vamos utilizar um módulo microSD que possui uma entrada para cartões Micro SD e 6 pinos de interface disponibilizados para comunicação com Arduino. A inteface utilizada pelo módulo é o protocolo SPI(protocolo de comunicação usado para ler e escrever dados na memória Flash do cartão). Assim, podemos ligar o Arduino e enviar informações para serem armazenadas e também é possível fazer procedimentos de leitura para apresentar os dados gravados em mostradores como displays ou na interface serial.
Basicamente, o medidor de frequência é usada para construir pequenos dispositivos para medir a frequência cardíaca. Dependendo de como você implementar, pode ser um equipamento para usar durante caminhadas/corridas, por exemplo, ou qualquer outro tipo de variação.
Nesse projeto, vamos perseguir o seguinte objetivo:
Desenvolver e montar um medidor de frequência cardíaca que salva o histórico de frequência cardíaca em um log no cartão SD.
Como dito no início, nosso circuito consiste em duas partes: O circuito para o datalogger e o circuito para o sensor de frequência cardíaca em si. O circuito do datalogger está bem apresentado e estudado neste artigo. No diagrama abaixo, mostramos o datalogger integrado com o sensor de frequência cardíaca:

Medidor de frequência cardiaca com KY039
Chamamos a atenção para os três divisores de tensão que são necessários para conectar os pinos do cartão SD com o Arduino (um conversor de nível lógico também pode ser usado).
As ligações do sensor Ky039 são bem simples. Os pinos de alimentação podem ser ligados no 5V e GND do Arduino. O pino S, deve ser ligado no A0, que será usado em nosso programa para fazer as leituras.
Materiais necessários para o projeto Medidor de Frequência Cardíaca KY039 com Datalogger
Uma dica importante. Para funcionamento efetivo, é preciso que o raio infravermelho esteja bem alinhado com o receptor, como mostrado na figura abaixo:

Posicionamento do KY039. Créditos: uttereducation.com
O nosso software será o seguinte:
#include <SPI.h>
#include <SD.h>
#include <stdlib.h>
//Variaveis para cartao SD
const int CS = 4;
char dataString[7];
int sensorPin = 0;
int period = 200;
int HearHate_porSegundo=0;
int HearHate_porMin = 0;
int count = 0;
int countBeat=0;
const int Calibration_Value = 10;
float oldValue = 0;
float rawValue = 0;
File meuArquivo;
void setup()
{
pinMode(CS, OUTPUT);
Serial.begin(9600);
delay(100);
Serial.print("Inicializando cartao SD...");
if (!SD.begin(CS))
{
Serial.println("Falha na Inicializacao!");
return;
}
Serial.println("Inicializacao terminada");
delay(100);
}
void loop()
{
rawValue = analogRead (sensorPin);
if( abs(rawValue - oldValue) >= Calibration_Value)
{
countBeat++;
}
count++;
//cada 1 segundo faz essa conta
if(count == 10)
{
HearHate_porSegundo = countBeat;
HearHate_porMin =60*countBeat;
Serial.print("HearHate_porSegundo");
Serial.println(HearHate_porSegundo);
Serial.print("HearHate_porMin");
Serial.println(HearHate_porMin);
count=0;
countBeat=0;
salvaDadosLogger(HearHate_porMin);
}
oldValue = rawValue;
delay(period);
}
bool salvaDadosLogger(int HearHate_porMin)
{
dtostrf(HearHate_porMin,5,2,dataString);
if (meuArquivo = SD.open("log.txt",FILE_WRITE))
{
//Escreve no cartao SD por meio do objeto meuArquivo
meuArquivo.println(dataString);
meuArquivo.close();
}
else
{
// se o arquivo nao abrir, mostra msg de erro
Serial.println("Erro ao abrir log.txt");
}
}Na função void Setup() nós inicializamos o cartão SD e a porta serial. O código consiste nas funções void loop(), em que constantemente lemos o valor de saída do sensor e tentamos identificar variações. Experimentalmente observamos que cada batimento cardíaco provoca uma variação em torno de 10 no valor lido na porta analógica. Esse foi o valor considerado como limiar para identificar que houve um batimento ou não.
A cada segundo, chamamos a função salvaDadosLogger(HearHate_porMin), passando como parâmetro o valor calculado de frequência por minuto. Essa função salvo a informação no cartão SD e o software volta ao void Loop para continuar a identificar variações na frequência de batimentos.
Essa simples montagem e firmware identifica as variações do sensor e salva os dados no SD, mas para conseguir medições estáveis e mais precisa, melhorias são necessárias. Em geral, outros projetos na internet também apresentam medições com muitas variações. Caso você realmente decida por usar esse sensor, algumas possibilidades são:
Alguns outros projetos interessantes são(o segundo link é ótimo para observar como variações nas condições de iluminação ambiente alteram o comportamento do sensor):
Esperamos que o artigo tenha ajudado a ensinar novos conteúdos. Embora o KY-039 não seja muito preciso e não haja exemplos de projetos realmente funcionais com ele, trata-se de um sensor bem didático em relação ao seu funcionamento e também bem simples em relação ao seu circuito.
Recomendamos a leitura das demais referências e projetos que indicamos para saber as dificuldades e soluções que outros desenvolvedores encontraram. Se tiver alguma dica ou exemplo adicional, compartilhe conosco!
Conheça a Metodologia Eletrogate e ofereça aulas de robótica em sua escola!
|
A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.
Conheça a Metodologia Eletrogate e Lecione um Curso de Robótica nas Escolas da sua Região!