#include <WiFi.h>
#include <PubSubClient.h>
#define MQTTSERVER "test.mosquitto.org"
#define PORT 1883
WiFiClient espClient;
PubSubClient client(espClient);
const int trigPin = 5;
const int echoPin = 18;
#define VELOCIDADE_DO_SOM 0.034
long duracao;
float distancCm;
void setup() {
Serial.begin(115200);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
// Conexão Wi-Fi
WiFi.begin("Wokwi-GUEST", "", 6);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Conectando ao Wi-Fi...");
}
Serial.println("Conectado ao Wi-Fi");
client.setServer(MQTTSERVER, PORT);
}
void loop() {
if (!client.connected()) {
establishConnection();
}
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duracao = pulseIn(echoPin, HIGH);
distancCm = duracao * VELOCIDADE_DO_SOM / 2;
Serial.print("Distancia (cm): ");
Serial.println(distancCm);
if (client.connected()) {
String distanceString = String(distancCm);
if (client.publish("sensor/distance", distanceString.c_str())) {
Serial.println("Distância enviada: " + distanceString);
} else {
Serial.println("Falha ao enviar distância.");
}
}
client.loop();
delay(1000);
}
void establishConnection() {
while (!client.connected()) {
Serial.println("Tentando conectar ao broker MQTT...");
if (client.connect("ESP32_Sensor")) {
Serial.println("Conectado ao broker MQTT");
} else {
Serial.print("Falha na conexão. Código de erro: ");
Serial.println(client.state());
delay(2000);
}
}
}