from machine import Pin, ADC, PWM
import time
# -------------------------------
# Hardware Configuration
# -------------------------------
# Ultrasonic Sensor (HC-SR04)
trigger = Pin(16, Pin.OUT)
echo = Pin(17, Pin.IN)
# LDR (ADC)
ldr = ADC(26) # GP26 = ADC0
# LEDs
red_led = Pin(14, Pin.OUT)
green_led = Pin(15, Pin.OUT)
# Buzzer (PWM for sound)
buzzer = PWM(Pin(13))
buzzer.freq(1000) # 1kHz audible tone
# -------------------------------
# Thresholds
# -------------------------------
INTRUDER_DISTANCE = 50 # cm
DARK_THRESHOLD = 30000 # LDR ADC value (tune if needed)
# -------------------------------
# Ultrasonic Distance Function
# -------------------------------
def measure_distance():
trigger.low()
time.sleep_us(2)
trigger.high()
time.sleep_us(10)
trigger.low()
while echo.value() == 0:
start = time.ticks_us()
while echo.value() == 1:
end = time.ticks_us()
duration = time.ticks_diff(end, start)
distance = (duration * 0.0343) / 2
return distance
print("Security System Initialized")
print("---------------------------")
# -------------------------------
# Main Loop
# -------------------------------
while True:
distance = measure_distance()
light_value = ldr.read_u16()
print(f"Distance: {distance:.1f} cm | LDR: {light_value}")
# 🚨 PRIORITY 1: INTRUDER ALERT
if distance < INTRUDER_DISTANCE:
print("🚨 INTRUDER DETECTED!")
red_led.value(1)
green_led.value(0)
buzzer.duty_u16(30000) # Turn buzzer ON
# 🌗 PRIORITY 2: ENVIRONMENT STATUS
else:
red_led.value(0)
buzzer.duty_u16(0) # Turn buzzer OFF
if light_value > DARK_THRESHOLD:
print("🌙 Night Watch Mode")
green_led.toggle()
time.sleep(0.5)
else:
print("☀️ Day Safe Mode")
green_led.value(1)
time.sleep(0.5)