Arduino Masterclass - Μάθημα 2.3: Βιομετρικά Δεδομένα & Wearable Tech ⌚❤️

 

Καλωσορίσατε στο τελευταίο μάθημα της Ενότητας 2! Σήμερα θα δούμε πώς το Arduino μπορεί να "διαβάσει" το ίδιο μας το σώμα. Θα χρησιμοποιήσουμε τον αισθητήρα MAX30102, έναν επαγγελματικό αισθητήρα παλμικής οξυμετρίας και καρδιακού ρυθμού.

🛠️ Τι θα χρειαστούμε;

  1. Arduino Uno ή Beetle ESP32-C3 (για μικρότερο μέγεθος).

  2. Αισθητήρας MAX30102.

  3. Καλώδια Jumper.

🔌 Η Συνδεσμολογία (I2C)

Ο MAX30102 χρησιμοποιεί το πρωτόκολλο I2C:

  • VIN ➡️ 3.3V ή 5V

  • GND ➡️ GND

  • SCL ➡️ SCL (A5 στο Uno)

  • SDA ➡️ SDA (A4 στο Uno)

💻 Ο Κώδικας (Heart Rate & SpO2)

Θα χρειαστείτε τη βιβλιοθήκη "SparkFun MAX3010x" από το Library Manager.

/*
 * Unique Tech - Arduino Masterclass
 * Lesson 2.3: Heart Rate & SpO2 Monitoring
 * Sensor: MAX30102
 */

#include <Wire.h>
#include "MAX30105.h"
#include "heartRate.h"

MAX30105 particleSensor;

const byte RATE_SIZE = 4; // Μέσος όρος για 4 παλμούς
byte rates[RATE_SIZE]; 
byte rateSpot = 0;
long lastBeat = 0; 
float beatsPerMinute;
int beatAvg;

void setup() {
  Serial.begin(115200);
  
  if (!particleSensor.begin(Wire, I2C_SPEED_FAST)) {
    Serial.println("MAX30102 not found. Check wiring!");
    while (1);
  }

  particleSensor.setup(); // Ρύθμιση αισθητήρα με default τιμές
  particleSensor.setPulseAmplitudeRed(0x0A); // LED χαμηλής ισχύος για αρχή
}

void loop() {
  long irValue = particleSensor.getIR();

  if (checkForBeat(irValue) == true) {
    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(" No finger?");
  Serial.println();
}

🚀 Unique Tech Pro-Tips (Wearable Insights)

  • Πίεση Δακτύλου: Μην πιέζετε πολύ δυνατά τον αισθητήρα! Η υπερβολική πίεση σταματά τη ροή του αίματος στα τριχοειδή αγγεία και οι μετρήσεις θα είναι λανθασμένες.

  • Φως Περιβάλλοντος: Το έντονο ηλιακό φως μπορεί να επηρεάσει τον φωτοανιχνευτή. Στο project μας, σχεδιάσαμε ένα 3D-printed case που απομονώνει τον αισθητήρα από το εξωτερικό φως.

  • Power Management: Για wearables, χρησιμοποιούμε το "Sleep Mode" του αισθητήρα όταν δεν τον χρειαζόμαστε, για να κρατάει η μπαταρία μέρες.

📋 Η Πρόκληση της Ημέρας

Φτιάξτε ένα σύστημα "Stress Alert": Αν οι σφυγμοί (BPM) ξεπεράσουν τους 100 ενώ ο χρήστης δεν κινείται, ανάψτε ένα μπλε LED για να του υπενθυμίσετε να πάρει μια βαθιά ανάσα!


📜 Άδεια Χρήσης & Πνευματικά Δικαιώματα

Το περιεχόμενο αυτής της ανάρτησης (κείμενα, οδηγίες και φωτογραφίες) αποτελεί πνευματική ιδιοκτησία της Unique Tech. Ο παρεχόμενος κώδικας διατίθεται υπό την άδεια MIT License.

Προϋπόθεση χρήσης: Επιτρέπεται η ελεύθερη χρήση και αναπαραγωγή, αρκεί να συμπεριλαμβάνεται η αρχική δήλωση πνευματικών δικαιωμάτων και η αναφορά στην Unique Tech ως αρχική πηγή. Για την πλήρη ανάλυση των δικαιωμάτων σας, διαβάστε τους Όρους Χρήσης μας εδώ.


Συγχαρητήρια! Ολοκληρώσατε την Ενότητα 2! #UniqueTech #WearableTech #MAX30102 #BioMetrics #STEMGreece #ArduinoLife #Innovation

Σχόλια

Δημοφιλείς αναρτήσεις από αυτό το ιστολόγιο

Πώς να "διαβάζεις" τον αέρα: Σύνδεση αισθητήρων μέσω I2C με Arduino

Γιατί νυστάζουμε στην τάξη; Η αλήθεια πίσω από το CO2 και η λύση της Unique Tech

Καλωσορίσατε στο Unique Tech Blog!