سنسورهای آلتراسونیک اولین و ارزان ترین انتخاب برای اندازه گیری فاصله است. از کاربردهای سنسور آلتراسونیک برای ساخت سطل زباله اتوماتیک، تشخیص انسان تا یک فاصله مشخص و فعال شدن آلارم اشاره کرد. در آموزش ساخت فاصله سنج روش تست و راه اندازی SRF همراه با نمایش فاصله در نمایشگر OLED SSD1306 را یاد خواهیم گرفت. در ادامه با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
معرفی سنسور SRF04
سنسور آلتراسونیک SRF Ultrasonic با استفاده از امواج صوتی فاصله شی را اندازه گیری میکند. سنسور آلتراسونیک به واسطه یک مبدل پالس ها را ارسال و دریافت میکند تا اطلاعات مربوط به فاصله یک شی را اندازه گیری کرده و ارسال کند. سنسورهایی که در دسترس ما هستند تنها از یک مبدل جهت ارسال پالس و دریافت اکو Echo استفاده میکنند. با اندازه گیری فاصله زمانی بین دریافت و ارسال پالس آلتراسونیک فاصله تا شی مورد نظر را اندازه گیری میکند. از سنسورهای آلتراسونیک در طراحی ربات ها جهت تشخیص مجاورت با شی، تشخیص سطح مانند سطح آب، تشخیص موقعیت و تشخیص فاصله میتوان استفاده کرد. جهت اندازه گیری فاصله سنسور، از فرمول خاصی استفاده میکند که سرعت صوت در رفت و برگشت را محاسبه کرده و با تبدیل متر بر ثانیه به واحد میکرو در سانتی متر، فاصله را نمایش میهد. سنسور آلتراسونیک در مدل های مختلف در بازار موجود است مانند SRF04 و SRF05 که نسخه SRF05 ورژن آپدیت شده سنسور SRF04 است و یک پایه OUT بر روی برد اضافه شده است. پایه OUT در این برد نقش ورودی داشته و سیگنال برگشتی روی خط اکو و یا تریگر باشد. تفاوتی در بین دو برد نیست و با توجه به نیاز خود میتوانید از کدام استفاده نمایید.
پروژه های قابل اجرا با آلتراسونیک SRF04
- ساخت سطل زباله اتوماتیک
- ساخت ربات تشخیص مانع
- ساخت دستگاه پرتوکششی
- ساخت دنده عقب خودرو
- ساخت رادار سونار
- ساخت مایع ریز کرونا
برای استفاده از سنسور آالتراسونیک از پایه های دیجیتال برد آردوینو و فراخوانی دستورهای digitalWrite نوشتن کد برنامه بسیار ساده است اما ممکن است تعداد خط های نوشته شده زیاد باشد. برای اینکار یک کتابخانه کاربردی برای سنسور SRF04 طراحی و توسعه یافته است. برای سهولت در اجرا از این کتابخانه استفاده میکنیم.
نصب کتابخانه Ultrasonic
برای نصب کتابخانه ی آلتراسونیک از منو نرم افزار آردوینو Arduino،گزینه Tools/Manage Libraries را انتخاب کنید. سپس در صفحه ی باز شده عبارت Ultrasonic را فیلتر کنید.
آخرین ورژن برای کتابخانه را نصب کنید.
راه اندازی OLED با آردوینو
یکی از پرکاربردترین ماژول OLED که در حال حاضر در صنعت الکترونیک و بردهای توسعه میکروکنترلر استفاده میشود، نمایشگر OLED با درایور قدرتمند SSD1306 است که در اشکال مختلف به بازار ارائه شده است. چیپ SSD1306 یک کنترل کننده درایور قدرتمند CMOS است. این درایور از پروتکل های ارتباطی I2C و SPI پشتیبانی میکند و با توجه به اینکه در پروتکل I2C تنها با دو پایه برای اتصال نیاز دارد، برای اتصال OLED به میکروکنترلرها از این پروتکل بیشتر استفاده خواهیم کرد. ولتاژ کاری نمایشگر ۳٫۳ و ۵ ولت است و از هر دو پایه های تعذیه میکروکنترلر میتوانید استفاده کنید. زاویه دید نمایشگر ۱۶۰ درجه است و ابعاد آن ۰٫۹۶ اینچ است. نمایشگر دارای ۸ سطر و ۱۲۸ ستون است. این OLED در ردو رنگ سفید و زرد موجود است. دقیق ترین کتابخانه ای که برای OLED وجود دارد توسط Adafruit توسعه یافته است و پیشنهاد میشود فقط از این کتابخانه استفاده کنید. با توجه به اینکه پروتکل ارتباطی نمایشگر ماژول OLED به صورت I2C است، با تمامی میکروکنترلرهایی که از پروتکل I2C پشتیبانی میکنند قابل تست و راه اندازی است و بدون نگرانی با نصب کتابخانه های مرتبط میتوانید ماژول نمایشگر را راه اندازی و استفاده کنید.
برای راه اندازی نمایشگر OLED با درایور SSD1306، در قدم اول کتابخانه های مورد نیاز را نصب کنید.
آخرین ورژن از کتابخانه ها را نصب کنید.
کد آردینو فاصله سنج
کد را کپی و به نرم افزار آردوینو انتقال دهید.
#include <SPI.h> #include <Wire.h> #include <Adafruit_GFX.h> //کتابخانه #include <Adafruit_SSD1306.h> // کتابخانه Adafruit_SSD1306 display(-1); // ساخت یک آبجکت برای کتابخانه #include <Ultrasonic.h> Ultrasonic ultrasonic(12, 13); int distance; void setup() { Serial.begin(9600); display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //پاک کردن حافظه بافر display.clearDisplay(); } void loop() { distance = ultrasonic.read(); Serial.print("Distance in CM: "); Serial.println(distance); display.setTextSize(2); // انتخاب سایز نمایش متن بین ۱ و ۲ انتخاب کنید display.setTextColor(WHITE); // انتخاب رنگ display.setCursor(0,0); // تعیین مکان نمای نمایش متن بر روی oled display.println(distance);// متن مورد نظر display.display(); delay(2000); display.clearDisplay(); //delay(1000); if (distance <10) { display.setCursor(5,0); display.fillRect(0, 15, 20, 10, WHITE); display.display(); } if (distance >10) { display.setCursor(5,0); display.fillRect(0, 15, 40, 10, WHITE); display.display(); } if (distance >20) { display.setCursor(5,0); display.fillRect(0, 15, 60, 10, WHITE); display.display(); } if (distance >30) { display.setCursor(5,0); display.fillRect(0, 15, 80, 10, WHITE); display.display(); } if (distance >40) { display.setCursor(5,0); display.fillRect(0, 15, 100, 10, WHITE); display.display(); }}
تحلیل کد آردوینو
این کد با تمامی پروژه هایی که تا به حال دیده اید، متفاوت است. با توجه به اینکه ماژول فاصله سنج آلتراسونیک در زاویه دید ۱۵ درجه فاصله ی بین ۳ تا ۴۰۰ سانتی متر را اندازه گیری میکند، میتوانیم تمامی این بازه ها را از یکدیگر تفکیک کرده و از نمایشگر OLED برای نمایش تغییرات استفاده کنیم. در این کد بین بازه ی ۳ تا ۴۰۰ سانتی متر یک نوار مستطیلی بر روی نمایشگر OLED میکشیم. با افزایش فاصله طول مستطیل در نمایشگر OLED افزایش پیدا میکند.
- بازه ی کمتر از ۱۰ سانتی متر
- بازه ی بیشتر از ۱۰ سانتی متر
- بازه ی بیشتر از ۲۰ سانتی متر
- بازه ی بیشتر از ۳۰ سانتی متر
- بازه ی بیشتر از ۴۰ سانتی متر
- …
در قدم اول کتابخانه ها را فراخوانی کنید.
#include <SPI.h> #include <Wire.h> #include <Adafruit_GFX.h> //کتابخانه #include <Adafruit_SSD1306.h> // کتابخانه #include <Ultrasonic.h>
محدودیت در دسترسی کامل به این مجموعه آموزش
دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندسهای دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید. |
استفاده از ساختار تصمیم if else
ساختار if شرطی را تست میکند و در صورتیکه آن شرط دارای ارزش درستی باشد، مجموعه ای از دستورات را اجرا میکند.
همانطور که گفته شد در هر بازه با تعریف if else میتوانیم یک شرط گذاری انجام دهیم. روش کدنویسی به صورت زیر اقدام کنید.
محدودیت در دسترسی کامل به این مجموعه آموزش
دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندسهای دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید. |
وسایل مورد نیاز
جمع بندی لیدی پای
تا به حال پروژه های زیادی با SRF اجرا شده است اما زبان برنامه نویسی C++ و Arduino IDE همیشه دست ما را برای پیاده سازی ایده ها و خلاقیت در کدنویسی باز گذاشته است. از ترکیب دو کتابخانه ی Ultrasonic و کتابخانه Adafruit ssd1306 در کمترین تعداد خط برنامه نویسی یک پروژه با نمایشگر پیاده سازی کردیم که تغییرات در نمایشگر OLED به صورت لحظه ای است. این کد فقط برای تست اولیه است و شما میتوانید بر اساس فاصله قابل تشخیص اشکال هندسی را تغییر داده و بازه ها را به دلخواه انتخاب کنید.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
کد جالبی نوشته شده و با تغییر فاصله طول مستطیل هم تغییر میکنه
با سلام
کاربر گرامی سپاس از همراهی شما
امیدوارم مفید واقع شده باشد.
باسلام و تشکر
اما من یه ارور دارم میتونید راهنمایی کنید
Arduino: 1.8.1 (Windows 10), Board: “Arduino/Genuino Uno”
In file included from C:\Users\akbari\Documents\sketch_may30b\sketch_may30b.ino:4:0:
C:\Users\akbari\Documents\Arduino\libraries\Adafruit_GFX_Library/Adafruit_GFX.h:12:32: fatal error: Adafruit_I2CDevice.h: No such file or directory
#include
^
با سلام
این ارور مربوط به کتابخانه است. کتابخانه مربوطه را بایستی نصب کنید.
یک سوال ماژول اولترا سونیک در ضد آبه یا نه
با سلام
این مدل که در آموزش استفاده شده است، ضد آب نیست. ولی مدل ضد آب هم وجود دارد.
سلام و عرض ادب
محل اتصال پایه های برد و ماژول سنسور کجاست؟
با سلام
ماژول OLED از طریق پایه های I2C که A4 , A5 هستند به برد متصل میشود.