#include "DHTesp.h"
#include <WiFi.h>
#include "ThingSpeak.h"
#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>
// Configuração dos parâmetros do WiFi
char ssid[] = "Wokwi-GUEST";
char pass[] = "123456789abc";
int KeyIndex = 0;
WiFiClient client;
// Configuração dos parâmetros do sensor DHT22
const int DHT_PIN = 15;
DHTesp dhtSensor;
float temperatura = 0;
float umidade = 0;
// Configuração dos parâmetros do MPU6050
Adafruit_MPU6050 mpu;
// Configuração dos parâmetros do sensor ultrassônico HC-SR04
const int TRIGGER_PIN = 19; // Pino de trigger do HC-SR04
const int ECHO_PIN = 18; // Pino de echo do HC-SR04
// ThingSpeak configuração
unsigned long channelID = 2546948; // ID do canal ThingSpeak
const char * writeAPIKey = "73W76WNU91K3NFGE";
// Protótipo das funções
void reconectWiFi();
void lerSensores();
void escreveCanais();
void setup() {
Serial.begin(115200);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
WiFi.mode(WIFI_STA);
ThingSpeak.begin(client);
Serial.print("Conectando-se ao Wi-Fi");
WiFi.begin("Wokwi-GUEST", "", 6);
while(WiFi.status() != WL_CONNECTED){
Serial.println("Tentando se conectar ao SSID WPA: ");
Serial.println(ssid);
delay(1000);
}
// Inicialização do MPU6050
if (!mpu.begin()) {
}
// Inicialização do HC-SR04
pinMode(TRIGGER_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
Serial.println(" Conectado!");
}
void loop() {
reconectWiFi();
lerSensores();
escreveCanais();
delay(1000);
}
// Funções
void reconectWiFi(){
if(WiFi.status() != WL_CONNECTED){
Serial.println("Tentando se conectar ao SSID WPA: " + String(ssid));
while(WiFi.status() != WL_CONNECTED){
WiFi.begin(ssid, pass);
Serial.println(".");
delay(5000);
}
Serial.println("\nConectado");
}
}
void lerSensores(){
// Leitura do sensor DHT22
TempAndHumidity data = dhtSensor.getTempAndHumidity();
temperatura = data.temperature;
umidade = data.humidity;
Serial.print("Tempertatura: "); Serial.print(data.temperature); Serial.println(" °C");
Serial.print("Umidade: "); Serial.print(data.humidity); Serial.println(" %");
// Leitura do MPU6050
sensors_event_t accel, gyro, temp;
mpu.getEvent(&accel, &gyro, &temp);
Serial.print("Aceleração X: "); Serial.print(accel.acceleration.x); Serial.println(" m/s^2");
Serial.print("Aceleração Y: "); Serial.print(accel.acceleration.y); Serial.println(" m/s^2");
Serial.print("Aceleração Z: "); Serial.print(accel.acceleration.z); Serial.println(" m/s^2");
Serial.print("Giroscópio X: "); Serial.print(gyro.gyro.x); Serial.println(" rad/s");
Serial.print("Giroscópio Y: "); Serial.print(gyro.gyro.y); Serial.println(" rad/s");
Serial.print("Giroscópio Z: "); Serial.print(gyro.gyro.z); Serial.println(" rad/s");
// Leitura do sensor ultrassônico HC-SR04
digitalWrite(TRIGGER_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIGGER_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGGER_PIN, LOW);
unsigned long duration = pulseIn(ECHO_PIN, HIGH);
float distance = duration * 0.034 / 2; // Convertendo para centímetros
Serial.print("Distância: "); Serial.print(distance); Serial.println(" cm");
}
void escreveCanais(){
ThingSpeak.setField(1, temperatura);
ThingSpeak.setField(2, umidade);
sensors_event_t accel, gyro, temp;
mpu.getEvent(&accel, &gyro, &temp);
ThingSpeak.setField(3, gyro.gyro.x); // Aceleração X do MPU6050
digitalWrite(TRIGGER_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIGGER_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGGER_PIN, LOW);
unsigned long duration = pulseIn(ECHO_PIN, HIGH);
float distance = duration * 0.034 / 2; // Distância do sensor ultrassônico HC-SR04
ThingSpeak.setField(4, distance);
int x = ThingSpeak.writeFields(2546948, "73W76WNU91K3NFGE");
if(x == 200){
Serial.println("Dados enviados para o ThingSpeak com sucesso!");
} else {
Serial.println("Erro ao enviar dados para o ThingSpeak: " + String(x));
}
delay(20000);
}