/******************************************************
* Projeto: Smart Monitor
* Sprint 3 Passa a Bola - Grupo Neos Dromos Consultancy
*
* Autores:
* - Nuno Coutinho Henrique RM562438
* - Yasmin Amorim Affonso RM563645
* - Miguel dos Santos de Andrade RM563516
* - Erick Gabriel Ferreira dos Santos RM565144
*
* Descrição:
* Leitura de temperatura e umidade (DHT22) e batimento cardíaco simulado (potenciômetro), para monitorar atividade durante jogos de futebol feminino
* enviando os dados para o ThingSpeak usando ESP32 no simulador Wokwi.
******************************************************/
#include <WiFi.h>
#include "DHT.h"
#include <HTTPClient.h>
#define DHTPIN 15
#define DHTTYPE DHT22
#define HEARTPIN 34
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const char* server = "http://api.thingspeak.com/update";
String apiKey = "JOHBBPMVFV6ST75L";
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
Serial.print("Conectando ao WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nConectado!");
dht.begin();
}
void loop() {
float temperatura = dht.readTemperature();
float umidade = dht.readHumidity();
int bpm = analogRead(HEARTPIN);
if (!isnan(temperatura) && !isnan(umidade)) {
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
String url = server;
url += "?api_key=" + apiKey;
url += "&field1=" + String(temperatura);
url += "&field2=" + String(umidade);
url += "&field3=" + String(bpm);
http.begin(url);
int httpCode = http.GET();
if (httpCode > 0) {
Serial.print("Temperatura: ");
Serial.print(temperatura);
Serial.println(" °C");
Serial.print("Umidade: ");
Serial.print(umidade);
Serial.println(" %");
Serial.print("Batimento: ");
Serial.println(bpm);
Serial.println("---------------------");
Serial.println("Dados enviados ao ThingSpeak!");
} else {
Serial.println("Falha no envio.");
}
http.end();
}
}
delay(20000); // respeitar limite do ThingSpeak (15s+)
}