ماژول تشخیص فاصله SRF05 یک ماژول آلتراسونیک یا فراصوت برای اندازه گیری فاصله تا جسم است که میتوان از آن در بردهایی مانند آردوینو استفاده کرد و با آن پروژه های راداری و مسافت سنج نوشت. در ادامه آموزش با مرجع تخصصی آردوینو ، دیجی اسپارک همراه باشید.
سخت افزار مورد نیاز
اتصالات
- اتصال vcc به ۵ ولت آردوینو
اتصال GND به GND آردوینو
اتصال اتصال trig به پین ۱۲ آردوینو
اتصال Echo به پین ۱۳ آردوینو
کدنویسی
/* Tested with HY-SRF05, HC-SR04 Assuming a room temp of 20 degrees centigrade The circuit: * VVC connection of the sensor attached to +5V * GND connection of the sensor attached to ground * TRIG connection of the sensor attached to digital pin 12 * ECHO connection of the sensor attached to digital pin 13 */ const int TRIG_PIN = 12; const int ECHO_PIN = 13; void setup() { // initialize serial communication: Serial.begin(9600); pinMode(TRIG_PIN,OUTPUT); pinMode(ECHO_PIN,INPUT); } void loop() { long duration, distanceCm, distanceIn; // Give a short LOW pulse beforehand to ensure a clean HIGH pulse: digitalWrite(TRIG_PIN, LOW); delayMicroseconds(2); digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIG_PIN, LOW); duration = pulseIn(ECHO_PIN,HIGH); // convert the time into a distance distanceCm = duration / 29.1 / 2 ; distanceIn = duration / 74 / 2; if (distanceCm <= 0){ Serial.println("Out of range"); } else { Serial.print(distanceIn); Serial.print("in, "); Serial.print(distanceCm); Serial.print("cm"); Serial.println(); } delay(1000); }
شرح برنامه
تعریف ثابت در ابتدا برنامه جهت دسترسی به پین ها با نام مستعار:
const int TRIG_PIN = 12; const int ECHO_PIN = 13;
جهت اینکه مقدار پالس بالا در پین ها پاک شود یک پالس پایین در حد ۲ میکروثانیه به پین ارسال میکنیم:
digitalWrite(TRIG_PIN, LOW); delayMicroseconds(2) digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIG_PIN, LOW); duration = pulseIn(ECHO_PIN,HIGH);
تبدیل مقادیر دریافتی از سنسور به سانتی متر و اینچ:
distanceCm = duration / 29.1 / 2 ; distanceIn = duration / 74 / 2;
و در نهایت ارسال آن به خروجی از طریق سریال:
Serial.print(distanceIn); Serial.print("in, "); Serial.print(distanceCm); Serial.print("cm"); Serial.println();
جهت مشاهده خروجی از انواع کنسول ها میتوانید استفاده کنید که احتمالا راحتتر هستید از کنسول آردوینو استفاده کنید و خروجی را مشاهده کنید اما از کنسول های دیگر مانند putty در ویندوز و لینوکس نیز استفاده کنید.
با سلام، براى نرم افزار فریتزینگ، از کجا میشه کتابخانه اش را دانلود کرد؟
توى نرم افزار من سنسور srf را پیدا نمیکنم.
ممنونم
ای کاش lcd هم میذاشتی؟
میذاری؟
تنها out put که من گرفتم out of range بود چراا؟؟؟
سلام احترام
ببخشید من میخواستم سنسور التروسونیک راهندازی بکنم که وقتی یک شی نزدیک سنسور شد یک فن ۱۲vشروع به کار کند.
باتشکر
سلام
کاربر گرامی آموزش های متعددی جهت راه اندازی ماژول فاصله سنج و استفاده از رله در پروژه های اینترنت اشیا منتشر شده است. با مراجعه به آموزش ها میتوانید ایده بگیرید و اجرا نمایید.
با سلام
برای من وقتی سریال مانیتو را باز میکنم فقط این را میدهد:
Out of range
سلام
با توجه به این مورد اتصالات را به درستی انجام نداده اید. همچنین ممکن است اتصالات نادرست سبب سوختن ماژول شده باشد.
سلام . بعد از نوشتن کدها و انجام اتصالات وقتیکه آپلود میکنم چراغ نارنجی برد آردوینو با نور کم به حالت چشمک زن در میاد و برنامه اجرا نمیشه.مشکل از کجاست؟برنامه های دیگه هم که اپلود میکنم همین اتفاق میفته
سلام
لطفا ارور را ارسال کنید تا بتوانم راهنمایی کنم.
سلام من می خواستم سه سنسنور رو هم زمان راه اندازی کنم ولی بعد از تعریف متغیر های طبق مثال و دستور برای پرینت هر سه فاصله برای سریال مانیتوریگ فقط فاصله سنسور اول نمایش داده میده و بقیه سنسور ها صفر نمایش داده میشه؟
سلام
ممکن است متغیر را در طول برنامه به درستی فراخوانی نشده باشد. دقت کنید هر متغیر بایستی دارای اسم مشخص و متفاوت باشد.
سلام.میخواستم بدونم آیا امکان اتصال دو عدد التراسونیک بر روی برد آردوینو هست ؟
علت سوالمم این هست که پروژه ای میخوام انجام بدم که در دو جهت افق و عمود باید به نابینا هشدار بده.ممنون از توجهتون.
سلام
بله امکان پذیر است. دو سنسور جداگانه در کدها تعریف کنید.
میشه اگه کدش رو نوشتید برای منم بفرستید
سلام سنسور من ۵ تا پایه داره vcc-trig-echo-out وgndتو این اموزش چیزی درموردout نگفته .
بایدout رو چیکار کنم
اسم سنسورم HY_SRF05 هست
با سلام
پایه out بدون استفاده است و نیازی به اتصال ندارد.
سلام آیا این امکان وجود داره که سیگنال دریافتی رو در یک فایل روی کامپیوتر ذخیره کرد که بعدا بشه روش پردازش انجام داد؟
با سلام
بله روش های مختلفی جهت لاگ گرفتن دیتا وجود دارد. به عنوان مثال از ماژول SD CARD میتوانید استفاده نمایید.
سلام و عرض ادب
میخواستم راه نماییم کنید ، که چگونه با ماژول sef05 میتونم یک مدار ساده که فقط با تشخیص حرکت یک خروجی به بیزر بده ،که مطلع بشم از ورود افراد .(برای ورودی فروشگاه میخواستم)
با سلام
در این خصوص بایستی برنامه نویسی مجزا انجام شود. از طریق لینک زیر میتوانید درخواست طراحی پروژه ارسال کنید تا بررسی شود.
پرتال پشتیبانی
سلام برای من تو برنامه USB serial کنسول استفاده کردم فقط اینو نشون میده cm.00 هی تکرار میکنه میشه راهنمایی کنیند
با سلام
این مورد توسط بنده تست نشده است.
سلام این میشه یه جوری درست کرد که سریال از طریق بلوتوث بفرسته میشه سورس کد مهرفی کنید
با سلام
در این خصوص پیشنهاد میشود آموزش های مربوط به بلوتوث را مطالعه کرده و سپس شروع به توسعه کدها کنید. آموزش آماده ای منتشر نشده است.
آموزش کار با ماژول بلوتوث
سلام اگه میشه من خودم یک کد نوشتم البته با کمک سایت شما خداوند شمارو یار نگهدار باشه که به همه کمک میکنید اگه میشع من کدمو ارایه بدم وشما در سایت بررسی کنید اگه درست کار کرد به مردم ارایه بدید برای فرستادن اصلاعات اندازی گیری از طریق بلوتوث
با سلام
کاربر گرامی از همراهی شما سپاسگزاریم.
در این خصوص از طریق لینک زیر در بخش پرتال پشتیبانی، گزینه اسپارکرها را انتخاب کرده و درخواست خود را ارسال نمایید. تیم فنی با شما در ارتباط خواهند بود.
با تقدیم احترام
سلام
برای انجام این پروژه میتوان از برد آردوینو نانو هم استفاده کرد ؟
تشکر
با سلا
بله هیچ تفاوتی ندارد و میتوانید استفاده کنید.
ممنونم از شما
جسارتا دوتا سوال دیگه هم داشتم . ممنونم
به این برد حداکثر چند ماژول به صورت همزمان میتوان وصل کرد ؟
و اینکه امکانش هست این برد رو کوچک تر طراحی کرد یا کوچک تر ساخته بشه ؟ یا بردی مشابه این ولی کوچکتر باشه که بشه برای فاصله سنج استفاده کرد ؟
ممنونم
*تکمیلی پیام قبلیم
منظورم بردی کوچکتر از برد آردوینو نانو بود .
با سلام
لطفا نوع برد را بفرمایید.
سلام . وقت بخیر
امکانش هست بردی کوچکتر از ادروینو نانو طراحی کرد که فقط ورودی آن پارامتر های فاصله سنج و خروجی آن مثلا نمایش هشدار یا بوق باشه؟
یا همچین بردی وجود داره ؟
تشکر
با سلام
بله امکان پذیر است. بایستی به کمک آی سی میکرو اقدام به طراحی PCB کنید.
متشکرم
چون زمان و توانایی علمی لازم در این خصوص رو ندارم امکانش هست به کمک مجموعه شما (بررسی شرایط و اعلام هزینه از سمت شما) طراحی و ساخت را انجام بدیم ؟
با سلام
در این خصوص درخواست خود را از طربق پرتال پشتیبانی اقدام کنید.
سلام
ببخشید من از اردوینو استفاده نیمکنم اما یه سوالی داشتم
الان ما احتایج به مقاومت پول اپ داریم ایا؟
چون تو پورتوس والا من بدون مقاومت میذارم اصلا اکو هیچ واکنشی نشون نیمده
وقتی هم که پول اپ میذارم اون پینی که به اکو وصثل کردم همینجچوری یک میمونه انگار اصلا اکو نمیتونه صفرش کنه
ایا مشکل پروتوسه؟
چون من یه نفر یگه رو دیدم پول اپ گذاشته بود و براش کار و میکرد
با سلام
این مورد بدون آردوینو توسط بنده تست نشده است. از دیگر کاربرانی که در این خصوص اطلاعاتی دارند، تقاضا میکنم در بحث شرکت کنند.
اگر هم مقاومت نذارم تو پروتوس پینش توسی میشه و خب هیچو اکنشی صورت نمیگیره
یعنی بدون مقاومت تو اون قسمت منتظر موندن تا از صفر شددن بیاد بیرون گیر میکنه تا ابد
با مقاومت تو قسمت منتپر موندن تا از یک مونن بیاد بیرون همینجور گیر میکنه
با سلام
این مورد بدون آردوینو توسط بنده تست نشده است. از دیگر کاربرانی که در این خصوص اطلاعاتی دارند، تقاضا میکنم در بحث شرکت کنند.
سلام ببخشید زمان کم÷این کردن کد ها این ارور رو میده اگه میشه راهنمایی ام کنید ..
at cc.arduino.Compiler.callArduinoBuilder(Compiler.java:317)
at cc.arduino.Compiler.loadPreferences(Compiler.java:216)
at cc.arduino.Compiler.build(Compiler.java:175)
at processing.app.SketchController.build(SketchController.java:664)
at processing.app.Editor$BuildHandler.run(Editor.java:1632)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.io.IOException: Cannot run program “E:\Arduino\arduino-builder”: CreateProcess error=5, Access is denied
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
at processing.app.helpers.ProcessUtils.exec(ProcessUtils.java:26)
با سلام
این ارور نرم افزاری است و ارتباطی با کد آردوینو برنامه ندارد.