Ceritanya saya mendapatkan projek pesanan untuk membuat alat monitoring data SpO2 untuk pasien covid-19 dengan nodeMCU ESP8266 dan dikirim ke website platform IoT seperti thingspeak atau thinger IO dan akhirnya saya putuskan menggunakan Cayenne. dan artikel ini akan membahas dasar tutorial mengakses sensor Max30100 dengan Arduino.
Komunikasi yang digunakan oleh sensor Max30100 adalah I2C, sekilas prinsip kerjanya sangat mirip dengan sensor garis karena terdapat LED dan juga IR photodiode.
Saya juga kurang terlalu mengerti apa itu SpO2 tapi sekilas saya baca tentang oksigen yang ada dalam darah. selain SpO2 sensor MAX30100 juga bisa membaca BMP atau heart rate nya.
Ada beberapa kendala saat saya mengakses sensor ini ketika digabungkan dengan program lainya seperti OLED LCD atau saat digabungkan dengan pengiriman data ke website thinger.io alias platform iot.
Dan akhirnya saya bisa untuk mengatasi masalah tersebut. adapun projek terkait yang sudah saya berhasil adalah monitoring senor MAX30100 SpO2 dengan OLED dan Blynk Platform IoT dan juga monitoring Max30100 dengan platform Cayenne.
Karena komunikasinya I2C maka hanya perlu dua kabel yaitu SDA dan SCL untuk dihubungkan ke arduino. jika kalian menggunakan Arduino Uno atau Nano atau Promini silahkan gunakan pin A4 dan A5.
Jika menggunakan ESP8266 NodeMCU atau Wemos D1 mini silahkan gunakan D1 dan D2. dan untuk ESP32 silahkan gunakan pin 21 dan 22.
Ini salah satu contoh gambar rangkaian oled sensor max30100 dengan ESP32.
Sesuai judulnya kita akan menggunakan Arduino, jadi saya akan berikan gambar rangkaian max3010 Oled dan juga arduino uno dibawah ini.
Sebelumnya coba perhatikan gambar diatas, saya lupa belum memasang pin SDA dan SCL dari sensor atau oled ke ESP32 nya. silahkan di pasang ya.
ini yang bener hehe
Selanjutnya berikut adalah gambar rangkaian yang menggunakan Arduino, Max30100 dan juga OLED.
Yang perlu dilakukan selanjutnya adalah mendownload library Max30100 dan juga Oled silahkan klik link di bawah ini
Untuk oled install lewat library manager aja biar lebih mudah.
ini adalah contoh program untuk membaca BMP dan juga SpO2 dari sensor MAX30100 dengan arduino atau ESP8266 atau ESP32 dengan mudah.
#include <Wire.h> #include "MAX30100_PulseOximeter.h" #define REPORTING_PERIOD_MS 1000 // PulseOximeter is the higher level interface to the sensor // it offers: // * beat detection reporting // * heart rate calculation // * SpO2 (oxidation level) calculation PulseOximeter pox; uint32_t tsLastReport = 0; // Callback (registered below) fired when a pulse is detected void onBeatDetected() { Serial.println("Beat!"); } void setup() { Serial.begin(115200); Serial.print("Initializing pulse oximeter.."); // Initialize the PulseOximeter instance // Failures are generally due to an improper I2C wiring, missing power supply // or wrong target chip if (!pox.begin()) { Serial.println("FAILED"); for(;;); } else { Serial.println("SUCCESS"); } // The default current for the IR LED is 50mA and it could be changed // by uncommenting the following line. Check MAX30100_Registers.h for all the // available options. pox.setIRLedCurrent(MAX30100_LED_CURR_7_6MA); // Register a callback for the beat detection pox.setOnBeatDetectedCallback(onBeatDetected); } void loop() { // Make sure to call update as fast as possible pox.update(); // Asynchronously dump heart rate and oxidation levels to the serial // For both, a value of 0 means "invalid" if (millis() - tsLastReport > REPORTING_PERIOD_MS) { Serial.print("Heart rate:"); Serial.print(pox.getHeartRate()); Serial.print("bpm / SpO2:"); Serial.print(pox.getSpO2()); Serial.println("%"); tsLastReport = millis(); } }
Oke silahkan dicoba code diatas dan bila hasilnya tidak memuaskan silahkan komentar dibawah, jika kalian butuh jasa terkait sensor ini atau yang lainya bisa menghubungi saya langsung melalui WA atau isi form di menu custom projek
Klaok hub ke cayanne ya gimana ya??