from machine import Pin
import time
import dht # Assurez-vous que le module `dht` est importé
# Initialisation des LEDs
green_led = Pin(4, Pin.OUT)
red_led = Pin(2, Pin.OUT)
# Configuration du capteur DHT22
PIN_DHT = 15 # GPIO pour le DHT22
capteur = dht.DHT22(Pin(PIN_DHT))
def control_led_DHT(command):
"""
Contrôle les LEDs et lit le capteur DHT22 en fonction de la commande.
"""
if command.upper() == "ON":
green_led.on() # Allume la LED verte
lire_temperature_humidite() # Lit les données du capteur
red_led.off() # Éteint la LED rouge
print("Green LED is ON")
elif command.upper() == "OFF":
green_led.off() # Éteint la LED verte
print("Green LED is OFF")
elif command.upper() == "EXIT":
print("Exiting program...")
return False # Signal pour quitter le programme
else:
green_led.off() # Éteint la LED verte
for i in range(10): # Clignotement de la LED rouge
red_led.on()
time.sleep(0.2) # 200 ms allumée
red_led.off()
time.sleep(0.2) # 200 ms éteinte
print(f"Invalid command: {command}. Please use 'ON', 'OFF', or 'EXIT'.")
return True # Continuer le programme
def lire_temperature_humidite():
"""
Lit les données de température et d'humidité depuis le capteur DHT22.
"""
try:
capteur.measure()
temperature = capteur.temperature()
humidite = capteur.humidity()
print(f"Température : {temperature}°C, Humidité : {humidite}%")
# Vérifie si la température est critique
if temperature > 40 or temperature < 0:
afficher_alerte(f"Température critique : {temperature}°C")
else:
red_led.off() # Éteindre la LED rouge si pas d'alerte
# Sauvegarde des données
sauvegarder_donnees(temperature, humidite)
return temperature, humidite
except Exception as e:
print(f"Erreur de lecture du capteur : {e}")
return None, None
def afficher_alerte(message):
"""
Affiche une alerte (par console et LED rouge).
"""
print(f"⚠️ Alerte : {message}")
red_led.on() # Allume la LED rouge pour signaler une alerte
def sauvegarder_donnees(temperature, humidite):
"""
Simule la sauvegarde des données (affichage dans la console).
"""
try:
print(f"Sauvegarde des données : Température = {temperature}°C, Humidité = {humidite}%")
except Exception as e:
print(f"Erreur lors de la sauvegarde des données : {e}")
def input_serial(prompt=""):
"""
Lit une ligne d'entrée depuis le terminal série.
"""
print(prompt, end="")
while True:
line = input() # Utilisez `sys.stdin.read()` si nécessaire
if line:
return line.strip()
def main():
"""
Boucle principale pour contrôler les LEDs.
"""
print("Enter 'ON' to turn on Green LED, 'OFF' to turn it off, or 'EXIT' to quit.")
try:
while True:
# Lire la commande via le terminal série
command = input_serial("Enter command: ")
if not control_led_DHT(command): # Quitter si la commande est 'EXIT'
break
except Exception as e:
print(f"Error: {e}") # Gérer les exceptions
finally:
green_led.off()
red_led.off()
print("Program terminated.")
# Exécuter le programme principal
main()