import network
import machine
import time
from umqtt.simple import MQTTClient
# ---------------- CONFIGURATION ----------------
WIFI_SSID = "Wokwi-GUEST"
WIFI_PASSWORD = ""
THINGSBOARD_HOST = "demo.thingsboard.io"
THINGSBOARD_TOKEN = "votre_TOKEN"
MQTT_CLIENT_ID = "esp32_ultrasonic"
TRIG_PIN = 14
ECHO_PIN = 12
# ---------------- CONNEXION WI-FI ----------------
def connect_wifi():
wifi = network.WLAN(network.STA_IF)
wifi.active(True)
wifi.connect(WIFI_SSID, WIFI_PASSWORD)
print("Connexion au Wi-Fi en cours...")
while not wifi.isconnected():
time.sleep(1)
print("Wi-Fi connecté :", wifi.ifconfig())
connect_wifi()
# ---------------- CAPTEUR ULTRASONIQUE ----------------
trig = machine.Pin(TRIG_PIN, machine.Pin.OUT)
echo = machine.Pin(ECHO_PIN, machine.Pin.IN)
def get_distance():
trig.value(0)
time.sleep_us(2)
trig.value(1)
time.sleep_us(10)
trig.value(0)
pulse_time = machine.time_pulse_us(echo, 1, 30000) # Timeout de 30ms
if pulse_time < 0:
return None # Aucun signal reçu
distance = (pulse_time * 0.0343) / 2
return round(distance, 2)
# ---------------- CONNEXION MQTT ----------------
def connect_mqtt():
try:
client = MQTTClient(MQTT_CLIENT_ID, THINGSBOARD_HOST, user=THINGSBOARD_TOKEN, password="", port=1883)
client.connect()
print("Connecté à ThingsBoard MQTT")
return client
except Exception as e:
print("Erreur MQTT :", e)
return None
client = connect_mqtt()
# ---------------- BOUCLE PRINCIPALE ----------------
while client is not None:
distance = get_distance()
if distance is not None:
print("Distance mesurée :", distance, "cm")
message = '{"distance": ' + str(distance) + '}'
client.publish("v1/devices/me/telemetry", message)
else:
print("Erreur : mesure échouée")
time.sleep(2)