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

As doenças cardíacas têm sido uma doença importante na população há muitos anos. O estudo da Organização Mundial da Saúde (OMS) também mostra que a maioria das pessoas morre de doenças cardíacas. Portanto, esta doença não pode ser encarada levianamente, por esta razão, os dispositivos de saúde e os sistemas de monitorização são concebidos para rastrear a doença profissionalmente.

Sabemos que estas doenças podem ser prevenidas através da análise e monitorização do sinal de ECG na fase 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, implantaremos os princípios básicos de inicialização e operação do monitor de frequência cardíaca AD8232 . A seguir mostraremos como conectá-lo ao seu microcontrolador favorito e como criar visualizações usando uma plataforma IoT

O que é o AD8232?

O AD8232 é um pequeno chip que mede a atividade elétrica do coração. Esta atividade elétrica pode ser expressa como um ECG ou eletrocardiograma. Um eletrocardiograma é usado para ajudar a diagnosticar várias doenças cardíacas. (Mais informações: a ficha técnica pode ser encontrada aqui. )

O plano é configurar a placa AD8232 para perceber o sinal de ECG, para começar a produzir o sinal de saída da placa AD8232. O sinal de saída fornecerá aproximadamente 1,5 volts, produzindo uma amostra de 1k/segundo. Em seguida, esses sinais serão enviados pelo USB do Arduino, para que possamos verificar pelo Serial Monitor 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 peças
  • Conector do eletrodo ECG - 3,5 mm
  • Cabo de DADOS
  • Fios de ligação em ponte

Fiação

Siga o diagrama e a tabela abaixo para iniciar a fiação dos dispositivos necessários:

Assim que seu hardware estiver conectado corretamente. Vamos continuar com a configuração do ESP32.

Configurando ESP32 com Arduino IDE

Siga as etapas abaixo e então você poderá programar o ESP32 com o Arduino IDE.

1. Clique em Arquivo > Preferências

2. no URLs adicionais do gerente do conselho” atribua o URL abaixo. Você pode adicionar vários URLs, separando-os 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 no IDE do Arduino. Para fazer isso, clique em Ferramenta> Quadro> Gerenciador de Quadro

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

Carregar código-fonte

1. Com a configuração adequada do ESP32 no Arduino IDE, carregue o seguinte código na placa após atribuir os parâmetros necessários a ela.

  • WIFISSID: Seu SSID WiFi
  • SENHA : Sua senha WiFi
  • TOKEN: Seus Ubidots SÍMBOLO
  • MQTT_CLIENT_NAME: sua própria sequência ASCII de 8 a 12 caracteres alfanuméricos.

Código fonte

Para consultar este código de amostra, bem como outros IoT , confira este repositório .

/**************************************** * Incluir bibliotecas ****** **********************************/ #incluir<WiFi.h> #incluir<PubSubClient.h> #define WIFISSID "seu nome do wifi" // Coloque seu WifiSSID aqui #define PASSWORD "sua senha do wifi" // Coloque sua senha do wifi aqui #define TOKEN "seu token" // Coloque o TOKEN do seu Ubidots #define MQTT_CLIENT_NAME "1234a5d6798" / / Nome do cliente MQTT, insira sua própria string ASCII de 8 a 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 "sensor" // Atribuindo o rótulo da variável #define DEVICE_LABEL "esp32" // Atribuindo o rótulo do dispositivo #define SENSOR A0 // Defina o A0 como SENSOR char mqttBroker[] = "industrial.api. ubidots .com "; carga útil char[100]; tópico de char[150]; // Espaço para armazenar valores para enviar char str_sensor[10]; /************************************** *Funções Auxiliares****** **********************************/ WiFiClient ubidots ; Cliente PubSubClient( ubidots ); retorno de chamada void (char* tópico, byte* carga útil, comprimento interno não assinado) { char p[comprimento + 1]; memcpy(p, carga útil, comprimento); p[comprimento] = NULO; Serial.write(carga útil, comprimento); Serial.println(tópico); } 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("Connected"); } else { Serial.print("Falha, rc="); Serial.print(cliente.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, SENHA); // Atribua o pino como INPUT pinMode(SENSOR, INPUT); Serial.println(); Serial.print("Aguardando WiFi..."); enquanto (WiFi.status()! = WL_CONNECTED) {Serial.print("."); atraso(500); }Serial.println(""); Serial.println("WiFi conectado"); Serial.println("Endereço IP: "); Serial.println(WiFi.localIP()); cliente.setServer(mqttBroker, 1883); cliente.setCallback(retorno de chamada); } void loop() { if (!client.connected()) { reconnect(); } sprintf(tópico, "%s%s", "/v1.6/devices/", DEVICE_LABEL); sprintf(carga útil, "%s", ""); // Limpa a carga útil sprintf(payload, "{\"%s\":", VARIABLE_LABEL); // Adiciona o rótulo da variável float sensor = analogRead(SENSOR); /* 4 é largura mínima, 2 é precisão; o valor flutuante é copiado em str_sensor*/ dtostrf(sensor, 4, 2, str_sensor); sprintf(carga útil, "%s {\"valor\": %s}}", carga útil, str_sensor); // Adiciona o valor Serial.println("Publicando dados no Ubidots Cloud"); client.publish(tópico, carga útil); cliente.loop(); atraso(500); }

2. Verifique seu código no IDE do Arduino. Para fazer isso, no canto superior esquerdo do nosso Arduino IDE você verá o ícone Check Mark pressione-o para verificar seu código.

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

4. Após fazer o upload do código, abra o Serial Monitor e você verá como os dispositivos estão estabelecendo a conexão ao WiFi e ao broker MQTT.

Vamos configurar Ubidots

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

1. Em seguida, pressione “ Adicionar novo widget ” e selecione seu widget:

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

3. Em seguida, selecione a variável desejada para exibição dos dados. Ubidots permite atribuir um nome personalizado ao widget, cor, período de dados a serem exibidos e muito mais. Convido você a explorar todas as opções para os diferentes tipos de widgets. Para finalizar a criação do widget, pressione o ícone verde.

Agora você pode monitorar seu sinal de ECG e outras variáveis ​​remotamente graças à plataforma de desenvolvimento de aplicativos IoT Ubidots :