Construa um sistema IoT ECG (eletrocardiograma) com um AD8232 + ESP32 para registrar a atividade elétrica do seu coração

Ammar Chauhan
· 6 min de leitura
Enviar por e-mail

As doenças cardíacas são uma das principais causas de morte na população há muitos anos. Um estudo da Organização Mundial da Saúde (OMS) também mostra que a maioria das pessoas morre em decorrência de doenças cardíacas. Portanto, essa doença não pode ser negligenciada; por isso, dispositivos e sistemas de monitoramento para a saúde são projetados para acompanhar a doença de forma profissional.

Sabemos que essas doenças podem ser prevenidas através da análise e monitoramento do sinal de ECG em estágio inicial. Com base nisso, decidi trabalhar neste projeto para começar a monitorar meu sinal de ECG usando a plataforma de desenvolvimento IoT Ubidots .

Neste artigo, vamos mostrar como iniciar e executar o monitor de frequência cardíaca AD8232 . Em seguida, mostraremos como conectá-lo ao seu microcontrolador preferido e como criar visualizações usando uma IoT .

O que é o AD8232?

O AD8232 é um pequeno e interessante chip que mede a atividade elétrica do coração. Essa atividade elétrica pode ser expressa como um ECG ou um eletrocardiograma. Um eletrocardiograma é usado para auxiliar no diagnóstico de diversas doenças cardíacas. (Mais informações: a folha de dados pode ser encontrada aqui. )

O plano é configurar a placa AD8232 para receber o sinal de ECG e começar a gerar o sinal de saída. O sinal de saída terá aproximadamente 1,5 volts, produzindo uma taxa de amostragem de 1k amostras por segundo. Em seguida, esses sinais serão enviados via USB do Arduino, para que possamos analisá-los no Monitor Serial e Ubidots.

Sem mais nada a dizer, vamos começar!

Requisitos

  • Conta Ubidots
  • Arduino Uno / Mega / Nano
  • Módulo ECG (AD8232)
  • Eletrodo de ECG - 3 unidades
  • Conector de eletrodo de ECG - 3,5 mm
  • Cabo de dados
  • Fios de ligação

Fiação

Siga o diagrama e a tabela abaixo para começar a conectar os dispositivos necessários:

Assim que o hardware estiver devidamente conectado, vamos prosseguir com a configuração do ESP32.

Configurando o ESP32 com a IDE do Arduino

Siga os passos abaixo e você poderá programar o ESP32 com a IDE do Arduino.

1. Clique em Arquivo > Preferências

2. No URLs adicionais do Gerenciador de Quadro”, insira a URL abaixo. Você pode adicionar várias URLs, separando-as com vírgulas, se necessário.

https://dl.espressif.com/dl/package_esp32_index.json

3. Para salvar as alterações feitas, certifique-se de pressionar o botão OK.

4. Agora, adicione a ESP32 na IDE do Arduino. Para fazer isso, clique em Ferramentas > Placa > Gerenciador de Placas

5. Na barra de pesquisa, digite “ ESP32 ” e instale o pacote mais recente.

Carregar código-fonte

1. Com o ESP32 configurado corretamente na IDE do Arduino, carregue o seguinte código na placa após atribuir os parâmetros necessários.

  • WIFISSID: Seu SSID de Wi-Fi
  • SENHA : Sua senha de Wi-Fi
  • TOKEN: Seu Ubidots FICHA
  • MQTT_CLIENT_NAME: Sua própria string ASCII de 8 a 12 caracteres alfanuméricos.

Código-fonte

Para consultar este código de exemplo, bem como outros IoT , acesse este repositório .

/**************************************** * Incluir Bibliotecas ****************************************/ #include<WiFi.h> #incluir<PubSubClient.h> #define WIFISSID "nome da sua rede Wi-Fi" // Insira o SSID da sua rede Wi-Fi aqui #define PASSWORD "senha da sua rede Wi-Fi" // Insira a senha da sua rede Wi-Fi aqui #define TOKEN "seu token" // Insira o seu TOKEN do Ubidots#define MQTT_CLIENT_NAME "1234a5d6798" // Nome do cliente MQTT. Insira uma string ASCII de 8 a 12 caracteres alfanuméricos; // Deve ser uma string ASCII aleatória e única, diferente de todos os outros dispositivos /**************************************** * Definir Constantes ****************************************/ #define VARIABLE_LABEL "sensor" // Atribuindo o rótulo da variável #define DEVICE_LABEL "esp32" // Atribuindo o rótulo do dispositivo #define SENSOR A0 // Definindo A0 como SENSOR char mqttBroker[] = "ubidots"; char payload[100]; char topic[150]; // Espaço para armazenar valores a serem enviados char str_sensor[10]; /**************************************** * Funções Auxiliares ****************************************/ 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é que a conexão seja restabelecida while (!client.connected()) { Serial.println("Tentando conexão MQTT..."); // Tenta conectar if (client.connect(MQTT_CLIENT_NAME, TOKEN, "")) { Serial.println("Conectado"); } else { Serial.print("Falha, rc="); Serial.print(client.state()); Serial.println(" tente novamente em 2 segundos"); // Aguarde 2 segundos antes de tentar novamente delay(2000); } } } /**************************************** * Funções Principais ****************************************/ void setup() { Serial.begin(115200); WiFi.begin(WIFISSID, PASSWORD); // Atribui o pino como ENTRADA pinMode(SENSOR, INPUT); Serial.println(); Serial.print("Aguardando WiFi..."); while (WiFi.status() != WL_CONNECTED) { Serial.print("."); delay(500); } Serial.println(""); Serial.println("WiFi Conectado"); Serial.println("Endereço 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 o payload sprintf(payload, "{\"%s\":", VARIABLE_LABEL); // Adiciona o rótulo da variável float sensor = analogRead(SENSOR); /* 4 é a largura mínima, 2 é a precisão; o valor float é copiado para str_sensor*/ dtostrf(sensor, 4, 2, str_sensor); sprintf(payload, "%s {\"valor\": %s}}", payload, str_sensor); // Adiciona o valor Serial.println("Publicando dados na Nuvem Ubidots "); client.publish(topic, payload); client.loop(); delay(500); }

2. Verifique seu código na IDE do Arduino. Para isso, no canto superior esquerdo da IDE do Arduino, você verá o ícone de " Marca de Verificação "; clique nele para verificar seu código.

3. Carregue o código no seu “ ESP32 Dev Kit ”. Para fazer isso, selecione o ícone de “ seta para a direita ” ao lado do ícone de “ marca de seleção ”.

4. Após carregar o código, abra o Monitor Serial e você verá como o dispositivo está estabelecendo a conexão com o Wi-Fi e com o broker MQTT.

Vamos configurar Ubidots

Vamos configurar um Dashboard do Ubidots . Para criá-lo, acesse a seção Dashboard (Dados > Dashboard ).

1. Em seguida, clique em “ Adicionar novo widget ” e selecione o widget desejado:

2. Selecione o tipo de widget que deseja exibir. No meu caso, escolhi o “ Gráfico de Linhas” :

3. Em seguida, selecione a variável na qual deseja exibir os dados. Ubidots permite que você personalize o nome, a cor, o período de dados a serem exibidos e muito mais para o widget. Convido você a explorar todas as opções disponíveis para os diferentes tipos de widget. Para finalizar a criação do widget, clique no ícone verde.

Agora você pode monitorar seu sinal de ECG e outras variáveis ​​remotamente graças à Plataforma de Desenvolvimento de Aplicativos IoT Ubidots :