from machine import Pin, ADC
import dht
import time
# Initialisation des composants
ldr = ADC(28) # Capteur de luminosité (LDR) sur GP28
led_light = Pin(14, Pin.OUT) # LED pour la lumière sur GP14
fan = Pin(17, Pin.OUT) # LED pour simuler le ventilateur sur GP13
button = Pin(12, Pin.IN, Pin.PULL_UP) # Bouton poussoir sur GP12
dht_sensor = dht.DHT22(Pin(15)) # Capteur DHT22 pour température et humidité sur GP15
auto_mode = True # Mode automatique par défaut
# Seuils
SEUIL_LUMINOSITE = 2000 # Seuil de luminosité pour allumer la lumière
SEUIL_TEMPERATURE = 28 # Seuil de température pour activer le ventilateur
def read_luminosity():
return ldr.read_u16() # Lecture de la luminosité (valeur analogique)
def display_status(luminosity, temperature, humidity, light_on, fan_on):
# Afficher l'état dans la console (simuler l'affichage de l'écran)
print("=====================================")
print("Maison Intelligente")
print(f"Luminosité: {luminosity}")
print(f"Température: {temperature}°C")
print(f"Humidité: {humidity}%")
print(f"Lumière: {'ON' if light_on else 'OFF'}")
print(f"Ventilateur: {'ON' if fan_on else 'OFF'}")
print("=====================================")
while True:
luminosity = read_luminosity() # Lecture de la luminosité
dht_sensor.measure() # Lecture de la température et humidité
temperature = dht_sensor.temperature()
humidity = dht_sensor.humidity()
light_on = False
fan_on = False
# Basculer entre mode automatique et manuel si bouton est pressé
if button.value() == 0:
auto_mode = not auto_mode # Changer de mode
time.sleep(0.5) # Anti-rebond du bouton
if auto_mode:
# Contrôle de la lumière (LED)
if luminosity > SEUIL_LUMINOSITE:
led_light.on() # Allumer la lumière si la luminosité est faible
light_on = True
else:
led_light.off() # Éteindre la lumière si la luminosité est suffisante
# Contrôle du ventilateur (LED)
if temperature > SEUIL_TEMPERATURE:
fan.on() # Allumer le ventilateur (simulé par la LED)
fan_on = True
else:
fan.off() # Éteindre le ventilateur si la température est en dessous du seuil
else:
# En mode manuel, les deux LED sont éteintes
led_light.off()
fan.off()
# Afficher l'état actuel dans la console
display_status(luminosity, temperature, humidity, light_on, fan_on)
time.sleep(0.5) # Pause avant la prochaine itération