mesures.py
MicroPython tourne sur toutes ces cartes : pas de chaîne de compilation, on édite main.py et ça part. Ce logger DHT écrit du JSON ligne à ligne dans un fichier — le format que tout outil avalera ensuite.
Matériel requis
Une carte ESP32-S3 (double cœur Xtensa avec instructions vectorielles, Wi-Fi + BLE 5, USB natif) type DevKitC-1, XIAO ou T-Display-S3, alimentée par USB. 1 DHT11 (ou DHT22 en changeant la classe) sur GPIO4.
Branchement
VDD 3,3 V, DATA GPIO4 + pull-up 10 kΩ, GND. Le flash interne retient data.log entre deux coupures.
Fonctionnement
dht.DHT11.measure() pilote le protocole 1 fil en MicroPython pur ; les échecs sont normaux, d'où trois tentatives. open("a") ajoute la ligne JSON au fichier du système de fichiers interne. Dans l'Arduino IDE (paquet esp32), choisissez « ESP32S3 Dev Module », activez « USB CDC On Boot », puis Téléverser. Beaucoup de cartes placent un WS2812 sur GPIO48.
Pour aller plus loin
mpremote cp data.log . pour rapatrier le journal, ou remplacer l'append par un envoi Wi-Fi (module network + socket).
mesures.py
# MicroPython : DHT11 sur GPIO4 -> moniteur serie + journal /data.log.
# Copier ce fichier en main.py (Thonny, rshell ou mpremote cp mesures.py main.py).
import machine, dht, time, json
capteur = dht.DHT11(machine.Pin(4))
led = machine.Pin(2, machine.Pin.OUT)
horloge = machine.time_pulse_us # reference pour garder la lib chargee
def lire():
for _ in range(3): # 3 tentatives : le DHT rate des trames
try:
capteur.measure()
return capteur.temperature(), capteur.humidity()
except OSError:
time.sleep_ms(200)
return None, None
print("Mesures toutes les 5 s (Ctrl-C pour sortir)")
while True:
t, h = lire()
if t is not None:
ligne = json.dumps({"t": t, "h": h, "ms": time.ticks_ms()})
print(ligne)
with open("data.log", "a") as f: # append sur le systeme de fichiers
f.write(ligne + "\n")
led.value(not led.value())
time.sleep(5)