راه اندازی ماژول 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); }
شماتیک مدار :
مدار بستم جواب نداد oledروشن نشد اکشن مونیتور هم nock nokh نشون میداد