from machine import ADC, Pin
import time
import dht
# 1. CAPTEURS - SENSORS
# Capteur de luminosite - GPIO34
ldr = ADC(Pin(34))
ldr.atten(ADC.ATTN_11DB)
# Capteur de temperature et humidite DHT22 - GPIO14
capteur = dht.DHT22(Pin(14))
# Bouton de presence - GPIO13
# Relache = 1, Appuye = 0
bouton = Pin(13, Pin.IN, Pin.PULL_UP)
# Production solaire simulee - Potentiometre GPIO35
solaire = ADC(Pin(35))
solaire.atten(ADC.ATTN_11DB)
# 2. LEDS
led_lampe = Pin(27, Pin.OUT)
led_vert = Pin(26, Pin.OUT)
led_rouge = Pin(25, Pin.OUT)
led_bleue = Pin(23, Pin.OUT)
# 3. CONSTANTES
SEUIL_LUMIERE = 1500
SEUIL_TEMPERATURE = 28
PUISSANCE_LAMPE = 10
PUISSANCE_CLIM = 20
SEUIL_EXCEDENT = 20
compteur = 0
# Eteindre toutes les LED au demarrage
led_lampe.off()
led_vert.off()
led_rouge.off()
led_bleue.off()
print("🏙️ SMART ENERGY MONITOR - ESP32")
# 4. BOUCLE PRINCIPALE
while True:
print()
print("====================================")
print(" 🏙️ SMART CITY - ESP32")
print("====================================")
# A. Mesure de la luminosite
lumiere = ldr.read()
sombre = lumiere < SEUIL_LUMIERE
print("☀️ Luminosite =", lumiere)
if sombre:
print("🌑 Environnement sombre")
else:
print("🌞 Environnement lumineux")
# B. Temperature et humidite
lecture_ok = True
try:
capteur.measure()
temp = capteur.temperature()
humid = capteur.humidity()
print("🌡️ Temperature =", temp, "°C")
print("💧 Humidite =", humid, "%")
except OSError:
lecture_ok = False
temp = None
humid = None
print("⚠️ Erreur : DHT22 ne repond pas")
# C. Detection de presence
presence = bouton.value() == 0
if presence:
print("👤 Quelqu'un est present !")
else:
print("❌ Aucune presence")
# D. Commande de la lampe
if sombre and presence:
led_lampe.on()
conso_lampe = PUISSANCE_LAMPE
print("💡 Lampe allumee : +10 W")
else:
led_lampe.off()
conso_lampe = 0
print("💡 Lampe eteinte : 0 W")
# E. Production solaire simulee
valeur_brute = solaire.read()
watts = round((valeur_brute / 4095) * 100, 1)
print("☀️ Production solaire =", watts, "W")
# F. Calcul de la consommation
conso_clim = 0
if lecture_ok and temp > SEUIL_TEMPERATURE:
conso_clim = PUISSANCE_CLIM
print("❄️ Climatisation active : +20 W")
elif lecture_ok:
print("🌡️ Climatisation arretee")
else:
print("⚠️ Climatisation non activee : capteur indisponible")
conso = conso_lampe + conso_clim
print("💡 Consommation lampe =", conso_lampe, "W")
print("❄️ Consommation clim =", conso_clim, "W")
print("📊 Consommation totale =", conso, "W")
# G. Equilibre energetique
if watts >= conso:
led_vert.on()
led_rouge.off()
print("✅ Equilibre energetique")
else:
led_vert.off()
led_rouge.on()
print("❌ Surconsommation !")
# H. Excedent d'energie
if watts > conso + SEUIL_EXCEDENT:
led_bleue.on()
print("🔋 Excedent d'energie")
print("🏘️ Energie disponible pour le quartier")
else:
led_bleue.off()
print("🔋 Pas d'excedent suffisant")
# I. Transmission simulee des donnees
compteur += 1
if compteur >= 5:
print("📡 Donnees transmises au gestionnaire urbain")
compteur = 0
print("====================================")
time.sleep(2)
Loading
esp32-devkit-c-v4
esp32-devkit-c-v4
Mohamed Aziz Mestiri & Azzouz Wannes