import RPi.GPIO as GPIO import time import pygame # Configure GPIO pins for sensors ENTER_TRIG_PIN = 23 ENTER_ECHO_PIN = 24 EXIT_TRIG_PIN = 5 EXIT_ECHO_PIN = 6 # Configure GPIO pin for relay (LED strip) RELAY_PIN = 17 # Initialize GPIO settings GPIO.setmode(GPIO.BCM) GPIO.setup(ENTER_TRIG_PIN, GPIO.OUT) GPIO.setup(ENTER_ECHO_PIN, GPIO.IN) GPIO.setup(EXIT_TRIG_PIN, GPIO.OUT) GPIO.setup(EXIT_ECHO_PIN, GPIO.IN) GPIO.setup(RELAY_PIN, GPIO.OUT) # Initialize pygame for audio playback pygame.init() pygame.mixer.init() # Set up audio file audio_file = "music.mp3" # Replace with your audio file # Function to play audio def play_audio(): pygame.mixer.music.load(audio_file) pygame.mixer.music.play() # Function to stop audio def stop_audio(): pygame.mixer.music.stop() # Function to control LED strip def control_led_strip(state): GPIO.output(RELAY_PIN, state) def measure_distance(trig_pin, echo_pin, num_readings=5): distances = [] for _ in range(num_readings): GPIO.output(trig_pin, True) time.sleep(0.00001) GPIO.output(trig_pin, False) pulse_start = time.time() pulse_end = time.time() while GPIO.input(echo_pin) == 0: pulse_start = time.time() while GPIO.input(echo_pin) == 1: pulse_end = time.time() pulse_duration = pulse_end - pulse_start distance = pulse_duration * 17150 # Speed of sound = 34300 cm/s distances.append(distance) avg_distance = sum(distances) / num_readings return avg_distance try: people_inside = 0 # Counter for people inside the room entry_cooldown = False # Flag to prevent rapid multiple entries exit_cooldown = False # Flag to prevent rapid multiple exits while True: enter_distance = measure_distance(ENTER_TRIG_PIN, ENTER_ECHO_PIN, num_readings=5) print("measuring enter distance", enter_distance) exit_distance = measure_distance(EXIT_TRIG_PIN, EXIT_ECHO_PIN, num_readings=5) print("measuring exit distance", exit_distance) # Detecting if someone is within 30 cm range for entry if enter_distance < 30 and not entry_cooldown: people_inside += 1 entry_cooldown = True time.sleep(2) # Entry cooldown period, adjust as needed # Detecting if someone is within 30 cm range for exit if exit_distance < 30 and people_inside > 0 and not exit_cooldown: people_inside -= 1 exit_cooldown = True time.sleep(2) # Exit cooldown period, adjust as needed print(people_inside) if people_inside > 0: print("people present") # play_audio() # control_led_strip(GPIO.HIGH) else: print("no one present") # stop_audio() # control_led_strip(GPIO.LOW) if not (enter_distance < 30): entry_cooldown = False if not (exit_distance < 30): exit_cooldown = False except KeyboardInterrupt: GPIO.cleanup() pygame.mixer.quit()