Moniteur de fréquence cardiaque MAX30102 avec Arduino Nano et écran LCD 16x2
Composants nécessaires
- 1 × Arduino Nano R3
- 1 × Capteur de fréquence cardiaque MAX30102
- 1 × Écran LCD 16x2 avec rétroéclairage RGB (Adafruit)
- 1 × Potentiomètre rotatif 10kΩ (pour le contraste du LCD)
- Fils de connexion, breadboard
Outils
- Fer à souder (pour souder les connecteurs sur le MAX30102 si nécessaire)
- Arduino IDE
Principe de fonctionnement
Le MAX30102 est un capteur optique qui mesure le rythme cardiaque par photopléthysmographie (PPG). Il émet une lumière verte/rouge et détecte les variations d'absorption sanguine au niveau du doigt. L'Arduino Nano lit les données via I²C (broches A4/SDA, A5/SCL), calcule les battements par minute (BPM) grâce à un algorithme de détection de pics (PBA), et affiche la moyenne sur 4 mesures sur la première ligne du LCD. La deuxième ligne affiche la valeur brute du signal infrarouge (IR), qui doit rester stable pour une mesure fiable.
Câblage
- MAX30102 : VCC → 5V, GND → GND, SDA → A4, SCL → A5, INT → non connecté
- LCD 16x2 (interface parallèle) : RS → D12, E → D11, D4 → D5, D5 → D4, D6 → D3, D7 → D2, VCC → 5V, GND → GND, VO → potentiomètre, LED+ → 5V (via résistance 220Ω), LED- → GND
Code Arduino
#include
#include "MAX30105.h"
#include
#include "heartRate.h"
MAX30105 particleSensor;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const byte RATE_SIZE = 4;
byte rates[RATE_SIZE];
byte rateSpot = 0;
long lastBeat = 0;
float beatsPerMinute;
int beatAvg;
void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
Serial.println("Initialisation...");
if (!particleSensor.begin(Wire, I2C_SPEED_FAST)) {
Serial.println("MAX30105 non trouvé. Vérifiez le câblage.");
while (1);
}
Serial.println("Placez l'index sur le capteur avec une pression constante.");
particleSensor.setup();
particleSensor.setPulseAmplitudeRed(0x0A);
particleSensor.setPulseAmplitudeGreen(0);
}
void loop() {
long irValue = particleSensor.getIR();
if (checkForBeat(irValue)) {
long delta = millis() - lastBeat;
lastBeat = millis();
beatsPerMinute = 60 / (delta / 1000.0);
if (beatsPerMinute < 255 && beatsPerMinute > 20) {
rates[rateSpot++] = (byte)beatsPerMinute;
rateSpot %= RATE_SIZE;
beatAvg = 0;
for (byte x = 0; x < RATE_SIZE; x++) beatAvg += rates[x];
beatAvg /= RATE_SIZE;
}
}
Serial.print("IR="); Serial.print(irValue);
Serial.print(", BPM="); Serial.print(beatsPerMinute);
Serial.print(", Avg BPM="); Serial.print(beatAvg);
if (irValue < 50000) Serial.print(" Doigt absent?");
Serial.println();
lcd.setCursor(0, 0);
lcd.print("BPM: "); lcd.print(beatAvg);
lcd.setCursor(0, 1);
lcd.print(" IR: "); lcd.print(irValue);
}
Bibliothèques requises
- SparkFun MAX3010x Sensor Library (inclut MAX30105.h et heartRate.h)
- LiquidCrystal (intégrée à l'IDE Arduino)
Conseils pour une mesure précise
- Fixez le capteur sur le doigt avec un élastique pour une pression constante.
- Évitez les mouvements pendant la mesure.
- La valeur IR doit rester supérieure à 50 000 pour indiquer un bon contact.
- La moyenne sur 4 battements (RATE_SIZE = 4) lisse les variations.
Processus de fabrication
- Système de surveillance cardiaque à distance avec alertes AWS IoT
- Créer un système Ambilight spectaculaire pour moniteur avec Arduino
- Créer des animations et jeux sur LCD avec Arduino UNO
- Moniteur de Fréquence Cardiaque IoT en Temps Réel avec Arduino et MAX30100
- Construire un Moniteur de Fréquence Cardiaque Précis avec une Photorésistance et Arduino
- Sécurisez votre chauffe-eau : Moniteur de tension thermocouple pour veilleuse pilote
- Système de Surveillance Domestique Avancé avec Arduino Mega et Capteurs IoT
- Construire une Station Météo Arduino Fiable avec Capteurs DHT
- Capteurs de fréquence cardiaque intégrés dans les vêtements intelligents : surveillance portable fiable