Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Mengukur Detak Jantung dan SpO2 dengan MAX30102

Komponen dan persediaan

Arduino UNO
× 1
Adafruit OLED 128x32
× 1
Buzzer
× 1
Maxim Integrated MAX30102 High-Sensitivity Pulse Oximeter dan Sensor Detak Jantung untuk Kesehatan yang Dapat Dipakai
× 1

Tentang proyek ini

Pendahuluan

Hai, dalam tutorial ini kita akan menghubungkan MAX30102:pulse oximetry dan modul monitor detak jantung dengan papan Arduino UNO, dan kemudian membuat proyek untuk mengukur BPM menggunakan modul ini + tampilan OLED dan Buzzer.

BPM adalah "detak per menit" dan mereka adalah sekitar 65-75 saat istirahat untuk orang normal, atletik mungkin lebih rendah dari itu, dan SpO2 adalah tingkat saturasi Oksigen, dan untuk orang normal di atas 95%.

MAX30102 dapat ditemukan di modul yang berbeda, saya memiliki versi WAVGAT, tidak masalah selama IC MAX30102.

Komponen

Berikut adalah hal-hal yang akan saya gunakan

Tes:

Kode yang saya gunakan dalam tutorial cukup jelas dan itu hanya contoh dari perpustakaan Sparkfun_MAX3010x.

Untuk kode yang saya buat untuk OLED dan Buzzer, ini adalah versi modifikasi dari contoh "HeartRate", ia meminta Anda untuk meletakkan jari Anda di sensor.

Setelah Anda meletakkan jari, tetap tenang untuk beberapa saat, sampai Anda mulai mendengar "Bip" Buzzer yang disinkronkan dengan detak jantung Anda atau animasi OLED yang disinkronkan dengannya, lalu Anda dapat membaca BPM yang benar.

N.B:Dalam kode saya benar-benar mencetak BPM Rata-rata, karena melakukan rata-rata 4 BPM itu lebih akurat hanya memberikan beberapa waktu.

Membuat Bitmap untuk OLED

Jantung (kecil) yang Anda lihat adalah gambar bitmap, dan setiap kali sensor mendeteksi detak jantung, kami beralih ke gambar bitmap jantung (besar) lain untuk sementara waktu dan itu memberi kesan detak jantung bersamaan dengan bunyi bip dari bel.

Berikut adalah dua bitmap dalam kode yang kita panggil nanti pada kode

Untuk membuatnya, Cari gambar (hitam dengan latar belakang putih) untuk apa pun yang ingin Anda lihat di layar jangan lupa ukurannya, yang saya gunakan adalah 128x32 px dan gambarnya lebih kecil dari itu (32x32 px) dan (24x21 px)

Unduh LCD Assistant dan buka (beberapa langkah di bawah)

Dan ini "nomor" Anda

Dan begini cara saya menyebutnya dalam kode

display.drawBitmap(5, 5, logo2_bmp, 24, 21, WHITE); 

Artinya

 display.drawBitmap(Mulai x pos, Mulai pos y, nama Bitmap, Lebar, Tinggi, Warna); 

Dan seperti yang Anda lihat dalam kode yang satu dipanggil ketika jari terdeteksi dan yang lainnya jika detak jantung terdeteksi.

Dan ini dia, buat apa yang Anda inginkan.

Kode

  • MAX_BPM_OLED_Buzzer.ino
MAX_BPM_OLED_Buzzer.inoArduino
Dimodifikasi dari perpustakaan SparkFun MAX3010x
/* Kode ini bekerja dengan MAX30102 + 128x32 OLED i2c + Buzzer dan Arduino UNO * Ini menampilkan BPM Rata-rata di layar, dengan animasi dan suara buzzer * setiap kali detak jantung terdeteksi * Ini adalah versi modifikasi dari contoh library HeartRate * Lihat www.surtrtech.com untuk detail lebih lanjut atau saluran YouTube SurtrTech */#include  //OLED library#include #include #sertakan "MAX30105.h" //pustaka MAX3010x#sertakan "heartRate.h" //Algoritme penghitungan detak jantungMAX30105 particleSensor;const byte RATE_SIZE =4; // Tingkatkan ini untuk lebih rata-rata. 4 adalah tingkat byte yang bagus[RATE_SIZE]; //Array detak jantungbyte rateSpot =0;lama terakhirBeat =0; //Waktu saat ketukan terakhir terjadifloat beatsPerMinute;int beatAvg;#define SCREEN_WIDTH 128 // Lebar tampilan OLED, dalam piksel#define SCREEN_HEIGHT 32 // Tinggi tampilan OLED, dalam piksel#define OLED_RESET -1 // Setel ulang pin # (atau -1 jika berbagi pin reset Arduino) Tampilan Adafruit_SSD1306 (SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); //Mendeklarasikan nama tampilan (display)static const unsigned char PROGMEM logo2_bmp[] ={ 0x03, 0xC0, 0xF0, 0x06, 0x71, 0x8C, 0x0C, 0x1B, 0x06, 0x18, 0x0E, 0x02, 0x10, 0x0C, 0x03, 0x03 , //Logo2 dan Logo3 adalah dua gambar bmp yang ditampilkan pada OLED jika dipanggil0x04, 0x01, 0x10, 0x04, 0x01, 0x10, 0x40, 0x01, 0x10, 0x40, 0x01, 0x10, 0xC0, 0x03, 0x08, 0x88,0x02, 0x08, 0xB8, 0x04, 0xFF, 0x37, 0x08, 0x01, 0x30, 0x18, 0x01, 0x90, 0x30, 0x00, 0xC0, 0x60,0x00, 0x60, 0xC0, 0x00, 0x31, 0x80, 0x00, 0x1B, 0x00 0x0E, 0x00, 0x00, 0x04, 0x00, };static const unsigned char PROGMEM logo3_bmp[] ={ 0x01, 0xF0, 0x0F, 0x80, 0x06, 0x1C, 0x38, 0x60, 0x18, 0x06, 0x60, 0x18, 0x10 0x80, 0x08,0x20, 0x01, 0x80, 0x04, 0x40, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x02, 0xC0, 0x00, 0x08, 0x03,0x80, 0x00, 0x08, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x1C, 0x01, 0x80, 0x00, 0x14, 0x00,0x80, 0x00, 0x14, 0x00, 0x80, 0x00, 0x14, 0x00, 0x40, 0x10, 0x12, 0x00, 0x40, 0x10, 0x12 0x7E, 0x1F, 0x23, 0xFE, 0x03, 0 x31, 0xA0, 0x04, 0x01, 0xA0, 0xA0, 0x0C, 0x00, 0xA0, 0xA0, 0x08,0x00, 0x60, 0xE0, 0x10, 0x00, 0x20, 0x60, 0x20, 0x06, 0x00, 0x40, 0x6000, 0x03, 0x 0x40, 0xC0,0x01, 0x80, 0x01, 0x80, 0x00, 0xC0, 0x03, 0x00, 0x00, 0x60, 0x06, 0x00, 0x00, 0x30, 0x0C, 0x00,0x00, 0x08, 0x10, 0x00, 0x00, 0x06 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x01, 0x80, 0x00 };pengaturan batal() { display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //Mulai tampilan OLED display.display(); penundaan(3000); // Inisialisasi partikel sensorSensor.begin(Kabel, I2C_SPEED_FAST); //Gunakan port I2C default, partikel berkecepatan 400kHzSensor.setup(); //Konfigurasikan sensor dengan pengaturan default particleSensor.setPulseAmplitudeRed(0x0A); //Nyalakan LED Merah ke rendah untuk menunjukkan sensor sedang berjalan}void loop() { long irValue =particleSensor.getIR(); //Membaca nilai IR akan memungkinkan kita untuk mengetahui apakah ada jari pada sensor atau tidak //Juga mendeteksi detak jantungif(irValue> 7000){ //Jika jari terdeteksi display.clearDisplay(); //Hapus tampilan display.drawBitmap(5, 5, logo2_bmp, 24, 21, WHITE); //Menggambar gambar bmp pertama (hati kecil) display.setTextSize(2); // Di dekatnya menampilkan BPM rata-rata Anda dapat menampilkan BPM jika Anda ingin display.setTextColor(WHITE); display.setCursor(50,0); display.println("BPM"); display.setCursor(50,18); display.println(beatAvg); tampilan.display(); if (checkForBeat(irValue) ==true) //Jika detak jantung terdeteksi { display.clearDisplay(); //Hapus tampilan display.drawBitmap(0, 0, logo3_bmp, 32, 32, WHITE); //Gambar gambar kedua (hati yang lebih besar) display.setTextSize(2); //Dan masih menampilkan BPM rata-rata display.setTextColor(WHITE); display.setCursor(50,0); display.println("BPM"); display.setCursor(50,18); display.println(beatAvg); tampilan.display(); nada (3.1000); //Dan nada bel selama 100 ms, Anda dapat menguranginya, itu akan menjadi penundaan yang lebih baik (100); tidakNada(3); //Nonaktifkan bel agar memiliki efek "bip" //Kami merasakan ketukan! delta panjang =milis() - lastBeat; //Mengukur durasi antara dua ketukan lastBeat =milis(); beatsPerMinute =60 / (delta / 10000.0); //Menghitung BPM if (beatsPerMinute <255 &&beatsPerMinute> 20) //Untuk menghitung rata-rata kita menyimpan beberapa nilai (4) kemudian lakukan beberapa matematika untuk menghitung rata-rata { rate[rateSpot++] =(byte)beatsPerMinute; //Simpan bacaan ini dalam array rateSpot %=RATE_SIZE; //Wrap variabel //Ambil rata-rata pembacaan beatAvg =0; untuk (byte x =0; x  
Perpustakaan SparkFun MAX3010x
https://github.com/sparkfun/SparkFun_MAX3010x_Sensor_Library
Adafruit SSD1306
https://github.com/adafruit/Adafruit_SSD1306
Perpustakaan Adafruit GFX
https://github.com/adafruit/Adafruit-GFX-Library

Skema

Kedua modul memiliki antarmuka i²c, jika Anda menggunakan buzzer 2 pin (-) dengan GND dan (+) dengan resistor maka D3

Proses manufaktur

  1. Kontrol akses dengan QR, RFID, dan verifikasi suhu
  2. Ukur suhu dengan sensor DS18B20 1-kawat dan Raspberry Pi
  3. Aeroponik dengan Raspberry Pi dan sensor kelembapan
  4. Monitor Detak Jantung Jarak Jauh
  5. Membuat robot dengan Raspberry Pi dan Python
  6. Portenta dan Sensor Termokopel (dengan MAX6675)
  7. Game Arduino Gyroscope dengan MPU-6050
  8. Pemantau Detak Jantung Menggunakan IoT
  9. Mendeteksi Detak Jantung dengan Fotoresistor
  10. Komponen Visual dan Matterport – kemungkinan otomatisasi baru dengan ProFeeder X