Display de ECG usando sensor de pulso com OLED e Arduino
Conteudo
Display de ECG usando sensor de pulso com OLED e Arduino
Com toneladas de novas empresas de tecnologia de saúde, o Arduino, junto com a IoT e o sistema incorporado, está revolucionando rapidamente o setor de saúde. Neste projeto, aprenderemos como projetar um display de ECG usando sensor de pulso com OLED e Arduino. Usaremos display OLED de 0,96 ″ com resolução de 128×64 para exibição de formas de onda BPM e ECG. O I2C OLED usa apenas 2 fios, ou seja, SDA e SCK para comunicação serial.
O Arduino Sketch rodando sobre o dispositivo implementa as várias funcionalidades do projeto. Essas funções estão lendo dados do sensor, convertendo-os em strings, passando-os para a comunicação I2C e exibindo a taxa de pulso medida no display I2C OLED.
Antes de começar, você pode verificar nossos projetos anteriores relacionados ao sensor de pulso se você for um iniciante:
1. Heartbeat/Pulse/BPM Rate Monitor usando Arduino e sensor de pulso.
2.Pulse Rate Monitoring pela Internet usando ThingSpeak e ESP8266.
3. Sistema de monitoramento da saúde do paciente baseado em IoT usando ESP8266 e Arduino.
Diagrama de bloco:
Precisamos de 2 fontes de alimentação diferentes, cada uma para OLED e sensor de pulso. Podemos obter essas fontes da placa Arduino UNO, pois ela tem tensão de saída de 3,3 V e 5V. OLED pode ser conectado a 3,3 V e sensor de pulso a 5 V.
Da mesma forma, o Arduino atua como um processador e converte o código em uma saída predefinida. O display OLED funciona segundo o princípio da comunicação I2C. Requer apenas 2 fios para exibir a saída definida.
Lista de materiais:
Estes itens a venda são sujestão na Amazon e ML, no Amazon mesmo se for importando a entrega é garantida, visite outras itens para Arduino/IOT (Sujestão de Eletrônica)
Nome dos Componentes | Descrição | QTD | Amazon / Ml | |
---|---|---|---|---|
1 | Placa Arduino | Arduino UNO | 1 | https://amzn.to/2NVtRfC |
2 | Display OLED | Display I2C OLED de 0,96″ | 1 | https://amzn.to/36HyRuZ |
3 | Sensor de pulso | Sensor de pulso de pulsesensor.com | 1 | ML (Link) |
4 | Buzzer | 5V Active Buzzer | 1 | ML (Link) |
5 | Fios de Conexão | Fios de Conexão | 10 | https://amzn.to/3avnp6O |
6 | ProtoBoard | – | 1 | https://amzn.to/2YF4Ffp |
Sensor de pulso:
O Sensor de pulso é um sensor de frequência cardíaca plug-and-play para Arduino. Ele pode ser usado por estudantes, artistas, atletas, criadores e desenvolvedores de jogos e dispositivos móveis que desejam incorporar facilmente dados de frequência cardíaca ao vivo em seus projetos. A essência é um circuito amplificador óptico integrado e um sensor de circuito eliminador de ruído. Prenda o sensor de pulso no lóbulo da orelha ou na ponta do dedo e conecte-o ao Arduino, pronto para ler a frequência cardíaca. Além disso, possui um código de demonstração do Arduino que o torna fácil de usar.
O sensor de pulso possui três pinos: VCC, GND e Pino Analógico.
Há também um LED no centro deste módulo sensor que ajuda a detectar os batimentos cardíacos. Abaixo do LED, há um circuito de eliminação de ruído que deve evitar que o ruído afete as leituras.
Display OLED I2C de 0,96″:
Este é um módulo de display OLED azul de 0,96 polegadas. O módulo de exibição pode ser conectado a qualquer microcontrolador usando protocolos SPI/IIC. Ele está tendo uma resolução de 128×64. O pacote inclui placa de display, display, cabeçote macho de 4 pinos pré-soldado à placa.
OLED (Organic Light-Emitting Diode) é uma tecnologia de emissão de luz própria composta por um filme orgânico fino e multicamadas colocado entre um ânodo e um cátodo. Em contraste com a tecnologia LCD, o OLED não requer luz de fundo. O OLED possui alto potencial de aplicação para praticamente todos os tipos de monitores e é considerado a tecnologia mais recente para a próxima geração de monitores de tela plana.
Diagrama de circuito e conexões:
Para projetar a tela de ECG usando sensor de pulso com OLED e Arduino, monte os componentes conforme mostrado na figura abaixo.
Conecte o pino VCC do sensor de pulso ao pino 5V do Arduino e o GND ao GND. Conecta seu pino de sinal ao pino A0 do Arduino Analog.
Da mesma forma, conecte o pino VCC do display OLED ao pino do Arduino 3.3V e o GND ao GND. Conecte seus pinos SDA e SCK aos pinos Arduino A4 e A5 respectivamente.
Conecte uma campainha ao pino 8 digital do Arduino e outro pino ao GND.
Trabalho e configuração:
Sensor de pulso:
O sensor de pulso funciona emitindo um sinal infravermelho de um diodo infravermelho na pele. Logo abaixo da pele, há capilares que transportam sangue. Cada vez que o coração bombeia, há um pequeno aumento no fluxo/pressão sanguínea. Isso aumenta um pouco os capilares, este capilar ligeiramente mais preenchido reflete mais infravermelho do que às vezes quando o coração não está dando um “empurrão” no sangue. Um detector de infravermelho no dispositivo detecta os diferentes níveis de infravermelho refletidos. Alguns circuitos de comparação simples convertem isso em um sinal de tensão que podemos ler com as entradas analógicas do Arduino.
Display OLED 128×64 (driver SSD1306):
Neste projeto, estamos adicionando um plotter de forma de onda de ECG junto com o BPM no display OLED. Para isso, precisamos de 2 bibliotecas diferentes, ou seja, driver SSD1306 e biblioteca GFX. Em primeiro lugar, certifique-se de que comprou um monitor OLED 128 × 68 I²C (driver SSD1306). Deve ter quatro conexões, ou seja, 5V, GND, SDA e SCK.
Endereço OLED:
Como o OLED usado aqui é um OLED I2C, ele tem um endereço de dispositivo específico. Para encontrar o endereço I2C, primeiro examine o OLED com o programa I2C Scanner. Normalmente, o display OLED tem um endereço de dispositivo de 0x3C ou 0X3D.
Resultado final exibido:
Depois que o código é carregado para a placa Arduino, a princípio nenhum gráfico ou forma de onda é visto. Mas quando o dedo é colocado, o valor de BPM é exibido, bem como o gráfico é desenhado junto com o som de bipe do Buzzer. O valor pode ser irregular ou instável no início por alguns segundos, mas depois o valor se torna estável. O sensor não é muito preciso, pois é barato. Portanto, não o use para fins médicos.
Display de ECG usando sensor de pulso com OLED e Arduino
Nota: Para alguns OLED, há um problema com o rastreamento na parte inferior e o BPM ausente, então isso é causado pelas seguintes linhas no arquivo Adafruit_SSD1306.h em sua pasta de bibliotecas:
#define SSD1306_128_64
// # define SSD1306_128_32
// #define SSD1306_96_16
Código Fonte / Programa:
Para o projeto ECG Display using Pulse Sensor with OLED & Arduino, você precisa adicionar 2 bibliotecas. Portanto, primeiro baixe a biblioteca aqui.
- Biblioteca Adafruit SSD1306
- Biblioteca Adafruit GFX
Agora compile e envie este código para o seu IDE Arduino.
#include <Adafruit_SSD1306.h> #define OLED_Address 0x3C // Endereço do dispositivo 0x3C de I2C OLED. Poucos outros OLED têm 0x3D Adafruit_SSD1306 oled(128, 64); // crie sua resolução de configuração de objeto de tela para 128x64 int a=0; int lasta=0; int lastb=0; int LastTime=0; int ThisTime; bool BPMTiming=false; bool BeatComplete=false; int BPM=0; #define UpperThreshold 560 #define LowerThreshold 530 void setup() { oled.begin(SSD1306_SWITCHCAPVCC, OLED_Address); oled.clearDisplay(); oled.setTextSize(2); } void loop() { if(a>127) { oled.clearDisplay(); a=0; lasta=a; } ThisTime=millis(); int value=analogRead(0); oled.setTextColor(WHITE); int b=60-(value/16); oled.writeLine(lasta,lastb,a,b,WHITE); lastb=b; lasta=a; if(value>UpperThreshold) { if(BeatComplete) { BPM=ThisTime-LastTime; BPM=int(60/(float(BPM)/1000)); BPMTiming=false; BeatComplete=false; tone(8,1000,250); } if(BPMTiming==false) { LastTime=millis(); BPMTiming=true; } } if((value<LowerThreshold)&(BPMTiming)) BeatComplete=true; oled.writeFillRect(0,50,128,16,BLACK); oled.setCursor(0,50); oled.print("BPM:"); oled.print(BPM); oled.display(); a++; }