راه اندازی ماژول التراسونیک srf-05 با آردوینو

با سلام خدمت عزیزان ، امروز  با هم به آموزش راه اندازی ماژول التراسونیک srf-05 با آردوینو می پردازیم شما با این آزمایش توانایی این را خواهید داشت تا فاصله اجسام را نسبت‌به ماژول مورد نظر را گرفته و فاصله آن را بر روی lcd  نمایش دهید

در ابتدای کار با هم با قطعات مورد استفاده داخل آموزش راه اندازی ماژول التراسونیک srf-05 آشنا میشیم

وسایل مورد نیاز آموزش راه اندازی ماژول التراسونیک srf-05 با آردوینو

[icon name=”layer-group” style=”solid” class=”” unprefixed_class=””]   برد آردوینو

[icon name=”layer-group” style=”solid” class=”” unprefixed_class=””] LCD  کاراکتری 2*16

[icon name=”layer-group” style=”solid” class=”” unprefixed_class=””]  ماژول التراسونیک SRF_05

[icon name=”layer-group” style=”solid” class=”” unprefixed_class=””]   پتانسیومتر

[icon name=”layer-group” style=”solid” class=”” unprefixed_class=””] تعدادی سیم

 

نمای LCD:

 راه اندازی کی پد و نمایشگر توسط آردوینو  

ال سی دی 2*16

نمای التراسونیک:

التراسونیکsrf-05

SRF05 یک فاصله سنج التراسونیک بوده و با استفاده از این ماژول قادر خواهید بود فاصله دقیق یک مانع را مشخص نمایید. این ماژول به نوعی مدل تکامل یافته SRF04 است. در این ماژول انعطاف طراحی بالا رفته و برد مفید فاصله سنجی ارتقاء یافته است.

SRF05 با SRF04 کاملا تطابق داشته و برد آن از 3 متر به 4 متر افزایش یافته است. برای صرفه جویی در پایه های I/O ی میکروکنترلر یا هر سیستم میزبان دیگر امکان جدیدی در SRF05 تعریف شده است. در این حالت میتوانید از طریق یک پایه پالس تریگر را ارسال و سیگنال اکو را دریافت کنید.

راه اندازی ماژول التراسونیک srf-05 با آردوینو

نمای پتانسیومتر:

پتانسیومتر

مقاومت متغییر یا پتاسیومتر در واقع از 2 مقاومت متغییر تشکیل شده استو دارای 3پایه است، و پایه وسط آن مقاومت را کم و زیاد می کند. این قطعه وظیفه محدود كردن جريان و ايجاد ولتاژ را دارد و واحد سنجش  این قطعه همانند مقاومت اهم و آن را با علامت Ω نمایش می‌دهند. دراثرکم و زیاد کردن مقاومت در پتاسیومتر،سروو ما در جهت عقربه ساعت و بالعکس چرخش و تغییر حالت می دهد.

به دلخواه از سمت چپ یا راست یک کدام را (VCC)و یکی دیگر را (GND ) و پایه وسط پایه متغییر ولتاژ است.

نمای برد آردوینو:

آردوینو uno

شکل اتصال پایه ها:

اتصالات

جدول اتصالات:

آردوینو+التراسونیک

[su_table responsive=”yes”]

آردوینو التراسونیک
+5V VCC
GND GND
پایه۱۳ TRIG
پایه۱۰ ECHO
نیازی نداریم

out

[/su_table]

آردوینو+lcd

[su_table responsive=”yes”]

آردوینو Lcd
پای وسط پتانسیومتر vo
پایه9 E
پایه10 rs
پایه5 D4
پایه4 D5
پایه3 D6
پایه2 D7
GND VSS
5V VDD
GND RW
DB0…DB3 NO CONECT
5V BACK LIGHT ANODELCD(A)
GND BACK LIGHT CATOD LCD(K)

[/su_table]

 

 

حالا باهام به سراغ کدها میریم

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

#include <LiquidCrystal.h>

در این دستور ما کتابخانه LCD  را فراخوانی کرده ایم

مانند کد زیر:

#include <LiquidCrystal.h>

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

LiquidCrystal lcd(9,10 , 5, 4, 3, 2);

در این دستور ما پایه های LCD‌را که  به آردوینو متصل کردیم را  معرفی می کنیم

مانند کد زیر:

LiquidCrystal LCD(10, 9, 5, 4, 3, 2);

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

int trigPin=13;

در این دستور پایه التراسونیک را که به پایه آردوینو متصل کرده ایم معرفی می نماییم

مانند کد زیر:

int trigPin=13;

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

int myCounter=0;

در این دستور ما متغییر تعریف کرده ایم و آن را مساوی 0 قرار داده ایم

مانند کد زیر:

int myCounter=0;

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

float pingTime;

در این دستور ما دو متغییر را از نوع FLOAT  معرفی کرده ایم که این متغییر برای زمان رفت و برگشت پینگ سنسور است

مانند کد زیر:

float pingTime;

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

pinMode(trigPin, OUTPUT);

در این دستور پایه trig pin التراسونیک را به عنوان خروجی معرفی کرده ایم

مانند کد زیر:

pinMode(trigPin, OUTPUT);

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

pinMode(echoPin, INPUT);

 در این دستور پایه echopin را بع عنوان ورودی معرفی کرده ایم

مانند کد زیر:

pinMode(echoPin, INPUT);

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

LCD.begin(16,2);

در این دستور ال سی دی ۱۶ستونی را به آردوینو معرفی می نماییم

مانند کد زیر:

LCD.begin(16,2);

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

LCD.setCursor(0,0);

در این دستور مکان نمای LCD را در گوشه بالا سمت چپ ، ستون 0 ، ردیف 0 تنظیم می کنیم

مانند کد زیر:

LCD.setCursor(0,0);

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

LCD.print(“Target Distance:”);

در این دستور کلمه مورد نظر برای چاپ بر روی ال سی دی را معرفی کرده ایم

مانند کد زیر:

LCD.print("Target Distance:");  

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

digitalWrite(trigPin, LOW);

خواندن پایه الترا سونیک  در کم ترین حالت

مانند کد زیر:

 
  digitalWrite(trigPin, LOW);

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

delayMicroseconds(2000);

زمان تاخیر را در این دستور تعریف کرده ایم

مانند کد زیر:

 delayMicroseconds(2000);

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

digitalWrite(trigPin, HIGH);

خواندن پایه الترا سونیک  در بیش ترین حالت

[icon name=”circle-o” class=”” unprefixed_class=””] مانند کد زیر:

  digitalWrite(trigPin, HIGH);

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

pingTime = pulseIn(echoPin, HIGH);

زمان پینگ سنسور در میکرو ثانیه ها ارائه شده است

مانند کد زیر:

  pingTime = pulseIn(echoPin, HIGH);  

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

pingTime=pingTime/1000000;

با تقسیم 1000000 (میکرو ثانیه در ثانیه) pingTime را به ثانیه تبدیل می کنیم

مانند کد زیر:

pingTime=pingTime/1000000;

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

pingTime=pingTime/3600;

با تقسیم 3600 (ثانیه در ساعت) پینگ تایم را به hourse تبدیل کنید

مانند کد زیر:

pingTime=pingTime/3600;

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

targetDistance= speedOfSound * pingTime;

این مسافت مایل خواهد بود ، زیرا سرعت صدا مایل در ساعت بود

مانند کد زیر:

 targetDistance= speedOfSound * pingTime;

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

targetDistance=targetDistance/2;

سفرهای پینگ را برای هدف قرار دادن و بازگشت از هدف به خاطر سپرده  ، بنابراین برای مسافت واقعی هدف باید بین 2 تقسیم شود

مانند کد زیر:

 targetDistance=targetDistance/2;

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

targetDistance= targetDistance*63360;

با ضرب 63360 (اینچ در هر مایل) مایل را به اینچ تبدیل کنید

مانند کد زیر:

  targetDistance= targetDistance*63360;    

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

LCD.setCursor(0,1);

مکان نما را روی ستون اول ردیف دوم تنظیم کردیم

مانند کد زیر:

  LCD.setCursor(0,1);  

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

LCD.print(”          “);

پرینت و نمایش عدد به دست آماده بر روی ال سی دی

مانند کد زیر:

  LCD.print("                ");

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

LCD.print(targetDistance);

پرینت کلمه مورد نظر

مانند کد زیر:

  LCD.print(targetDistance); 

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

  LCD.print(” inches”);

پرینت کلمه مورد نظر

مانند کد زیر:

  LCD.print(" inches");  

سورس برنامه:

[vc_row][vc_column][vc_message message_box_color=”pink” icon_fontawesome=”fa fa-cloud-download”]برای دانلود کامل برنامه و فایل های پروژه به صورت رایگان به پایین صفحه مراجعه کنید.[/vc_message][/vc_column][/vc_row]

//فراخوانی کتابخانه ال سی دی
#include <LiquidCrystal.h> 
// معرفی پایه های متصل شده به آردوینو
LiquidCrystal LCD(10, 9, 5, 4, 3, 2); 
//تعریف نوع متغییر و معرفی پایه التراسونیک که به آردوینو متصل شده 
int trigPin=13; 
int echoPin=11;  
int myCounter=0; 
//تعریف نوع متغییر و زمان رفت و برگشت پینگ التراسونیک
float pingTime;  
// اندازه فاصله هدف تا سنسور
float <code>targetDistance;</code> 
//سرعت فرستادن صوت در مایل بر ساعت float speedOfSound=776.5; 

void setup() {
  
Serial.begin(9600);
//تعریف ورودی خروجی ها
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
 //تعریف ال سی دی ۱۶ ستونی در آردوینو 
LCD.begin(16,2); 
//مکان نمای ال سی دی در گوشه سمت چپ ستون۰و ردیف ۰
LCD.setCursor(0,0);  
//نمایش کلمه مورد نظر بر روی ال سی دی
LCD.print("Target Distance:");  
}

void loop() {
  //خواندن پایه التراسونیک در کم ترین حالت 
  digitalWrite(trigPin, LOW); 
  //زمان تاخیر
  delayMicroseconds(2000); 
  //خواندن پایه التراسونیک در بیشترین حالت
  digitalWrite(trigPin, HIGH); 
  delayMicroseconds(15); 
  digitalWrite(trigPin, LOW); 
  delayMicroseconds(10);
  //زمان پینگ سنسور در میکرو ثانیه ها ارائه شده است
  pingTime = pulseIn(echoPin, HIGH);  
  //با تقسیم  (میکرو ثانیه در ثانیه) پینگ تایم را به ثانیه تبدیل می کنیم
  pingTime=pingTime/1000000; 
  //با تقسیم  ثانیه در ساعت پینگ تایم را به ساعت تبدیل می کنیم
  pingTime=pingTime/3600; 
  //این مسافت مایل خواهد بود ، زیرا سرعت صدا مایل در ساعت بود
  targetDistance= speedOfSound * pingTime;  
  //سفرهای پینگ را برای هدف قرار دادن و بازگشت از هدف به خاطر سپرده  ، بنابراین برای مسافت واقعی هدف باید بین 2 تقسیم شود
  targetDistance=targetDistance/2; 
  //با ضرب  (اینچ در هر مایل) مایل را به اینچ تبدیل کنید
  targetDistance= targetDistance*63360;    
  //مکان نما را روی ستون اول ردیف دوم تنظیم کردیم
  LCD.setCursor(0,1);  
  //پرینت و نمایش عدد به دست آماده بر روی ال سی دی;
  LCD.print("                "); 
  LCD.setCursor(0,1);   
  //پرینت کلمه مورد نظر
  LCD.print(targetDistance); 
  //پرینت کلمه مورد نظر
  LCD.print(" inches");  
  delay(250);
  
  
  }

 

 

نتیجه:

در آموزش راه اندازی ماژول التراسونیک srf-05 ما می توانیم در اندازه گیری فاصله اشیا تا ماژول را بگیریم یکی از استفاده های این ماژول

در بشکه های آب برای اندازه گیری سطح میزان آب می باشد و در صنعت در صنعت کاغذسازی  برای میزان کشش استفاده می شود

تا در اثر کشش زیاد کاغذ پاره نشود

 

 

موفق پیروز باشید

امیدوارم از مطلب لذت برده باشید حتما سر به اینستاگرام ما بزنید

 

اگر می‌خواهید از آخرین و محبوب‌ترین مقالات ما در ایمیل خود مطلع شوید، همین الان ایمیل و شماره موبایل خود را در کادر زیر وارد کنید:
تعداد علاقه مندانی که تاکنون عضو خبرنامه ما شده اند: 0 نفر
دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *