#include <WiFi.h>
#include <DHT.h>
#include "ThingSpeak.h"
// CONNECT COMMAND
const char* WIFI_NAME = "Wokwi-GUEST";
const char* WIFI_PASSWORD = "";
const int myChannelNumber = 2600499;
const char* myApiKey = "7WH7SUHAIII6OAJH";
const char* server = "api.thingspeak.com";
WiFiClient client;
DHT dht(15, DHT22); // Inisialisasi DHT dengan pin dan tipe yang benar
#define DHT_PIN 15
#define PULSE_PIN 35
void setup() {
Serial.begin(115200);
dht.begin(); // Memulai sensor DHT
WiFi.begin(WIFI_NAME, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("WiFi connected!");
Serial.println("Local IP: " + String(WiFi.localIP()));
WiFi.mode(WIFI_STA);
ThingSpeak.begin(client);
}
void loop() {
// Membaca suhu dan kelembaban dari sensor DHT
float h = dht.readHumidity();
float t = dht.readTemperature();
// Memeriksa apakah pembacaan valid
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// Membaca nilai pulse dari sensor pulse
int16_t pulseValue = analogRead(PULSE_PIN);
// Mengonversi nilai pulse ke tegangan
float voltage = pulseValue * (3.3 / 4095.0); // Sesuaikan jika menggunakan tegangan referensi yang berbeda
// Menghitung detak jantung dari tegangan (perhitungan contoh, sesuaikan jika diperlukan)
int heartRate = (voltage / 3.3) * 675;
// Mencetak nilai sensor ke serial monitor
Serial.print("Heart Rate: ");
Serial.print(heartRate);
Serial.print(" BPM, Temp: ");
Serial.print(t);
Serial.print(" °C, Humidity: ");
Serial.print(h);
Serial.println(" %");
// Mengirim data ke ThingSpeak
ThingSpeak.setField(1, t);
ThingSpeak.setField(2, h);
ThingSpeak.setField(3, heartRate);
int x = ThingSpeak.writeFields(myChannelNumber, myApiKey);
if (x == 200) {
Serial.println("Channel update successful.");
} else {
Serial.println("Problem updating channel. HTTP error code " + String(x));
}
// Menunggu sebelum membaca sensor lagi
delay(60000); // 1 menit delay antara pembaruan
}