/*
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
// Substituir seu_dispositivo pelo nome que identifica o dispositivo - API LABEL.
// const String url = "http://things.ubidots.com/api/v1.6/devices/seu_dispositivo";
const String url = "http://things.ubidots.com/api/v1.6/devices/seu_dispositivo";
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_variavel pelo nome que identifica a variável desejada - API LABEL.
// sprintf(payload, "{\"sua_variavel\":%d,\"sua_variavel\":%d,\"sua_variavel\":%d,\"sua_variavel\":%d}", temperatura_celsius, temperatura_fahrenheit, centimetros, polegadas);
sprintf(payload, "{\"sua_variavel\":%d,\"sua_variavel\":%d,\"sua_variavel\":%d,\"sua_variavel\":%d}", temperatura_celsius, temperatura_fahrenheit, centimetros, polegadas);
int contentLength = strlen(payload);
Serial.println("Requisicao: POST");
cliente.begin(url);
cliente.addHeader("Content-Type", "application/json");
cliente.addHeader("Content-Length", String(contentLength));
// Substituir seu_token_default pela chave que identifica o seu token - TOKEN default.
// cliente.addHeader("X-Auth-Token","seu_token_default");
cliente.addHeader("X-Auth-Token", "seu_token_default");
int statusCode = cliente.POST(payload);
String response = cliente.getString();
Serial.print("Status: ");
Serial.println(statusCode);
Serial.print("Retorno: ");
Serial.println(response);
Serial.println();
delay(15000);
}