Projeto de Monitoramento Cardíaco via IoT com ESP8266 e PPG

📌 Tabela de Conteúdo

Introdução🔗

Monitorar batimentos cardíacos via IoT combina eletrônica, processamento de sinais e conectividade. Este projeto utiliza ESP8266 e sensores PPG (fotopletismografia) para capturar, processar e transmitir dados cardíacos. Exploraremos desde a aquisição do sinal até dashboardsDashboard de monitoramento remoto com ESP8266Dashboard de monitoramento remoto com ESP8266Aprenda a criar um dashboard IoT com ESP8266, integrando sensores, segurança avançada e otimização de comunicação para monitoramento remoto eficiente. remotos, incluindo técnicas para aumentar precisão e confiabilidade.

Componentes Necessários🔗

ComponenteEspecificaçõesFunção
ESP8266 NodeMCU80MHz, Wi-Fi 802.11 b/g/nProcessamento e comunicação
Sensor de PulsoMAX30102 (precisão) ou KY-039 (econômico)Captação do sinal cardíaco
Protoboard400 pontosMontagem temporária
Resistor 10kΩ1/4WPull-down para KY-039
Fonte de Alimentação5V 1AEnergia do sistema
SoftwareArduino IDEProgramação do microcontrolador
  • Nota: O MAX30102 (US$8-15) oferece maior precisão, enquanto o KY-039 (US$1-3) é adequado para protótipos.

Fundamentos do Sensor de Pulso (PPG)🔗

graph TD A[LED IR] --> B[Pele] B --> C[Fotodiodo] C --> D[Sinal Analógico] D --> E[Processamento]

Princípio de Operação:

  • LED infravermelho (940nm) emite luz na pele.
  • Fotodiodo detecta variações na reflexão causadas pelo fluxo sanguíneo.
  • Cada batimento cardíaco gera um pico de absorção de luz.

Equação de Beer-Lambert:

$$ I = I_0 \cdot e^{-\epsilon \cdot c \cdot d} $$

Onde:

  • \( I \): Intensidade detectada
  • \( I_0 \): Intensidade emitida
  • \( \epsilon \): Coeficiente de extinção do sangue

Características do Sinal:

  • Faixa: 0.5Hz a 3Hz (30-180 BPM)
  • Amplitude: 0-3.3V (depende da perfusão sanguínea)

Montagem do Circuito🔗

Conexões ESP8266Sistema de automação residencial com ESP8266 e controle de luzesSistema de automação residencial com ESP8266 e controle de luzesEste tutorial aborda a implementação de automação residencial com ESP8266, destacando segurança, eficiência energética, integração MQTT e interface web. ↔ Sensor:

ESP8266KY-039MAX30102
3V3VCCVIN
GNDGNDGND
A0S-
SDA-SDA
SCL-SCL

Diagrama Simplificado:

graph TD A[Sensor] --> B[ESP8266] B --> C[Wi-Fi] C --> D[Dashboard]

Programação do ESP8266🔗

Código Base (Leitura Analógica):

#include <ESP8266WiFi.h>
const int sensorPin = A0;
int threshold = 550;  // Ajuste conforme o sensor
void setup() {
  Serial.begin(115200);
  pinMode(sensorPin, INPUT);
}
void loop() {
  int pulse = analogRead(sensorPin);
  if (pulse > threshold) detectarBatimento();
  delay(10);
}

Técnicas Avançadas:

1. Filtro Passa-Baixa Digital (5Hz):

$$ y[n] = 0.6y[n-1] + 0.2x[n] + 0.2x[n-1] $$

2. Detecção de Picos com Limiar Adaptativo:

float limiar = mediaMovel + 3 * desvioPadrao;

Exemplo com MQTTSistema de controle de cortinas automatizadas com ESP8266Sistema de controle de cortinas automatizadas com ESP8266Descubra como automatizar cortinas com ESP8266. Aprenda componentes, montagem, programação e integração IoT para conforto e eficiência energética.:

#include <PubSubClient.h>
WiFiClient espClient;
PubSubClient client(espClient);
void enviarDados(float bpm) {
  client.publish("iot/saude/bpm", String(bpm).c_str());
}

Visualização e Integração IoT🔗

Opções de DashboardDashboard de monitoramento remoto com ESP8266Dashboard de monitoramento remoto com ESP8266Aprenda a criar um dashboard IoT com ESP8266, integrando sensores, segurança avançada e otimização de comunicação para monitoramento remoto eficiente.:

1. ThingSpeak:

  • Gráficos históricos com integração MATLAB.

2. Chart.js (Local):

<canvas id="bpmChart"></canvas>
<script>
  const chart = new Chart(ctx, { type: 'line', data: { datasets: [{ label: 'BPM' }] } });
</script>

3. Blynk/Home Assistant:

  • Alertas automáticos para bradicardia (<40 BPM) ou taquicardia (>120 BPM).

Fluxo de Dados:

sequenceDiagram Sensor->>ESP8266: Sinal Analógico ESP8266->>Wi-Fi: HTTP/MQTT Wi-Fi->>Cloud: Armazenamento Cloud->>Usuário: Dashboard em Tempo Real

Fundamentos Teóricos Avançados🔗

Cálculo de BPM:

$$ BPM = \frac{60}{\Delta t} \times N_{\text{picos}} $$
  • \( \Delta t \): Janela temporal (15-30s recomendado).
  • \( N_{\text{picos}} \): Picos detectados após filtragem.

Variabilidade Cardíaca (HRV):

  • Indicador de estresse: calculado via análise do intervalo R-R (eletrocardiograma).
  • Requer amostragem de alta precisão (>100Hz).

Aplicações Práticas e Desafios🔗

Casos de Uso:

Otimizações:

1. Compensação de Movimento:

if (acelerometro.detectaMovimento()) sensor.recalibrar();

2. Machine Learning Edge:

  • Modelos TinyML para detectar arritmias usando bibliotecas como TensorFlow Lite.

Desafios Comuns:

ProblemaSolução
Ruído luminosoModulação do LED IR
Artefatos de movimentoFiltro Kalman
Latência na transmissãoBuffer circular com timestamp

Considerações Finais:

  • Calibre o sensor contra dispositivos médicos para maior precisão.
  • Utilize certificações (ex: HIPAA) se lidar com dados sensíveis.
  • Teste em diferentes tons de pele: melanina afeta a absorção de luz IR.

📚 Próximos Passos:

Este artigo integra teoria e prática, oferecendo desde os fundamentos do PPG até técnicas avançadas de IoT. Com ESP8266Sistema de automação residencial com ESP8266 e controle de luzesSistema de automação residencial com ESP8266 e controle de luzesEste tutorial aborda a implementação de automação residencial com ESP8266, destacando segurança, eficiência energética, integração MQTT e interface web. e um sensor de pulso, você pode criar soluções de saúde conectada profissionais ou projetos maker inovadores.

Autor: Marcelo V. Souza - Engenheiro de Sistemas e Entusiasta em IoT e Desenvolvimento de Software, com foco em inovação tecnológica.

Referências🔗

Compartilhar artigo

Artigos Relacionados