#include <WiFi.h>
#include <PubSubClient.h>
#define TRIG_PIN 5
#define ECHO_PIN 18
#define MQTT_SERVER "broker.hivemq.com"
#define MQTT_PORT 1883
#define TOPIC "distance"
const char* ssid = "Wokwi-GUEST";
const char* password = "";
WiFiClient espClient;
PubSubClient client(espClient);
void setup() {
Serial.begin(115200);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.println("Connexion WiFi en cours...");
}
Serial.println("Connecté au WiFi");
client.setServer(MQTT_SERVER, MQTT_PORT);
}
void reconnect() {
while (!client.connected()) {
if (client.connect("ESP32Publisher")) {
client.subscribe(TOPIC);
} else {
delay(5000);
}
}
}
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
long duration, distance;
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
duration = pulseIn(ECHO_PIN, HIGH);
distance = duration * 0.034 / 2;
if (distance < 100) {
char distStr[8];
dtostrf(distance, 6, 2, distStr);
client.publish(TOPIC, distStr);
}
delay(1000);
}