#include <WiFi.h>
const char ssid[] = "Wokwi-GUEST";
const char password[] = "";
WiFiClient client;
#include<ThingSpeak.h>
const long CHANNEL = 2575218;
const char *WRITE_API = "SRD8Y56446G3H7MH";
#define pinTEMP 15 // Pino do sensor de Temperatura
#define pinBPM 5 // Pino de interrupção
const float BETA = 3950; // Variável do coeficiente BETA do termistor
unsigned long cont = 0;
long prevMillisThingsSpeak = 0;
int intervalThingSpeak = 15000;
unsigned long intervalodedados = 15000;
long tempoAnterior = 0;
void setup() {
Serial.begin(115200);
Serial.println();
Serial.println("Envia os dados do sensor para o ThingSpeak usando o ESP32");
WiFi.mode(WIFI_STA);
ThingSpeak.begin(client);
pinMode(pinBPM, INPUT);
pinMode(pinTEMP, OUTPUT);
}
void loop() {
if(WiFi.status() != WL_CONNECTED) {
Serial.print("Atencao para conectar o SSID: ");
Serial.println(ssid);
while (WiFi.status() != WL_CONNECTED) {
WiFi.begin(ssid, password);
Serial.print(".");
delay(5000);
}
Serial.println("\nConectado");
}
if (millis() - prevMillisThingsSpeak > intervalThingSpeak) {
analogReadResolution(10); // Define o tamanho (em bits) dos valores lido em 10 bits (valores de 0 a 1023)
int count = analogRead(pinBPM);
// Ajuste na fórmula para mapear a faixa de 0 Hz a 220 Hz para a frequência cardíaca em BPM
float heartRate = map(count, 0, 1023, 0, 220); // Mapeia a contagem para a faixa desejada
// Fórmula para cálculo da temperatura corporal em celsius
int valorTemp = analogRead(pinTEMP);
float tempCorp = 1 / (log(1 / (1023. / valorTemp - 1)) / BETA + 1.0 / 298.15) - 273.15;
cont++; // A cada impressão, incrementa um valor (para número de análise)
Serial.println("Análise " + String(cont) + ":");
Serial.println("Temperatura Corporal: " + String(tempCorp) + " ℃");
Serial.println("Frequência Cardíaca: " + String(heartRate) + " BPM");
Serial.println("----");
ThingSpeak.setField(1, tempCorp);
ThingSpeak.setField(2, heartRate);
int x = ThingSpeak.writeFields(CHANNEL, WRITE_API);
if (x == 200) {
Serial.println("Update realizado com sucesso");
} else {
Serial.println("Problema no canal - erro HTTP " + String(x));
}
prevMillisThingsSpeak = millis();
}
}