from machine import Pin, time_pulse_us
from time import sleep_us, sleep
# Define pins
pir_pin = Pin(27, Pin.IN)
trig_pin = Pin(5, Pin.OUT)
echo_pin = Pin(18, Pin.IN)
# Initialize variables
visitor_count = 0
prev_distance = 0
motion_detected = False
def measure_distance():
"""Measure distance using ultrasonic sensor"""
trig_pin.off()
sleep_us(2)
trig_pin.on()
sleep_us(10)
trig_pin.off()
duration = time_pulse_us(echo_pin, 1, 30000) # wait for echo, timeout=30ms
distance = (duration / 2) / 29.1 # convert to cm
return distance
print("Visitor Counter System Started...")
while True:
motion = pir_pin.value()
distance = measure_distance()
if motion:
print("Motion Detected! Checking distance...")
sleep(0.2)
new_distance = measure_distance()
# If distance changes significantly, assume a person passed
if abs(new_distance - prev_distance) > 15: # threshold in cm
visitor_count += 1
print("Person Detected! Total Visitors:", visitor_count)
sleep(2) # wait to avoid double counting
prev_distance = new_distance
sleep(0.5)