ماژول فاصله سنج SRF04 آلتراسونیک Ultrasonic
سنسور فاصله سنج SRF04
سنسور آلتراسونیک SRF Ultrasonic با استفاده از امواج صوتی فاصله شی را اندازه گیری میکند. نوعی تشخیص مانع توسط سنسور آلتراسونیک به واسطه یک مبدل پالسها را ارسال و دریافت میکند. تا اطلاعات مربوط به فاصله یک شی را اندازه گیری کرده و ارسال کند. سنسورهایی که در دسترس ما هستند تنها از یک مبدل جهت ارسال پالس و دریافت اکو Echo استفاده میکنند. با اندازه گیری فاصله زمانی بین دریافت و ارسال پالس آلتراسونیک فاصله تا شی مورد نظر را اندازه گیری میکند.
از سنسورهای آلتراسونیک در طراحی رباتها جهت تشخیص مجاورت با شی، تشخیص سطح مانند سطح آب، تشخیص موقعیت و تشخیص فاصله میتوان استفاده کرد. جهت اندازه گیری فاصله سنسور، از فرمول خاصی استفاده میکند که سرعت صوت در رفت و برگشت را محاسبه کرده و با تبدیل متر بر ثانیه به واحد میکرو در سانتی متر، فاصله را نمایش میهد.
ماژول SRF04 یک ماژول سنجش فاصله الکترونیکی است که برای اندازه گیری فاصله از سطح به کار میرود. این ماژول از تکنولوژی فرستنده و گیرنده الکترونیکی استفاده میکند تا امواج صوتی را از مبدا تولید کند و با دریافت بازتابی از سطح، فاصله را محاسبه کند. ماژول SRF04 به عنوان یک سنسور فاصله استفاده میشود و میتواند در رباتیک، اتوماسیون خانگی و سایر کاربردهایی که نیاز به اندازه گیری فاصله دارند، مورد استفاده قرار گیرد.
پایه های pinout ماژول التراسونیک srf04
ماژول آلتراسونیک SRF04 از پنج پایه تشکیل شده است که شمارهبندی پایههای آن به صورت زیر است.
1- Vcc: ولتاژ تغذیه، باید به یک منبع تغذیه DC متناسب با ولتاژ مورد نیاز ماژول (معمولاً ۵ ولت) متصل شود.
2- Trig: پایهی تریگر برای فعالسازی فرستنده التراسونیک است.
3- Echo: پایهی اکو برای دریافت سیگنال بازگشتی از گیرنده التراسونیک است.
4- NC: پایهی اتصال شده به هیچیز، بهطور کلی از استفادهای برخوردار نیست.
5- GND: مرجع منبع تغذیه و مرجع سیگنالهای الکتریکی، باید به مرجع منبع تغذیه متصل شود.
توضیحات بیشتر در خصوص پایههای ماژول SRF04
- پایه Trig را باید با یک سیگنال پالسی بهصورت کوتاهمدت فعال کرد تا فرستنده آلتراسونیک شروع به فرستادن سیگنال التراسونیک کند.
- پایه Echo هنگامی که سیگنال بازگشتی به گیرنده آلتراسونیک برسد، با ارسال یک سیگنال بازگشتی به مقدار ولتاژ بازگشتی متناسب با فاصله بین ماژول و مانع، پاسخ میدهد.
- پایه NC بیاستفاده است و بهطور کلی به هیچ چیزی وصل نمیشود.
- پایه GND مرجع منبع تغذیه و مرجع سیگنالهای الکتریکی است و باید به مرجع منبع تغذیه متصل شود.
راه اندازی ماژول آلتراسونیک SRF04 با آردوینو
برای راهاندازی ماژول SRF04 به صورت ساده، میتوانید از یک میکروکنترلر مثل آردوینو استفاده کنید. به طور کلی، برای راهاندازی ماژول SRF04، ابتدا باید ماژول را به تغذیه وصل کرده و سپس پایه تریگر (Trig) را به یک پین خروجی میکروکنترلر متصل کنید. سپس پایه اکو (Echo) را به یک پین ورودی میکروکنترلر متصل کنید.
سپس برنامهای برای میکروکنترلر خود بنویسید که پایه تریگر را فعال کند (یعنی آن را به حالت HIGH ببرد)، بعد از کمی تاخیر، پایه تریگر را غیرفعال کند (یعنی آن را به حالت LOW ببرد) و سپس منتظر شروع ارسال سیگنال اکو از ماژول شود. وقتی سیگنال اکو از ماژول دریافت شد، میتوانید زمان گذرشده بین ارسال سیگنال توسط تریگر و دریافت سیگنال توسط اکو را با توجه به سرعت صوت و مسافت محاسبه کنید. در ادامه یک کد نمونه برای راهاندازی ماژول SRF04 با استفاده از آردوینو آمده است.
#define trigPin 3
#define echoPin 2
void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;
Serial.print(distance);
Serial.println(" cm");
delay(500);
}
در این کد، پایه تریگر به پین 3 و پایه اکو به پین 2 متصل شده است. در تابع loop ابتدا پایه تریگر را فعال میکنیم و بعد از 10 میکروثانیه، آن را غیرفعال میکنیم.
راه اندازی SRF04 با برد STM32F103C8T6
چنانچه برد آردوینو ندارید و یا میخواهید از بردهای دیگری برای راه اندازی استفاده کنید. میتوانید برای راه اندازی ماژول SRF04 بدون استفاده از برد آردوینو از میکروکنترلر STM32F103C8T6 و کد نویسی به زبان C استفاده کنید. ابتدا باید پایه های ماژول SRF04 را به میکروکنترلر وصل کنید. پایه های Trigger و Echo به ترتیب به پایه های PB0 و PB1 میکروکنترلر متصل میشوند. سپس کد زیر را در نرم افزار Keil C نوشته و کامپایل کنید.
#include "stm32f10x.h"
#define TRIG_PIN GPIO_Pin_0
#define ECHO_PIN GPIO_Pin_1
#define TRIG_PORT GPIOB
#define ECHO_PORT GPIOB
void delay_us(uint32_t us)
{
SysTick->LOAD = 9*us;
SysTick->VAL = 0;
SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |
SysTick_CTRL_ENABLE_Msk;
while (!(SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk));
}
void delay_ms(uint32_t ms)
{
while (ms--)
{
delay_us(1000);
}
}
void init(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = TRIG_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(TRIG_PORT, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = ECHO_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(ECHO_PORT, &GPIO_InitStructure);
}
int main(void)
{
uint32_t distance = 0;
init();
while(1)
{
GPIO_SetBits(TRIG_PORT, TRIG_PIN);
delay_us(10);
GPIO_ResetBits(TRIG_PORT, TRIG_PIN);
while(GPIO_ReadInputDataBit(ECHO_PORT, ECHO_PIN) == RESET);
uint32_t start_time = SysTick->VAL;
while(GPIO_ReadInputDataBit(ECHO_PORT, ECHO_PIN) == SET);
uint32_t end_time = SysTick->VAL;
uint32_t elapsed_time = start_time - end_time;
distance = elapsed_time * 0.017; // حساب کردن فاصله با توجه به زمان سپری شده
delay_ms(500); // تاخیر برای انجام
راه اندازی ماژول srf04 بدون استفاده از میکروکنترلر
ماژول SRF04 برای راهاندازی به چندین پین نیاز دارد که برای استفاده بدون میکروکنترلر، میتوان از یک کنترلر منطقی مانند 74HC595 استفاده کرد. برای این کار، ابتدا سیگنال تریگر (Trigger) به یکی از ورودیهای کنترلر منطقی وصل شده و سپس با اعمال سیگنال کنترلی مناسب به ورودیهای کنترلر منطقی، میتوان خروجی ECHO را اندازهگیری کرد.
برای این کار، ابتدا باید به یک پین کنترلر منطقی مانند 74HC595 سیگنال تریگر (Trigger) متصل شود. پس از آن، باید با اعمال یک سیگنال فعال کنترلی مناسب به پین تریگر، سیگنال تریگر فعال شود. سپس باید اندازهگیری زمانی که سیگنال ECHO فعال است را با استفاده از یک تایمر اندازهگیری کرده و با توجه به این زمان و فرمول محاسبه فاصله، فاصله مورد نظر را محاسبه کرد. به طور کلی، استفاده از ماژول SRF04 بدون استفاده از میکروکنترلر یک کار دشوار و زمانبر است و به دلیل پیچیدگی بالای این روش، استفاده از میکروکنترلر بهصورت گستردهتر توصیه میشود.
راه اندازی ماژول srf04 با میکروپایتون و برد esp32
برای راهاندازی ماژول srf04 با میکروپایتون و برد esp32، ابتدا باید پایههای ماژول srf04 را به دقت به پایههای برد esp32 وصل کنید. به طور معمول، پایه VCC ماژول srf04 به پایه 5 ولت برد esp32، پایه GND به پایه GND برد esp32 و پایه Trig به یکی از پایههای GPIO برد esp32 که در کد زیر پایه 26 به کار رفته است. پایه Echo به پایهی 27 برد esp32 متصل میشود. سپس باید کتابخانههای machine و time را در میکروپایتون برای برد esp32 وارد کنید و کد زیر را اجرا کنید.
import machine
import time
trigger = machine.Pin(26, machine.Pin.OUT)
echo = machine.Pin(27, machine.Pin.IN)
def read_distance():
# فعال کردن پالس برای فرستادن سیگنال تریگر به ماژول srf04
trigger.value(0)
time.sleep_us(2)
trigger.value(1)
time.sleep_us(10)
trigger.value(0)
# محاسبه زمانی که سیگنال صوتی به ماژول فرستاده شده و توسط ماژول دریافت شده است
while echo.value() == 0:
pass
t1 = time.ticks_us()
while echo.value() == 1:
pass
t2 = time.ticks_us()
# محاسبه فاصله بر اساس زمانی که سیگنال صوتی طی کرده است
duration = t2 - t1
distance = duration * 0.034 / 2
return distance
while True:
distance = read_distance()
print("Distance: ", distance, "cm")
time.sleep(1)
این کد پالس فرستادن تریگر به ماژول srf04 را کنترل میکند و سپس زمانی که سیگنال فراصوت توسط ماژول دریافت شده است و مدت زمان طی شده بین فرستادن و دریافت سیگنال را اندازهگیری میکند. با استفاده از فرمول distance = duration * 0.034 / 2، فاصله را محاسبه کرده و نمایش میدهد.
سه روش راه اندازی SRF04 با میکروپایتون و برد رزبری پای پیکو
برای راه اندازی ماژول SRF04 با میکروپایتون و برد رزبری پیکو، ابتدا باید این ماژول را به برد متصل کنید. برای این کار، به پایههای مربوطه ماژول (VCC، GND، Trig و Echo)، سیمهای خود را متصل کنید. سپس، به کمک کد زیر، میتوانید ارتفاع فاصله مورد نظر را اندازهگیری کنید. در این کد، پایههای ۱۶ و ۱۸ برد را به پایههای Trig و Echo ماژول متصل کردهایم. پس از اجرای کد، ارتفاع فاصله اندازهگیری شده توسط ماژول SRF04 به واحد سانتیمتر در خروجی چاپ خواهد شد. سپس برای جلوگیری از مشکلات بعدی، باید پایههای ماژول از برد خارج شود.
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
GPIO.setup(16, GPIO.OUT) # Set trigger pin as output
GPIO.setup(18, GPIO.IN) # Set echo pin as input
GPIO.output(16, False)
time.sleep(2)
GPIO.output(16, True)
time.sleep(0.00001)
GPIO.output(16, False)
while GPIO.input(18) == 0:
pulse_start = time.time()
while GPIO.input(18) == 1:
pulse_end = time.time()
pulse_duration = pulse_end - pulse_start
distance = pulse_duration * 17150
distance = round(distance, 2)
print("Distance:",distance,"cm")
GPIO.cleanup()
در روش دوم برای راه اندازی ماژول SRF04 با میکروپایتون و رزبری پیکو در ویندوز میتوانید از یک مبدل USB به سریال استفاده کنید. این مبدل به کامپیوتر شما متصل می شود و پورت سریال را برای شما فراهم می کند. پس از متصل کردن ماژول SRF04 به برد رزبری پیکو و همچنین متصل کردن مبدل USB به سریال به کامپیوتر، باید در میکروپایتون از کتابخانه pyserial استفاده کنید. این کتابخانه به شما امکان ارتباط با پورت سریال را می دهد. در ابتدا باید نام پورت سریال را در ویندوز پیدا کنید. برای این کار می توانید به منوی دستگاه ها و پرینترها بروید و دستگاه را انتخاب کنید. سپس روی پروتکل های کاربردی در بالای صفحه کلیک کنید و شماره پورت را پیدا کنید. بعد از پیدا کردن شماره پورت، در میکروپایتون باید کتابخانه pyserial را نصب کنید. برای این کار می توانید از دستور زیر استفاده کنید: pip install pyserial حالا با استفاده از کد زیر می توانید به ماژول SRF04 ارتباط برقرار کنید و فاصله را اندازه گیری کنید:
import serial
import time
ser = serial.Serial('COM3', 9600) # جای COM3 شماره پورت سریال خود را قرار دهید
while True:
# فرستادن سیگنال شروع به ماژول SRF04
ser.write(bytes([0x55]))
time.sleep(0.1)
# خواندن پاسخ از ماژول SRF04
data = ser.read(2)
distance = (data[0] << 8) + data[1]
print(f"Distance: {distance} cm")
time.sleep(1)
در این کد، ابتدا کتابخانه serial را وارد می کنیم و یک اتصال سریال با استفاده از پورت سریال برقرار میکنیم.
در روش سوم راه اندازی srf با میکروپایتون از کامپایلر thonnyide استفاده میکنیم. مراحل زیر را دنبال کنید.
1- نصب برنامه THONNYide روی ویندوز خود. برای این کار می توانید به سایت رسمی THONNYide مراجعه کرده و آخرین نسخه از آن را دانلود کنید.
2- با استفاده از کابل USB، رزبری پیکو خود را به کامپیوتر وصل کنید.
3- در برنامه THONNYide، یک پروژه جدید ایجاد کنید و یک فایل جدید با پسوند ".py" بسازید.
4- برای استفاده از پایههای GPIO رزبری پیکو، کتابخانهی GPIO را وارد کنید: import RPi.GPIO as GPIO
5- تنظیمات پایههای GPIO را انجام دهید. به عنوان مثال، برای تعیین پایهی Trigger به پایهی ۷ و پایهی Echo به پایهی ۱۱ رزبری پیکو، کد زیر را وارد کنید:
GPIO.setmode(GPIO.BOARD)
TRIG = 7
ECHO = 11
GPIO.setup(TRIG, GPIO.OUT)
GPIO.setup(ECHO, GPIO.IN)
6- سپس، یک حلقه برای اندازهگیری فاصله با استفاده از ماژول SRF04 بسازید. در این حلقه، ابتدا پایهی Trigger را به حالت HIGH تنظیم کنید تا ماژول آمادهی ارسال فرستادن پالس باشد. سپس پس از ارسال پالس، پایهی Trigger را به حالت LOW برگردانید. در ادامه، با استفاده از پایهی Echo، زمانی که سیگنال بازگشتی از ماژول دریافت میشود را اندازهگیری کنید.
while True:
GPIO.output(TRIG, True)
time.sleep(0.00001)
GPIO.output(TRIG, False)
while GPIO.input(ECHO)==0:
pulse_start_time = time.time()
while GPIO.input(ECHO)==1:
pulse_end_time = time.time()
pulse_duration = pulse_end_time - pulse_start_time
چند نمونه آموزش ماژول آلتراسونیک SRF04 در سایت دیجی اسپارک
آموزش اول: ساخت مایع ریز کرونا اتوماتیک با پمپ و آردوینو Arduino
با شیوع اپیدمی کرونا در سراسر دنیا، ساخت مایع ریز کرونا اتوماتیک ایدهای بوده که فراگیر شده است. تقریبا در تمامی مراکز از آن استفاده میشود. به صورت کلی برای پاشش محلول ضدعفونی بدون تماس دست با سطحی خاص، انتخاب مناسبی است. سنسورهای مختلفی یرای این منظور مورد استفاده قرار گرفتهاند هر کدام نقاط قوت و ضعف خاصی دارند. از جمله سنسورهای پرکاربرد و مصرفی در ساخت مایع ریز کرونا، مدل آلتراسونیک است. برای این منظور ساخت مایع ریز با استفاده از بردهای میکروکنترلر مانند آردوینو Arduino به راحتی قابل اجرا است. در این آموزش توسط سنسور فاصله سنج آلتراسونیک SRF به رله فرمان قطع و وصل میدهیم.
آموزش دوم: ساخت مدار تشخیص مانع چهار وجهی با سنسور آلتراسونیک SRF
سنسور فاصله سنج SRF با استفاده از امواج آلتراسونیک فاصله شی تا سنسور را تشخیص داده و طبق فرمول سرعت رفت و برگشت صوت محاسبه شده و دیتا ارسال میشود. توسط این سنسور میتوانید ۴ مکان مختلف از یک ربات را مدیریت کرده و تشخیص مانع را انجام داد. در این آموزش روش ساخت مدار تشخیص مانع چهار وجهی با استفاده از ۴ عدد سنسور آلتراسونیک اجرا میشود. به عبارتی شبیه سازی برای استفاده در چهار وجه خودرو در حال حرکت است.
آموزش سوم: راه اندازی فاصله سنج SRF و نمایشگر LCD کاراکتری با آردوینو
سنسور فاصله سنج SRF با استفاده از امواج آلتراسونیک فاصله شی تا سنسور را تشخیص داده و طبق فرمول سرعت رفت و برگشت صوت محاسبه شده و دیتا ارسال میشود. در این آموزش توسط میکروکنترلر آردوینو و سنسور فاصله سنج و فاصله را اندازه گیری کرده و بر روی نمایشگر کاراکتری LCD نمایش میدهیم.
آموزش چهارم: تشخیص فاصله با سنسور رادار SRF توسط رزبری پای و نرم افزار Node-RED
برای راه اندازی یک سنسور آلتراسونیک در زبان C++ بایستی در ابتدا توسط فرمول سرعت صوت را اندازه گیری کرده و با تبدیل واحدها پارامترهای مورد نیاز را تحلیل نماییم. طبیعتا جهت راحتی کار کتابخانه های مناسبی برای آن ها در نظر گرفته شده است. در نرم افزار Node-RED روش اندازه گیری پارامترهای سنسور بسیار ساده شده است.
مشخصات
- کاربری
- مناسب برای تست و آموزش
- نوع ماژول
- فاصله سنج - آلتراسونیک
- تعداد قطعات
- 31 عدد
- ابعاد فیبر
- 2 * 4.5 * 1.5 سانتی متر
- سطح تجربه مورد نیاز
- پیشرفته
- ولتاژ مورد نياز
- 5 ولت DC
- فیبر مدار چاپی
- فایبرگلاس دو رو متالیزه
- جریان
- 2mA
- چاپ مس
- دارای چاپ آبی
- تعداد پایه ها
- 4 پایه
- ترتیب پایه ها
- طبق چاپ راهنما
- کشور سازنده
- چین
- محدوده دید
- 15 درجه
- پروتکل ارتباطی
- I/O
- دقت اندازه گیری
- 1cm
- محدوده اندازه گیری
- 2~450cm
- وضعیت لوازم جانبی
- ندارد
- سایر قابلیتها
- اندازه گیری فاصله
- کد تجاری ماژول و برد
- SRF04
امکان راه اندازی چند سنسور DHT با ESP8266 با استفاده از MicroPython وجود دارد. سنسورهای DHT با پروتکل دیجیتال و از طریق پایههای GPIO قابل اتصال به میکروکنترلرها هستند.
برای ساخت یک سیستم کنترل دما با برد میکروکنترلر ESP32، به موارد زیر نیاز دارید:
یک برد میکروکنترلر ESP32
یک سنسور دما مثل DHT DS18B20
یک المان سرد کننده
با استفاده از کتابخانه DHT.h، میتوانید از سنسور دما برای خواندن دمای محیط استفاده کنید. سپس، میتوانید از این دما برای کنترل المان گرمایشی یا سرمایشی استفاده کنید.
در خصوص برنامه نویسی از کتابخانه DHT و در صورت نیاز کتابخانه وای فای برای ارسال دادهها به پلتفرم IoT باید استفاده کنید.