Monitoramento de IoT ECG com Sensor de ECG AD8232 e ESP8266
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
Conteudo
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.