Translate

Monitor Suhu tubuh, BPM dan SPO2 via BLYNK (IOT) Sensor MLX90614 dan MAX30100/30102

Monitor Suhu tubuh, BPM dan SPO2 via BLYNK (IOT) Sensor MLX90614 dan MAX30100/30102 


         Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang bisa memonitor suhu, bpm dan spo2 via aplikasi blynk dengan media internet, untuk microcontroller yang digunakan yaitu nodemcu esp8266. untuk lebih jelasnya berikut adalah program dan komponen penyusunnya. 



a. Skema dan Komponen Penyusun





b. Interface Blynk





c. Program Arduino IDE

#include <Wire.h>
#define BLYNK_PRINT Serial   
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SimpleTimer.h>
#include <LiquidCrystal_I2C.h>
#include <Adafruit_MLX90614.h>  
#include <MAX30100_PulseOximeter.h>
#define REPORTING_PERIOD_MS 5000
#include "MAX30100.h" //library sensor

LiquidCrystal_I2C lcd(0x27,16,2); //library lcd

MAX30100* pulseOxymeter;   //library

int cacah; //membuat variabel
int spo;
float bpm;
Adafruit_MLX90614 mlx = Adafruit_MLX90614();

float TargetC;
int dataadc;
int suhunya;
int bpmku;
int counter;

PulseOximeter pox;

uint32_t tsLastReport = 0;
String hrData = "";
void onBeatDetected()
{
//    Serial.println("Beat!");
}

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "jhgjhgkjhuyjbdiuyi48789ujhdkjhkfjhku879";

// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "myhotspotku";
char pass[] = "123456789";

SimpleTimer timer;

int pinreset = D6;

void setup() {
 Blynk.begin(auth, ssid, pass);
 timer.setInterval(1000L, sendSensor);
 
 Wire.begin();
 mlx.begin();
 Serial.begin(9600);
 lcd.begin();
 lcd.clear();
 pinMode(pinreset,OUTPUT);
 digitalWrite(pinreset,HIGH);
  
   //Serial.print("Initializing pulse oximeter..");
 
    if (!pox.begin()) {
        //Serial.println("FAILED");
        for(;;);
    } else {
        //Serial.println("SUCCESS");
    }
 
   pox.setIRLedCurrent(MAX30100_LED_CURR_11MA);
   pox.setOnBeatDetectedCallback(onBeatDetected);


}
   
void loop(){
  
pox.update();
    
if (millis() - tsLastReport > REPORTING_PERIOD_MS) {

    bpm = pox.getHeartRate();
    spo = pox.getSpO2();
    bpmku = bpm;
       
    lcd.setCursor(0,1);
    lcd.print("B/S:");
    lcd.print(pox.getHeartRate());
    lcd.print("/");
    lcd.print(pox.getSpO2());
    lcd.print("     ");
       
    tsLastReport = millis();
}

mlx.begin();
TargetC = mlx.readObjectTempC();
suhunya = TargetC;

lcd.setCursor(0,0);
lcd.print("T: ");
lcd.print(suhunya);
lcd.print(" C   ");


if((bpm > 50)&&(spo > 0)){ 
 Blynk.run();
 timer.run();
}
 
delay(1);
}


void sendSensor()
{
 Blynk.virtualWrite(V3, suhunya);
 Blynk.virtualWrite(V4, bpm);
 Blynk.virtualWrite(V5, spo);
 delay(1000);
 digitalWrite(pinreset,LOW);
}



d. VIDEO HASILNYA




1 comment:

  1. Siang mass, mas mau tanya kenapa saat sensor mlx dan max digabung value sensor mlx atau pulse sensor tidak tampil atau nan. sebelumnya saya menggunakan oled tapi stelah coba di lcd juga tidak tampil. valuenya nan

    ReplyDelete