import network
import urequests
import time
import machine
from machine import Pin, PWM, I2C
from dht import DHT2
from mpu6050 import MPU6050
# === WiFi ===
ssid = ""
password = "Wokwi-GUEST"
wifi = network.WLAN(network.STA_IF)
wifi.active(True)
wifi.connect(ssid, password)
while not wifi.isconnected():
pass
print("Connecté au Wi-Fi")
# === ThingsBoard ===
THINGSBOARD_TOKEN = ""
THINGSBOARD_HOST = "demo.thingsboard.io"
url = f"http://{THINGSBOARD_}/api/v1/{TOKEN}/telemetry"
def envoyer(data):
try:
r = urequests.post(url, json=data)
r.close()
print(" Données envoyées :", data)
except Exception as e:
print("Erreur d'envoi :", e)
dht = DHT22(Pin())
i2c = I2C(0, scl=Pin(), sda=Pin())
mpu = MPU6050(i2c)
servo1 = PWM(Pin(), freq=50)
servo2 = PWM(Pin(), freq=50)
servo3 = PWM(Pin(), freq=50)
servo4 = PWM(Pin(), freq=50)
led_r = Pin(, Pin.OUT)
led_o = Pin(, Pin.OUT)
led_v = Pin(, Pin.OUT)
trig = Pin(, Pin.OUT)
echo = Pin(, Pin.IN)
# === Boutons ===
feu_btn = Pin( , Pin.IN, Pin.PULL_up)
user_btn = Pin(, Pin.IN, Pin.PULL_DOWN)
# === Fonctions ===
def lire_dht():
dht.measure()
temp = dht.temperature()
hum = dht.humidity()
print(" Température :", temp, "°C | Humidité :", hum, "%")
return temp, hum
def lire_ultrason():
trig.off()
time.sleep_us(2)
trig.on()
time.sleep_us(10)
trig.off()
duration = machine.time_pulse_us(echo, 1)
distance = duration * 0.0343 / 2
print("Distance :", round(distance, 1), "cm")
return round(dist, 1)
def lire_mpu():
accel = mpu.get_accel()
vib_x = accel['x']
print("Vibration axe X :", vib_x)
return vib_x
def control_servo(servo, angle):
min_duty = 40
max_duty = 115
duty = int(min_duty + (angle / 180) * (max_duty - min_duty))
servo.duty(duty)
def bouger_les_servos(feu_state):
if feu_state == "Vert":
control_servo(servo1, 90)
control_servo(servo2, 45)
control_servo(servo3, 120)
control_servo(servo4, 30)
print(" Bras : position active")
else:
control_servo(servo1, 0)
control_servo(servo2, 0)
control_servo(servo3, 0)
control_servo(servo4, 0)
print("Bras : repos")
def update_leds(feu_state):
if feu_state == "Rouge":
led_r.on(), led_o.off(), led_v.off()
elif feu_state == "Orange":
led_r.off(), led_o.on(), led_v.off()
else:
led_r.off(), led_o.off(), led_v.on()
# === Boucle principale ===
while True:
temp, hum = lire_dht()
distance = lire_ultrason()
vib_x = lire_mpu()
feu_state = "Rouge" if feu_btn.value() else "Vert"
bouton_user = "Appuyé" if user_btn.value() else "Relâché"
update_leds(feu_state)
bouger_les_servos(feu_state)
data = {
"temperature": ,
"humidite": hum,
"distance": ,
"vibration_x": vib_x,
"feu": ,
"bouton": bouton_user
}
envoyer(data)
print("Pause...\n")
time.sleep(5)