import machine
import time
# Define pin numbers
pir_pins = [14, 27, 26, 25] # PIR sensors
ldr_ambient_pin = 32 # Central LDR for ambient light detection
ldr_pole_pins = [33, 35, 34, 13] # LDR sensors for streetlights at each pole
led_pins = [5, 18, 19, 21] # LEDs representing streetlights
emergency_led_pins = [23, 22, 4, 2] # Emergency LEDs for each pole
# Initialize sensors and LEDs
pirs = [machine.Pin(pin, machine.Pin.IN) for pin in pir_pins]
ldr_ambient = machine.ADC(machine.Pin(ldr_ambient_pin))
ldr_ambient.atten(machine.ADC.ATTN_11DB) # Set to 0-3.3V range
ldr_poles = [machine.ADC(machine.Pin(pin)) for pin in ldr_pole_pins]
for ldr in ldr_poles:
ldr.atten(machine.ADC.ATTN_11DB)
leds = [machine.PWM(machine.Pin(pin)) for pin in led_pins]
for led in leds:
led.freq(1000)
emergency_leds = [machine.Pin(pin, machine.Pin.OUT) for pin in emergency_led_pins]
def read_ldr(sensor):
return sensor.read() # Read LDR value (0-4095 for ESP32)
def streetlights_on():
for led in leds:
led.duty(410) # 45% brightness
def streetlights_off():
for led in leds:
led.duty(0) # Turn off LEDs
def brighten_lights():
for led in leds:
led.duty(1023) # 100% brightness
time.sleep(5) # Keep bright for 5 sec
streetlights_on()
def monitor_poles():
for i, ldr in enumerate(ldr_poles):
ldr_value = read_ldr(ldr)
print(f"Pole {i+1} LDR Value: {ldr_value}") # Debugging line
if ldr_value > 500: # LED is ON
emergency_leds[i].value(0) # Turn off emergency light
else: # LED is OFF
emergency_leds[i].value(1) # Turn on emergency light
print(f"Emergency LED {i+1} ON - Pole {i+1} LED not detected")
while True:
ambient_light = read_ldr(ldr_ambient)
print(f"Ambient LDR Value: {ambient_light}") # Debugging line
if ambient_light < 2000: # Nighttime condition
streetlights_on()
# Check for motion at each pole
for i, pir in enumerate(pirs):
if pir.value() == 1:
print(f"Motion detected at pole {i+1}! Increasing brightness.")
brighten_lights()
monitor_poles()
else:
streetlights_off()
for emergency_led in emergency_leds:
emergency_led.value(0) # Turn off all emergency LEDs during daytime
time.sleep(1)