Monitor de freqüência cardíaca MAX 30102 em LCD 16x2
Componentes e suprimentos
| | × | 1 | |
| MAX 30102 Monitor de freqüência cardíaca | | × | 1 | |
| Adafruit RGB Backlight LCD - 16x2 | | × | 1 | |
| Potenciômetro rotativo (genérico) | | × | 1 | |
Aplicativos e serviços online
Sobre este projeto
Este é um monitor de frequência cardíaca simples feito com um módulo sensor MAX30102. Escrevi um código simples baseado nas bibliotecas do Arduino e os valores são mostrados em uma tela LCD 16x2. A primeira linha exibe os batimentos médios por minuto e a segunda linha mostra o valor do feixe infravermelho refletido. Este valor deve ser constante para tornar as leituras mais precisas.
Código
Arquivo sem título Arduino
/ * Detecção de frequência cardíaca óptica (algoritmo PBA) usando o MAX30105 Breakout Por:Bennu @ MH-ET LIVE Data:2 de outubro de 2017 https://github.com/MHEtLive/MH-ET-LIVE-max30102 Este é uma demonstração para mostrar a leitura da freqüência cardíaca ou batimentos por minuto (BPM) usando um algoritmo Penpheral Beat Amplitude (PBA). É melhor prender o sensor ao dedo usando um elástico ou outro dispositivo de aperto. Os humanos geralmente são ruins em aplicar pressão constante a alguma coisa. Quando você pressiona o dedo contra o sensor, ele varia o suficiente para fazer com que o sangue em seu dedo flua de forma diferente, o que faz com que as leituras do sensor fiquem erradas. Conexões de hardware (Breakoutboard para Arduino):-5V =5V (3,3V é permitido) -GND =GND -SDA =A4 (ou SDA) -SCL =A5 (ou SCL) -INT =Não conectado O Breakout MAX30105 pode lidar com 5V ou Lógica I2C de 3,3 V. Recomendamos alimentar a placa com 5 V, mas ela também funcionará a 3,3 V. * / # Include #include "MAX30105.h" #include #include "heartRate.h" MAX30105 particleSensor; LiquidCrystal lcd (12, 11, 5, 4, 3, 2); const byte RATE_SIZE =4; // Aumente para obter mais média. 4 é good.byte rates [RATE_SIZE]; // Matriz de taxas de coração byte rateSpot =0; long lastBeat =0; // Hora em que ocorreu a última batidafloat beatsPerMinute; int beatAvg; void setup () {Serial.begin (9600); lcd.begin (16, 2); Serial.println ("Inicializando ..."); // Inicializa o sensor if (! ParticleSensor.begin (Wire, I2C_SPEED_FAST)) // Use a porta I2C padrão, velocidade de 400kHz {Serial.println ("MAX30105 não foi encontrado. Verifique a fiação / alimentação."); enquanto (1); } Serial.println ("Coloque o dedo indicador no sensor com pressão constante."); particleSensor.setup (); // Configure o sensor com as configurações padrão particleSensor.setPulseAmplitudeRed (0x0A); // Gire o LED vermelho para baixo para indicar que o sensor está em execução particleSensor.setPulseAmplitudeGreen (0); // Desligue o LED verde} void loop () {long irValue =particleSensor.getIR (); if (checkForBeat (irValue) ==true) {// Sentimos uma batida! delta longo =milis () - lastBeat; lastBeat =milis (); beatsPerMinute =60 / (delta / 1000,0); if (beatsPerMinute <255 &&beatsPerMinute> 20) {rates [rateSpot ++] =(byte) beatsPerMinute; // Armazena esta leitura no array rateSpot% =RATE_SIZE; // Wrap variável // Faz a média das leituras beatAvg =0; para (byte x =0; x
Esquemas