#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <Wire.h>
#include <SparkFun_MAX3010x.h> // Untuk MAX30102
#include <OneWire.h>
#include <DallasTemperature.h>
// WiFi Credentials
const char* ssid = "lgx3";
const char* password = "Rindaman";
// Telegram Bot Token dan Chat ID
const String botToken = "TOKEN_BOT_ANDA";
const String chatID = "CHAT_ID_ANDA";
// MAX30102 (Heartrate Sensor)
MAX30105 particleSensor;
// DS18B20 (Temperature Sensor)
#define ONE_WIRE_BUS 4 // Pin data DS18B20
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup() {
Serial.begin(115200);
// Hubungkan ke WiFi
Serial.print("Menghubungkan ke WiFi...");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println("\nTerhubung ke WiFi!");
// Inisialisasi MAX30102
if (!particleSensor.begin(Wire, I2C_SPEED_STANDARD)) {
Serial.println("MAX30102 tidak terdeteksi. Periksa koneksi.");
while (1);
}
particleSensor.setup(); // Konfigurasi default
// Inisialisasi DS18B20
sensors.begin();
// Kirim pesan awal
sendMessageToTelegram("Perangkat aktif. Memulai pengukuran...");
}
void loop() {
// Baca data dari MAX30102
long irValue = particleSensor.getIR();
if (irValue > 50000) { // Jika IR terdeteksi
int heartrate = calculateHeartRate(); // Implementasi fungsi detak jantung
Serial.println("Detak Jantung: " + String(heartrate));
} else {
Serial.println("Tidak ada sinyal detak jantung.");
}
// Baca suhu dari DS18B20
sensors.requestTemperatures();
float temperature = sensors.getTempCByIndex(0);
Serial.println("Suhu: " + String(temperature) + "°C");
// Kirim data ke Telegram
String message = "Data Terkini:\n";
message += "Detak Jantung: " + String(irValue > 50000 ? calculateHeartRate() : 0) + " bpm\n";
message += "Suhu: " + String(temperature) + "°C";
sendMessageToTelegram(message);
delay(60000); // Kirim data setiap 1 menit
}
void sendMessageToTelegram(String text) {
if (WiFi.status() == WL_CONNECTED) {
WiFiClientSecure client;
client.setInsecure(); // Abaikan sertifikat SSL
const String url = "/bot" + botToken + "/sendMessage?chat_id=" + chatID + "&text=" + text;
const char* host = "api.telegram.org";
if (client.connect(host, 443)) {
client.println("GET " + url + " HTTP/1.1");
client.println("Host: " + String(host));
client.println("Connection: close");
client.println();
while (client.connected()) {
String line = client.readStringUntil('\n');
Serial.println(line);
}
client.stop();
} else {
Serial.println("Gagal menghubungi Telegram.");
}
} else {
Serial.println("WiFi tidak terhubung.");
}
}
int calculateHeartRate() {
// Tambahkan algoritma penghitungan detak jantung berdasarkan data MAX30102
return random(60, 100); // Placeholder untuk simulasi
}