Sensor de batimento cardiaco com Arduino, Digispark, ESP8266 etc

Esse sensor é outro brinquedo interessante para makers. Já há algum tempo que eu queria experimentá-lo e recentemente chegou às minhas mãos através do nosso patrocinador do Mercado Livre. O sensor pode ser adquirido através desse link – e vale a pena, está muito acessível. Se desejar, aproveite para ver outros produtos desse nosso parceiro:

http://lista.mercadolivre.com.br/_CustId_189096899

O datasheet, os artigos relacionados e os vendedores deixam claro que você não deve adicionar um Arduino e sair vendendo essa solução em hospitais, porque não tem a precisão e/ou homologação necessária para ser considerado confiável, mas dá pra considerar os valores até pra um detector de mentiras, desde que a vida de uma pessoa não dependa do diagnóstico oferecido por esse sensor. Considere que você pode inserir ruidos, a alimentação pode inserir ruidos, os ruidos podem se auto-inserir etc.

Sensor de batimento cardiaco com Arduino UNO

Se você acompanha o site, já deve ter percebido que sou apaixonado pelo Digispark. Ele é compacto e nesse modelo que que utilizo dispensa cabo de alimentação, pois vai conectado diretamente na porta USB. Com isso, fica fácil fazer wiring e testes na hora, mas não testei com ele nesse tutorial por causa da biblioteca utilizada.

Preparativos

Esse sensor vem com todos os componentes expostos, sem nenhum tipo de emcapsulamento. Por isso, é ideal fazer algum tipo de isolamento na parte traseira, afim de evitar ruidos e estática diretamente sobre os componentes. A maneira mais simples de fazê-lo é utilizando cola quente e algum isolante extra. Por acaso, tenho EVA fino que também estou utilizando em um projeto para um artigo que está a caminho. Tomei um pedaço e recortei mais ou menos do tamanho do sensor, então passei cola quente e os uní. O resultado:

Sensor de batimento cardiaco
Sensor de batimento cardiaco

Claro que dá pra fazer muita coisa melhor, mas pelo menos já resolvi o problema de contato com o circuito. Você pode colar também um elástico para prendê-lo ao dedo, ou então colar o sensor diretamente a um velcro em enrolar o velcro no dedo etc.

Wiring

Não tem lá grande mistério para fazer o wiring. Atrás do sensor tem uma marcação. No caso desse que estou usando:

Marrom GND da MCU
Vermelho 3V3 ou 5V da MCU
Laranja Analógico da MCU

No caso do do Digispark, bastaria fazer analogRead(1) para ler o valor no P2. Se desejar maiores detalhes sobre o Digispark, leia esse outro artigo sobre como adicionar o suporte à IDE do Arduino e esse outro com importantes dicas sobre a utilização. A questão é que se desejar utilizá-lo, aí sim vai um trabalhinho de leve, porque pode não funcionar no Digispark, mas o arquivo Timer_Interrupt_Notes.ino tem uma implementação de interrupções para o Adafruit Gemma, que também usa um Attiny85, mas hoje estou deveras preguiçoso e não quis testar mexer em código. Bem, na verdade estou escrevendo outro artigo em paralelo e por tratar-se de um projeto maker, estou empregando todo meu esforço (físico) nele.

Código

Não vou reinventar a roda. Tem um belíssimo trabalho pronto dos próprios criadores do sensor que o disponibilizaram no github. Você pode baixar o zip caso esteja utilizando Windows ou então pode clonar o git (eu prefiro fazê-lo):

O zip:

O destino do download deve ser colocado no diretório Arduino no seu home ou no diretório Documentos/Arduino no Windows. Se optou pelo zip, descomprima-o no respectivo diretório. Na IDE do Arduino, abra o arquivo PulseSensor_Amped_Arduino.ino. Nesse arquivo você deve definir principalmente os pinos caso use Digispark, mas se usar o Arduino UNO, bastará conectar o sinal ao analógico 0. Lembre-se que se for experimentar com o Digispark, basta trocar a variável relacionada ao A0 do UNO por 1, que lerá o P2 no Digispark. O pino do LED onboard também não é 13 (obviamente);

O blink do pino 13 se refere ao LED onboard do Arduino UNO, o fadePin será outro LED para fazer o fading do batimento cardíaco. Basta implementar o LED, que não é mistério, certo? Em caso de dúvida, coloque um resistor de 330Ohms para um LED de 5mm e pronto.

Se quiser saber mais detalhes sobre as definições de variáveis, basta rolar a página aqui no git até chegar em “Variables to Note”.

Serial Plotter

Em Tools, você pode gerar gráfico do batimento utilizando a ferramenta Serial Plotter. Algumas dicas extras a respeito estão disponíveis também no git acima.

Um videozinho bacana do caras:

Pulse Sensor in 60 Seconds from World Famous Electronics on Vimeo.

Djames Suhanko

Djames Suhanko é Perito Forense Digital. Já atuou com deployer em sistemas de missão critica em diversos países pelo mundão. Programador Shell, Python, C, C++ e Qt, tendo contato com embarcados ( ora profissionalmente, ora por lazer ) desde 2009.