فهرست مطالب
سنسور SR04
سنسور فاصله سنج آلتراسونیک HC-SR04 برای اندازه گیری مسافت استفاده می شود. محدوده فرکانس شنوایی انسان ۲۰ هرتز تا ۲۰ هزار هرتز است. محدوده فرکانسی امواج مافوق صوت ۴۰ کیلو هرتز تا چندین مگا هرتز میباشد.امواج مافوق، کاربردهای فراوانی از جمله در لیزر، تخلیه الکتریکی برای بهبود خواص سطحی و افزایش نرخ باربرداری، سنجش فاصله، عمق مخزن، شستشوی دقیق ظروف آزمایشگاهی، تعیین فشار خون بیمار، همگن کردن مواد مذاب، جوشکاری مواد غیر هم جنس، ریخته گری، تراشکاری، فرزکاری، سوراخکاری و غیره دارد. سنسور HC-SR04 برای اندازه گیری فواصل بدون وجود مانع 2cm تا 400cm استفاده می شود. این ماژول دارای فرستنده و گیرنده اولتراسونیک و یک مدار کنترل است. نحوه عملکرد ماژول به این صورت است که میزان اختلاف زمان ارسال و دریافت سیگنال محاسبه می شود و به راحتی از روی آن مسافت قابل محاسبه خواهد بود.
تعریف پایه های سنسور SR04
- Vcc توان ورودی، 5V
- TRIG ورودی Trigger
- ECHO خروجی Echo
- GND زمین یا Ground
نحوه اتصال به رزبری پای
- اتصال پین مثبت SR04 به تغذیه 5 ولت برد رزبری پای (سیم قرمز)
- اتصال پین منفی سنسور به پین GND برد رزبری پای (سیم مشکی)
- اتصال پین TRIG به GPIO4(PIN7) مانند تصویر زیر
- اتصال پین ECHO به PIN11 مانند تصویر زیر
توجه:
استفاده از مقسم مقاومتی برای عدم آسیب رسانی به پایههای برد رزبری پای الزامیست.
نحوه اتصال I2CLCD
کدنویسی
ابتدا با دستور زیر یک اسکریپت پایتون ایجاد می کنیم:
Sudo nano sr04.py
برنامه کامل پایتون به شرح زیر می باشد:
import I2C_LCD_driver
import RPi.GPIO as GPIO
import time
try:
mylcd = I2C_LCD_driver.lcd()
GPIO.setmode(GPIO.BOARD)
mylcd.lcd_display_string(" Redronic",1) #Give a intro message
time.sleep(2) #wait for 2 secs
PIN_TRIGGER = 7
PIN_ECHO = 11
GPIO.setup(PIN_TRIGGER, GPIO.OUT)
GPIO.setup(PIN_ECHO, GPIO.IN)
while 1:
GPIO.output(PIN_TRIGGER, GPIO.LOW)
print "Waiting for sensor to settle"
time.sleep(2)
print "Calculating distance"
GPIO.output(PIN_TRIGGER, GPIO.HIGH)
time.sleep(0.00001)
GPIO.output(PIN_TRIGGER, GPIO.LOW)
while GPIO.input(PIN_ECHO)==0:
pulse_start_time = time.time()
while GPIO.input(PIN_ECHO)==1:
pulse_end_time = time.time()
pulse_duration = pulse_end_time - pulse_start_time
distance = round(pulse_duration * 17150, 2)
print "Distance:",distance,"cm"
mylcd.lcd_display_string("Dis = %.1f cm" % distance, 2)
time.sleep(2)
mylcd.lcd_display_string(" ",2) #Give a intro message
#mylcd.lcd_clear()
finally:
GPIO.cleanup()
در برنامه بالا ابتدا دو کتابخانه RPI.GPIO و TIME را به برنامه اضافه کرده ایم تا بتوانیم به واسطه انها از توابع کنترلی زمان و توابع دسترسی و تنظیمات پایه های برد رزبری پای استفاده کنیم.
در مرحله بعد پین های TRIG و ECHO و حالت انها رو مشخص کرده و پس از ان در یک حلقه بی نهایت مقادیر زمان رفت و برگشت امواج را خوانده و فاصله را بدست می اوریم.
در پایان هم مقادیر بدست امده را با استفاده از کتابخانه I2C_LCD_driver بر روی LCD نمایش می دهیم.
و با فشار دادن کلید های CTRL + X و سپس Y (در انتها زدن کلید Enter) اقدام به ذخیره اسکریپت نوشته شده می کنیم.
سلام و عرض ادب و ممنون بابت راهنمایی هاتون . برای تقسیم مقاومتی از مقاوت 1 و 3 کیلو اهم استفاده شده؟