سنسور HC-SR04 با ارسال امواج فراصوت و اندازهگیری زمان بازگشت پژواک، فاصلهٔ یک جسم را از ۲ سانتیمتر تا حدود ۴ متر تشخیص میدهد. این سنسور در پروژههای رباتیک (تشخیص مانع)، پارکینگ هوشمند و اندازهگیری سطح مایعات بسیار پرکاربرد است.
نحوهٔ کارکرد سنسور
پایهٔ TRIG یک پالس کوتاه ۱۰ میکروثانیهای دریافت میکند تا سنسور موج فراصوت بفرستد؛ سپس پایهٔ ECHO به مدت زمانی که موج طول کشیده تا برگردد، در وضعیت HIGH میماند. با دانستن سرعت صوت، از این زمان میتوان فاصله را محاسبه کرد.
from machine import Pin, time_pulse_us
from time import sleep, sleep_us
trig = Pin(5, Pin.OUT)
echo = Pin(18, Pin.IN)
def read_distance_cm():
trig.value(0)
sleep_us(2)
trig.value(1)
sleep_us(10)
trig.value(0)
duration = time_pulse_us(echo, 1, 30000) # حداکثر ۳۰ میلیثانیه انتظار
if duration < 0:
return None # تایماوت / پاسخی دریافت نشد
return (duration * 0.0343) / 2
while True:
d = read_distance_cm()
if d is not None:
print("فاصله: {:.1f} سانتیمتر".format(d))
else:
print("پاسخی دریافت نشد")
sleep(0.5)پایهٔ ECHO این سنسور معمولاً ۵ ولت خروجی میدهد که برای GPIO سهولتی ESP32 خطرناک است؛ حتماً از یک تقسیمکنندهٔ ولتاژ (دو مقاومت) استفاده کنید یا از نسخهٔ ۳٫۳ ولتی این سنسور (مثل RCWL-1601) بهره ببرید.
کارگاه عملی: وقتی فاصله کمتر از ۱۰ سانتیمتر شد، یک LED هشدار را روشن کنید — پایهٔ اول یک سیستم سادهٔ تشخیص مانع برای ربات.