راه اندازی ماژول SRF04 با آردوینو و OLED :

ماژول های اندازه گیری فاصله به طور کلی ماژول هایی هستند که امکان اندازه گیری فاصله تا یک مانع را در سیستم های امبدد فراهم می سازند . تکنولوژی به کار رفته در این ماژول ها تنوع زیادی دارد اما به طور کلی از بازتاب  امواج توسط اجسام بهره می گیرند . در یک ماژول اندازه گیری فاصله بر پایه IR ، از تابش IR بر اجسام و محاسبه شدت بازتاب از سمت جسم خارجی ، فاصله به دست می آید . یکی از تکنولوژی های به کار گرفته شده در ماژول های اندازه گیری فاصله ، استفاده از امواج التراسونیک می باشد . در این ماژول ها با ایجاد یک سیگنال فراصوت و محاسبه تاخیر زمانی پژواک صدا توسط جسم خارجی ، قاصله محاسبه می شود . یکی از مزیت ها ماژول های التراسونیک قیمت پایین و دقت آن ها می باشد . به طور کلی به دلیل استفاده از مدولاسیون های خاص در ارسال صوت در این ماژول ها ، تاثیر پذیری آن ها از محیط بسیار پایین تر از ماژول های IR است . یکی از ماژول های کاربردی اندازه گیری فاصله که بر پایه التراسونیک است ، ماژول SRF04 می باشد . راه اندازی و به کار گیری این ماژول بسیار ساده است و نیاز به کتابخانه خاصی ندارد .

در این آموزش قصد داریم به الگوی راه اندازی ماژول srf04 بپردازیم .

ماژول SRF04 دارای 4 پایه به شرح زیر است :

1- VCC ولتاژتغذیه که 5 ولت می باشد . (در نسخه های 2020 از ولتاژ 3.3 ولت پشتیبانی می شود)

2- GND پایه زمین ماژول

3-Trigger از این پایه برای ارسال پالس توسط ماژول استفاده می شود (در ادامه کامل شرح داده می شود )

4-Echo از این پایه برای دریافت سیگنال برگشتی ا زمانع استفاده می شود .

 

بر اساس دیتا شیت SRF04 الگوی زیر برای عملکرد ماژول نشان داده شده است :

 

نحوه راه اندازی ماژول SRF04 :

بعد از اتصال تغذیه ماژول ، می بایست پین Trigger را به مدت 10 میکرو ثانیه (در حداقل مقدار خود ) در حالت 1 منطقی قرار داد . پس از این کار ماژول 8 پالس به سمت مانع می فرستد . پس از برخورد سیگنال های التراسونیک به مانع ، پین Echo به مدت 100 میکرو ثانیه الی 18 میلی ثانیه در وضعیت یک منطقی قرار می گیرد . این مدت زمان بر اساس فاصله جسم تا مانع ( عرض پالس قرار گرفته بر روی پین Echo ) می تواند تغییر کند .لذا می توان با انداره گیری عرض پالس پین Echo فاصله تا حسم را محاسبه نمود .

در صورتی که هیچ مانعی در مقابل ماژول نباشد پین Echo بعد از حدود 36 میلی صانیه یک خواهد شد .

 

کد های پروژه :

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
 
#define trigPin 9
#define echoPin 8
 
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
 
void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //initialize with the I2C addr 0x3C (128x64)
display.clearDisplay();
 
}
 
void loop() {
float duration;
float distance_cm;
float distance_in;
 
digitalWrite(trigPin, LOW); //PULSE ___|---|___
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
 
duration = pulseIn(echoPin, HIGH);
 
distance_cm = (duration/2) / 29.1;
distance_in = (duration/2) / 73.914;
 
display.setCursor(30,0); //oled display
display.setTextSize(1);
display.setTextColor(WHITE);
display.println("Range Finder");
 
display.setCursor(10,20); //oled display
display.setTextSize(2);
display.setTextColor(WHITE);
display.println(distance_cm);
display.setCursor(90,20);
display.setTextSize(2);
display.println("cm");
 
display.setCursor(10,45); //oled display
display.setTextSize(2);
display.setTextColor(WHITE);
display.println(distance_in);
display.setCursor(90,45);
display.setTextSize(2);
display.println("in");
display.display();
 
delay(500);
display.clearDisplay();
 
Serial.println(distance_cm);
Serial.println(distance_in);
}

 

شماتیک مدار :

 

Tags:
About Author: USER_4