mesures.py

ESP32 (original, clase ESP32-WROOM-32) · Archivo : mesures.py · Lenguaje : MicroPython · Uso : Journaliser des mesures en MicroPython sans compilation

MicroPython corre en todas estas placas: sin cadena de compilación, edita main.py y arranca. Este registrador DHT escribe JSON línea a línea en un archivo, el formato que cualquier herramienta traga después.

Hardware necesario

Una placa ESP32 clásica (módulo ESP32-WROOM-32, doble núcleo Xtensa a 240 MHz, Wi-Fi + Bluetooth) tipo DevKitC / DOIT V1, alimentada por micro-USB. 1 DHT11 (o DHT22 cambiando la clase) en GPIO4.

Cableado

VDD 3,3 V, DATA GPIO4 + pull-up de 10 kΩ, GND. El flash interno guarda data.log entre cortes de corriente.

Funcionamiento

dht.DHT11.measure() controla el protocolo de 1 hilo en MicroPython puro; los fallos son normales, de ahí tres intentos. open("a") añade la línea JSON al sistema de archivos interno. En el Arduino IDE, instale el paquete « esp32 » (Gestor de placas), elija « Dev Module », el puerto y Subir (mantenga BOOT si falla la detección). GPIO34-39 son solo entrada; evite GPIO6-11 y GPIO12.

Para ir más lejos

mpremote cp data.log . para recuperar el registro, o sustituir el append por un envío Wi-Fi (módulos 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)

← Volver a la ficha