آموزش آردوینوپروژه های آردوینو

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

اینروز ها به دلیل گسترش ویروس کرونا، زندگی و معیشت بسیاری از افراد تغییر کرده است. تنها راه برای به حداقل رساندن شیوع، حفظ فاصله اجتماعی و رعایت پروتکل های بهداشتی است. همچنین اینروز ها نیاز به ضد عفونی کردن محیط بسیار زیاد شده است و ما نمیتوانیم پی در پی اینکار را انجام دهیم. در این پروژه آردوینو ما میخواهیم با ساخت یک ربات ضد عفونی کننده، این مشکل را حل کنیم. رباتی که در این پروژه میسازیم، با استفاده از لامپ های UV، اشعه فرابنفش را منتشر میکند و ویروس ها را از بین میبرد. همچنین این ربات کاملا اتوماتیک است و دارای سیستم جلوگیری از برخورد با مانع است. یعنی وقتی آن را روشن کنید خودش در خانه میچرخد و اشعه را به اشیا میتاباند و در نتیجه فرآیند ضد عفونی کردن کاملا خودکار انجام خواهد شد.

همانطور که گفته شد ربات ما دارای LED های فرابنفش است. کشف شده است که ویروس ها، باکتری ها و عوامل بیماری زا در معرض نور ماورا بنفش (UV) غیرفعال میشوند. این نور باعث از بین بردن مواد ژنتیکی موجود در عوامل بیماری زا میشوند. ویروس ها مثل کووید 19 (کرونا) میتوانند برای مدت طولانی در سطوح زنده بمانند. تاباندن اشعه فرابنفش به آنها باعث غیرفعال شدن میشود.

بقیه پروژه ها در زمینه کرونا را نیز مشاهده کنید:

مدار ربات ضد عفونی کننده با آردوینو

تصویر مدار در لحظه اول شاید پیچیده بنظر برسد، اما بسیار ساده است. ما سه سنسور التراسونیک داریم که موانع را تخشیص میدهند. پاه های Fround و VCC سنسور های التراسونیک را به Ground و 5V آردوینو متصل میکنیم. پایه های Trig و Echo سنسور ها به پایه های نشان داده شده آردوینو متصل میشوند. برای کنترل موتور ها از موتور درایور L293D استفاده میکنیم. ال ای دی های ماورا بنفش نیز همیشه روشن هستند بنابراین مستقیما با یک مقاومت 330 اهم به منبع تغذیه متصل میشوند. ما برای تغذیه ربات از یک باتری 7.4 ولتی و از یک رگولاتور 7805 برای تبدیل آن به 5 ولت استفاده میکنیم.

مدار ربات ضد عفونی کننده با آردوینو

قطعات مورد نیاز

قطعات استفاده شده در ربات بسیار پراستفاده هستند و شما به راحتی آن ها را در فروشگاه های مختلف پیدا خواهید کرد.

قطعات مورد نیاز ربات ضدعفونی کننده ربات کرونا

  • برد آردوینو پرو مینی
  • ماژول التراسونیک HC-SR04 (سه عدد)
  • L293D درایور موتور
  • موتورهای 5 ولت
  • LED های ماورا بنفش (هشت عدد)
  • تنظیم کننده ولتاژ 7805
  • باتری لیتیوم یون 7.4 ولت
  • مقاومت 330 اهم (ده عدد)
مطلب پیشنهادی:  ارسال اطلاعات سنسور به اینترنت با برد آردوینو
قطعات مورد نیاز را از فروشگاه قطعات آیرنکس تهیه کنید.

ساخت محفظه برای ربات ضدعفونی کننده مبتنی بر آردوینو

تصاویر زیر به شما برای ساخت محفظه ربات کمک میکنند. میتوانید با توجه به مواد در دسترس، خلاقیت و نیاز خود محفظه را ایجاد کنید. بهترین گزینه استفاده از ورق ها است. محفظه را مانند تصاویر برش بزنید و ال ای دی ها و ماژول التراسونیک را در آن ها قرار دهید.

ساخت محفظه برای ربات ضدعفونی کننده مبتنی بر آردوینو

طراحی قالب ربات ضدعفونی کننده آردوینو

کد آردوینو ربات ضد عفونی کننده سطح با نور ماورابنفش

کد کامل پروژه در انتهای صفحه قرار داده شده است. در این جا قسمت های مهم کد را بررسی میکنیم. برای درک اطلاعات دریافتی از سنسور های التراسونیک از کتابخانه خاصی استفاده نمیکنیم. در ابتدای کد تعیین میکنیم پین های Trig و Echo به کدام پین های آردوینو متصل هستند. در این پروژه سه پایه اکو و سه پایه ماشه داریم. توجه داشته باشید که 1 به معنی سنسور چپ ، 2 سنسور جلو و 3 سنسور سمت راست است.

const  int trigPin1 = 3;
const int echoPin1 = 5; 
const int trigPin2 = 6;
const int echoPin2 =9; 
const int trigPin3 = 10;
const int echoPin3 = 11;

سپس متغیرهایی را برای فاصله از نوع int تعریف کردیم و برای مدت زمان نوع (long) را انتخاب کردیم. باز هم ما از هر کدام سه تا داریم. پیشنهاد میکنم مقاله انواع متغیر در آردوینو را مشاهده کنید.

long duration1;
 long duration2;
 long duration3;
int distanceleft;
int distancefront;
int distanceright;

در بخش void setup ، باید نوع پایه های آردوینو را که به سنسور ها متصل هستند را تعریف کنیم. برای پین های Trig باید نوع خروجی و برای پین های Echo باید نوع ورودی را در نظر بگیریم. همچنین ارتباط سریال را با نرخ 9600 آغاز میکنیم.

pinMode(trigPin1, OUTPUT);
pinMode(trigPin2, OUTPUT);
pinMode(trigPin3, OUTPUT);
pinMode(echoPin1, INPUT); 
pinMode(echoPin2, INPUT);
pinMode(echoPin3, INPUT);
Serial.begin(9600);

همچنین پین های متصل به موتور درایور نیز تماما به صورت خروجی تعریف میشوند.

pinMode(4, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(12, OUTPUT);

در void loo[ ، ما سه بخش برای سه حسگر داریم. همه بخشها یکسان کار می کنند اما هر بخش برای سنسور های مختلف کار می کنند. در هر بخش ابتدا پایه Trig را به مدت 10 میکروثانیه High میکنیم و سپس با با دستور pulsein() مدت زمان رفت و برگشت موج التراسونیک به اشیا را بدست می آوریم. با استفاده از فرمول ساده و سرعت صدا در هوا که 340 متر بر ثانیه است، فاصله رفت و برگشت را محاسبه میکنیم. از آنجا که ما به فاصله نیاز داریم، فاصله رقت و برگشت را تقسیم بر 2 میکنیم. در نهایت فاصله هر حسگر از اشیای روبروی آن را در متغیر مربوطه ذخیره میکنیم.

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید
digitalWrite(trigPin1, LOW);
delayMicroseconds(2);
digitalWrite(trigPin1, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin1, LOW);
duration1 = pulseIn(echoPin1, HIGH);
distanceleft = duration1 * 0.034 / 2;
Serial.print("Distance1: ");
Serial.println(distanceleft);

بعد از فهمیدن فاصله هر سنسور از مانع، با دستور if موتور ها را کنترل میکنیم. این بسیار ساده است. ما فاصله آستانه را 15 سانتی متر در نظر گرفتیم. شما میتوانید این مقدار را تغییر دهید. با استفاده از این شرط، به طور مثال هنگامی که سنسور سمت چپ در فاصله ای کمتر از 15 سانتی متر با مانع باشد، به سمت راست حرکت میکند.

if ((distanceleft <= 15 && distancefront <= 15 && distanceright > 15) || (distanceleft <= 15 && distancefront > 15 && distanceright > 15))

در زیر کدی را که برای حرکت موتور چپ ، راست و جلو استفاده شده است به طور جداگانه توضیح داده ایم.

مطلب پیشنهادی:  ساخت گوشی پزشکی با آردوینو (استتسکوپ بی سیم)

این بخش از کد برای حرکت دادن ربات به سمت راست استفاده می شود:

 digitalWrite(4, HIGH);
 digitalWrite(7, LOW);
 digitalWrite(8, HIGH);
 digitalWrite(12, LOW);

این بخش از کد برای حرکت ربات به سمت چپ استفاده می شود:

 if ((distanceleft > 15 && distancefront <= 15 && distanceright <= 15) || (distanceleft > 15 && distancefront > 15 && distanceright <= 15) ||  (distanceleft > 15 && distancefront <= 15 && distanceright > 15) )
 digitalWrite(4, LOW);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(12, LOW);

این بخش از کد برای حرکت مستقیم ربات استفاده می شود:

 if ((distanceleft <= 15 && distancefront > 15 && distanceright <= 15) || (distanceleft > 15 && distancefront > 15 && distanceright > 15)) 
  {
    digitalWrite(4, HIGH);
    digitalWrite(7, LOW);
    digitalWrite(8, HIGH);
    digitalWrite(12, LOW);
   }

کد آردوینو ربات ضد عفونی کننده سطح با نور ماورابنفش

موارد موجود در فایل : سورس کامل

4.1 (8 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید قرار بدهم. سوالات مربوط به این مطلب را در قسمت نظرات همین مطلب اعلام کنید. سعی میکنم در اسرع وقت به نظرات شما پاسخ بدهم.

برای ارسال تصاویر از انجمن سایت استفاده کنید.

سوالات فنی را در انجمن سایت مطرح کنید تا در مسابقه شرکت کنید. ورود به انجمن

17 نظر

  1. سلام وقت بخیر
    میشه بفرمایید دقیقا از چه موتوری استفاده شده
    و اینکه تعادل ربات با ۲ چرخ بهم نمیخوره؟

  2. سلام مجدد خسته نباشید،
    امکانش هست برنامه کدویژن این ربات هم قرار بدید که بتونیم با آی سی Atmega16 هم این ربات رو بسازیم.

    1. سلام عزیز، میتونید دوره آموزش avr رو ببینید برنامه نویسی avr رو یاد بگیرید

  3. سلام
    من این رباتو ساختم ولی سنسور ها برعکس کار میکنن
    یعنی در حالت عادی مدام جهت موتور ها عوض میشه و وقتی به جسمی نزدیک میشه سرعتش بیشتر میشه و به سمت مانع حرکت میکنه
    اگه امکانش هست راهنمایی کنید

  4. سلام اگر بخواهیم روی uno آپلود کنیم باید کد رد تغییر بدیم؟؟؟

    1. سلام،
      ویدیو که شما اینجا پوست کرده اید، از چند تایر استفاده کرده اید؟

    2. سلام عزیز
      تعداد تایر ها مهم نیست بستگی داره به موتور و گیربکس مورد استفاده شما میتونه هرچند تا باشه.

    3. سلام جناب مهندس خسته نباشید،
      دو تا سوال داشتم.من میخواستم این پروژه رو با AVR انجام بدم، آیا میشه با آی سی Atmega32 یا Atmega16 انجامش بدم؟

      و سوال بعدی برای محفظه ربات از چی استفاده کردید و از کجا میتونیم تهیه کنیم؟

    4. سلام عزیز
      بله میشه
      میتونید به چاپ لیزری ها بگید براتون محفظش رو برش بدند و متصل کنید

  5. با سلام
    باتری چند میلی آمپر باید باشه
    ابعادش چقدر باید باشه ؟

  6. ببخشید چرا از باتری لیتیوم یون 7.4 ولت استفاده کردیم؟
    میشه جایگزینش از باتری 9 ولت استفاده کرد؟

    1. سلام عزیز، دلیل استفاده از باتری لیتیومی قابلیت شارژ مجددش هست. میتونید از باتری 9 ولت هم استفاده کنید.

  7. سلام وقتتون بخیر
    میخواستم بپرسم این کد با اروینوUNO هم جواب میده؟

    1. سلام جناب، بله میتونید در پروتئوس شبیه سازی کنید.

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

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