/*
Código demonstrativo para a aula de Sistemas Embarcados,
Curso de Ciência da Computação e Engenharia da Computação
EEP.
*/
#include <WiFi.h>
#include <HTTPClient.h>
#include "DHT.h"
#define DHTPIN 15
#define DHTTYPE DHT22
#define PINO_TRIGGER 13
#define PINO_ECHO 12
long readUltrasonicDistance() {
digitalWrite(PINO_TRIGGER, LOW);
delayMicroseconds(2);
digitalWrite(PINO_TRIGGER, HIGH);
delayMicroseconds(10);
digitalWrite(PINO_TRIGGER, LOW);
return pulseIn(PINO_ECHO, HIGH);
}
DHT dht(DHTPIN, DHTTYPE);
HTTPClient cliente;
void setup() {
pinMode(PINO_ECHO, INPUT);
pinMode(PINO_TRIGGER, OUTPUT);
Serial.begin(115200);
while (!Serial) { }
dht.begin();
WiFi.begin("Wokwi-GUEST", "");
while (WiFi.status() != WL_CONNECTED) {
delay(250);
}
Serial.println("-----------------------------------------------");
Serial.print("Endereco IP: ");
Serial.println(WiFi.localIP());
Serial.println("-----------------------------------------------");
delay(1000);
}
void loop() {
char payload[200];
int umidade_ar = dht.readHumidity();
int temperatura_celsius = dht.readTemperature(false);
int temperatura_fahrenheit = dht.readTemperature(true);
int sensacao_termica = dht.computeHeatIndex(temperatura_celsius, umidade_ar);
int centimetros = 0.01723 * readUltrasonicDistance();
int polegadas = (centimetros / 2.54);
Serial.println("--------------------------------------------------------------------------------");
Serial.print("CM: ");
Serial.println(centimetros);
Serial.print("POL: ");
Serial.println(polegadas);
Serial.print("C: ");
Serial.println(temperatura_celsius);
Serial.print("F: ");
Serial.println(temperatura_fahrenheit);
Serial.println("--------------------------------------------------------------------------------");
Serial.println("");
// Substituir sua_chave_escrita pela chave de escrita do seu canal.
// sprintf(payload, "http://api.thingspeak.com/update?api_key=sua_chave_escrita&field1=%d&field2=%d&field3=%d&field4=%d", temperatura_celsius, temperatura_fahrenheit, centimetros, polegadas);
sprintf(payload, "http://api.thingspeak.com/update?api_key=sua_chave_escrita&field1=%d&field2=%d&field3=%d&field4=%d", temperatura_celsius, temperatura_fahrenheit, centimetros, polegadas);
Serial.println("Requisicao: GET");
cliente.begin(payload);
int statusCode = cliente.GET();
String response = cliente.getString();
Serial.print("Status: ");
Serial.println(statusCode);
Serial.print("Retorno: ");
Serial.println(response);
Serial.println();
delay(15000);
}