capteur-dht11.py

Placas Libre Computer Amlogic — libre-amlogic (buque insignia: Le Potato AML-S905X-CC) · Archivo : capteur-dht11.py · Lenguaje : Python · Uso : Lire un capteur DHT11/DHT22 depuis Linux (température/humidité)

El driver Adafruit CircuitPython funciona en Linux estándar: hace bit-bang del protocolo de 1 hilo del DHT vía libgpiod. El script imprime temperatura y humedad cada 2 s, encajando las tramas inválidas sin caerse.

Hardware necesario

Una Libre Computer « Le Potato » (Amlogic S905X, 2 GB) con Armbian, alimentada a 5 V/2,5 A micro-USB, con su conector de 40 pines compatible Raspberry Pi. 1 sensor DHT11/DHT22 + resistencia de 10 kΩ (módulo de 3 pines: ya integrada).

Cableado

VDD a 3,3 V, DATA al pin del script (GPIO4) con pull-up de 10 kΩ a 3,3 V, GND a GND.

Funcionamiento

adafruit_dht controla el protocolo por el kernel (use_pulseio=False): impulso de arranque, lectura de microsegundos, decodificación. Los fallos periódicos son normales en el DHT11. En Armbian: sudo apt install gpiod libgpiod-utils python3-gpiod; los pines del conector se llaman « 7J1 Header PinN » en gpioinfo. Solo 3,3 V, ningún pin tolerante a 5 V.

Para ir más lejos

Registrar en CSV con el script cron, o exponer los valores a la red con el servidor web integrado en el puerto 8080.

capteur-dht11.py

#!/usr/bin/env python3
# DHT11/DHT22 via adafruit-circuitpython-dht (pilote en noyau ou bit-bang).
# Installation :
#   sudo apt install python3-dev python3-venv libgpiod2
#   python3 -m venv ~/.venv && source ~/.venv/bin/activate
#   pip install adafruit-circuitpython-dht
import time
import board
import adafruit_dht

# Broche physique 7 (GPIO4 sur connecteur standard 40 broches) :
capteur = adafruit_dht.DHT11(board.D4, use_pulseio=False)
# DHT22 : adafruit_dht.DHT22(board.D4, use_pulseio=False)

print("Ctrl-C pour arreter")
while True:
    try:
        t = capteur.temperature      # degres Celsius
        h = capteur.humidity         # % HR
        print(f"T = {t:0.1f} C | HR = {h:0.1f} %")
    except RuntimeError as erreur:
        # Le DHT rate parfois une trame : normal, on recommence.
        print("trame invalide:", erreur.args[0])
    time.sleep(2.0)

← Volver a la ficha