Monitoramento de IoT ECG com Sensor de ECG AD8232 e ESP8266

Tempo de leitura: 7 minutes

As doenças cardíacas estão se tornando um grande problema nas últimas décadas e muitas pessoas morrem por causa de certos problemas de saúde. Portanto, doenças cardíacas não podem ser tomadas de ânimo leve. Portanto, deve haver uma tecnologia que possa monitorar a frequência cardíaca e o comportamento cardíaco do paciente regularmente. Ao analisar ou monitorar o sinal de ECG no estágio inicial, as várias doenças cardíacas podem ser prevenidas.

Esta é a razão pela qual estou apresentando a vocês este grande projeto de IoT. Neste projeto, vou mostrar como você pode fazer a interface do sensor de ECG AD8232 com a placa NodeMCU ESP8266 e monitorar a forma de onda de ECG na tela do plotter serial. Da mesma forma, você pode enviar a forma de onda de ECG pela plataforma IoT Cloud e monitorar o sinal online de qualquer parte do mundo usando o PC ou simplesmente usando o smartphone. Não há necessidade de ficar no Hospital para monitorar a atividade / comportamento cardíaco apenas porque você pode monitorá-lo online de qualquer lugar. Assim, pode-se dizer avanço no Sistema de Monitoramento da Saúde do Paciente.

A plataforma IoT que vou usar aqui é Ubidots. Ubidots é uma plataforma de IoT que capacita inovadores e indústrias a prototipar e dimensionar projetos de IoT para produção. Use a plataforma Ubidots para enviar dados para a nuvem a partir de qualquer dispositivo habilitado para Internet. Você pode então configurar ações e alertas com base em seus dados em tempo real e desbloquear o valor de seus dados por meio de ferramentas visuais.

Você pode verificar meu post anterior sobre o sensor de ECG AD8232 para saber mais sobre ele. É altamente recomendável ler a postagem anterior antes de prosseguir para esta:
1. Monitoramento de gráfico de ECG com sensor de ECG AD8232 e Arduino
2. Monitoramento de ECG baseado em IoT com Sensor de ECG AD8232 e ESP32

 

Componentes necessários

Os componentes necessários para estes projetos estão listados abaixo. Todos esses componentes podem ser adquiridos online na Amazon ou MercadoLivre.

S.N. Nome dos Componentes Descrição Quantidade
1 NodeMCU Placa ESP8266-12E 1 https://amzn.to/3olVU4h
2 ECG Sensor Kit de sensor de ECG AD8232 1 ML (Link)
3 Data Cable Cabo de dados micro USB 5V 1 https://amzn.to/3iGzMk9
4 USB Adapter Adaptador USB 5V Volt 1 https://amzn.to/39XppVb
5 ProtoBoard 1 https://amzn.to/3pj9wyH

 

Sensor de ECG AD8232

Este sensor é uma placa econômica usada para medir a atividade elétrica do coração. Essa atividade elétrica pode ser mapeada como um ECG ou eletrocardiograma e gerada como uma leitura analógica. Os ECGs podem ser extremamente ruidosos, o Monitor de frequência cardíaca com eletrodo único AD8232 atua como um amplificador operacional para ajudar a obter um sinal claro dos intervalos PR e QT facilmente.

O AD8232 é um bloco de condicionamento de sinal integrado para ECG e outras aplicações de medição biopotencial. Ele é projetado para extrair, amplificar e filtrar pequenos sinais biopotenciais na presença de condições ruidosas, como aquelas criadas por movimento ou colocação remota de eletrodos.

O módulo AD8232 rompe nove conexões do IC às quais você pode soldar pinos, fios ou outros conectores. SDN, LO+, LO-, OUTPUT, 3,3 V, GND fornecem pinos essenciais para operar este monitor com um Arduino ou outra placa de desenvolvimento. Também são fornecidos nesta placa os pinos RA (braço direito), LA (braço esquerdo) e RL (perna direita) para conectar e usar seus próprios sensores personalizados. Além disso, há uma luz indicadora de LED que pulsará no ritmo de um batimento cardíaco.

Nota: Este produto NÃO é um dispositivo médico e não se destina a ser usado como tal ou como um acessório para diagnosticar ou tratar quaisquer condições.

Diagrama de circuito: Interface do sensor de ECG AD8232 com NodeMCU ESP8266

Aqui está um digrama de circuito para fazer a interface do sensor de ECG AD8232 com o NodeMCU ESP8266. Existem 6 pinos no Breakout Board AD8232. SDN não está conectado.

Conecte o OUTPUT ao analógico A0 do Nodemcu. Conecte o LO+ e LO- ao D5 e D6 do NodeMCU respectivamente. Alimente o kit AD8232 com 3,3 V VCC e conecte seu GND ao GND.

 

Colocação do sensor de ECG AD8232 no corpo

Recomenda-se encaixar as almofadas do sensor nos eletrodos antes da aplicação no corpo. Quanto mais perto do coração estiverem as almofadas, melhor será a medição. Os cabos são codificados por cores para ajudar a identificar o posicionamento correto.

Vermelho: RA (braço direito)
Amarelo: LA (braço esquerdo)
Verde: RL (perna direita)

Eu conectei por ESP8266 com AD8232 a um tórax de paciente ou simplesmente você pode colocá-lo em seu tórax conforme mostrado na figura abaixo.

 

Código fonte/Programa para plotter serial

Aqui está um código-fonte para visualizar a forma de onda do gráfico de ECG no plotter serial. Basta copiar o código e carregá-lo na placa NodeMCU ESP8266.

void setup() 
{
   // inicializa a comunicação serial:
   Serial.begin(9600);   
   pinMode(14, INPUT); // Configuração para detecção de derivações LO+
   pinMode(12, INPUT); // Configuração para detecção de leads off LO-
 
}
 
void loop() {
 
  if((digitalRead(10) == 1)||(digitalRead(11) == 1)){
     Serial.println('!');  
  }else{
    // envia o valor da entrada analógica 0:
    Serial.println(analogRead(A0));
  }
  // Espere um pouco para evitar que os dados seriais saturem
  delay(1);
}

 

Resultado e observações

Depois de fazer o upload do código, abra o Monitor serial e defina a taxa de Buad para 9600. A forma de onda de ECG pode ser vista abaixo como um efeito de visualização no monitor serial.

 

Monitoramento de ECG baseado em IoT com Sensor de ECG AD8232 e ESP8266

Usando o código acima, você pode visualizar a forma de onda de ECG na tela Serial Plotter. Mas agora queremos visualizar a forma de onda de ECG remotamente de qualquer parte do mundo. Então, para isso, não precisarei enviar o sinal gerado para nenhuma plataforma IoT. Para isso usei Ubidots. Usando Ubidots, você pode enviar dados para a nuvem a partir de qualquer dispositivo habilitado para Internet.

Muito simples de usar.  Veja no outro artigo te toda explicação (Neste projeto)

Código Fonte / Programa

O código-fonte para monitoramento de ECG baseado em IoT com sensor de ECG AD8232 e ESP8266 é fornecido abaixo. Copie este código e altere os seguintes parâmetros.

1. SSID WIFI: Seu SSID WiFi
2. SENHA: Sua senha WiFi
3. TOKEN: Seu TOKEN Ubidots (Fornecido pelo site Ubidots)
4. MQTT_CLIENT_NAME: Sua própria sequência ASCII de 8-12 caracteres alfanuméricos.

Você precisa de uma biblioteca chamada biblioteca Pubsubclient. Portanto, vá para o gerenciador de biblioteca e instale a biblioteca conforme mostrado na imagem abaixo.

 

Código

#include <ESP8266WiFi.h>
#include <PubSubClient.h>
 
#define WIFISSID "Alexahome"                                //Coloque seu WifiSSID aqui
#define PASSWORD "12345678"                                 //Coloque sua senha wifi aqui
#define TOKEN "BBFF-YKxITsj1YPeTMxw7mq8lvYFBpXnCxD"         //Coloque o TOKEN do seu Ubidots
#define MQTT_CLIENT_NAME "myecgsensor"                      //Nome do cliente MQTT, insira sua própria sequência ASCII de 8-12 caracteres alfanuméricos; 
                                                            //deve ser uma string ascii aleatória e única e diferente de todos os outros dispositivos
 
/****************************************
 * Definir constantes
 ****************************************/
#define VARIABLE_LABEL "myecg" // Atribuir o rótulo da variável
#define DEVICE_LABEL "esp8266" // Atribuir o rótulo do dispositivo
 
#define SENSOR A0 // Defina o A0 como SENSOR
 
char mqttBroker[]  = "industrial.api.ubidots.com";
char payload[100];
char topic[150];
// Espaço para armazenar valores para enviar
char str_sensor[10];
 
/****************************************
 * Auxiliar Functions
 ****************************************/
WiFiClient ubidots;
PubSubClient client(ubidots);
 
void callback(char* topic, byte* payload, unsigned int length) {
  char p[length + 1];
  memcpy(p, payload, length);
  p[length] = NULL;
  Serial.write(payload, length);
  Serial.println(topic);
}
 
void reconnect() {
  // Loop até estarmos reconectados
  while (!client.connected()) {
    Serial.println("Tentando conexão MQTT ...");
    
    // Tentativa de conexão
    if (client.connect(MQTT_CLIENT_NAME, TOKEN, "")) {
      Serial.println("Conectado");
    } else {
      Serial.print("Falhou, rc=");
      Serial.print(client.state());
      Serial.println(" tente novamente em 2 segundos");
      // Aguarde 2 segundos antes de tentar novamente
      delay(2000);
    }
  }
}
 
/****************************************
 * Main Functions
 ****************************************/
void setup() {
  Serial.begin(115200);
  WiFi.begin(WIFISSID, PASSWORD);
  // Atribuir o pino como INPUT
  pinMode(SENSOR, INPUT);
 
  Serial.println();
  Serial.print("Esperando por WiFi ...");
  
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(500);
  }
  
  Serial.println("");
  Serial.println("WiFi conectado");
  Serial.println("Endereço de IP: ");
  Serial.println(WiFi.localIP());
  client.setServer(mqttBroker, 1883);
  client.setCallback(callback);  
}
 
void loop() {
  if (!client.connected()) {
    reconnect();
  }
 
  sprintf(topic, "%s%s", "/v1.6/devices/", DEVICE_LABEL);
  sprintf(payload, "%s", ""); // Limpa a carga útil
  sprintf(payload, "{\"%s\":", VARIABLE_LABEL); // Adiciona o rótulo da variável
  
  float myecg = analogRead(SENSOR); 
  
  /* 4 é a largura mínima, 2 é a precisão; valor flutuante é copiado para str_sensor*/
  dtostrf(myecg, 4, 2, str_sensor);
  
  sprintf(payload, "%s {\"value\": %s}}", payload, str_sensor); // Adds the value
  Serial.println("Publicação de dados na nuvem Ubidots");
  client.publish(topic, payload);
  client.loop();
  delay(10);
}

 

Resultados e observações

Uma vez que o código é carregado, você pode abrir seu monitor serial. O Monitor Serial exibirá as seguintes linhas com sucesso se o módulo estiver conectado ao Wifi e se o token Ubidots for válido

Agora você pode visitar o painel do Ubidots e observar a forma de onda sendo publicada no Ubidots. A forma de onda pode não ser exatamente semelhante à anterior devido a um pequeno atraso. Mas é o suficiente para uma demonstração simples. Em um futuro próximo, uma versão melhor do dispositivo pode ser feita.

Visits: 1 Visits: 1199400