بر اساس گزارش اداره ملی سوابق جرم و جنایت (NCRB)، تخمین زده میشود که بین سالهای 2010 تا 2014، بیش از 1.2 هزار نفر بر اثر حوادث آتشسوزی در هند کشته شدهاند. اگرچه اقدامات احتیاطی زیادی برای حوادث آتشسوزی انجام میشود، این بلایای طبیعی/ساخته انسان گاه و بیگاه اتفاق میافتد. در صورت بروز آتش سوزی، برای نجات مردم و اطفای حریق مجبور به استفاده از نیروی انسانی غیرایمن هستیم. با پیشرفت تکنولوژی به ویژه در رباتیک ، جایگزینی انسان با رباتها برای مقابله با آتش بسیار امکان پذیر است. این کارایی آتش نشانان را بهبود می بخشد و همچنین از به خطر انداختن جان انسان ها جلوگیری می کند. امروز قصد داریم با استفاده از آردوینو یک ربات آتش نشان بسازیم که به طور خودکار آتش را حس کرده و پمپ آب را راه اندازی می کند.
در این پروژه یاد می گیریم که چگونه با استفاده از آردوینو یک ربات ساده بسازیم که بتواند به سمت آتش حرکت کند و آب را از اطراف آن بیرون بکشد تا آتش را خاموش کند. این یک ربات بسیار ساده است که مفهوم اساسی رباتیک را به ما می آموزد. هنگامی که اصول زیر را درک کردید، می توانید ربات های پیچیده تری بسازید. پس بیایید شروع کنیم…
مواد مورد نیاز:
- آردوینو UNO
- سنسور آتش یا حسگر شعله (3 شماره)
- سروو موتور (SG90)
- ماژول درایور موتور L293D
- تخته نان کوچک
- شاسی ربات با موتور و چرخ (هر نوع)
- یک قوطی کوچک
- سیم های اتصال
مفهوم کاری ربات آتش نشان:
همانطور که می بینید این سنسورها دارای یک گیرنده IR (Photodiode) هستند که برای تشخیص آتش سوزی استفاده می شود. چه طور ممکنه؟ هنگامی که آتش می سوزد، مقدار کمی نور مادون قرمز ساطع می کند، این نور توسط گیرنده IR روی ماژول سنسور دریافت می شود. سپس از Op-Amp برای بررسی تغییر ولتاژ در گیرنده IR استفاده می کنیم، به طوری که اگر آتش سوزی تشخیص داده شود، پایه خروجی (DO) 0 ولت (LOW) و اگر آتش نباشد، پایه خروجی 5 ولت باشد. بالا).
بنابراین، ما سه حسگر از این قبیل را در سه جهت ربات قرار می دهیم تا بفهمیم آتش در کدام جهت می سوزد.
ما جهت حریق را تشخیص می دهیم و می توانیم از موتورها برای حرکت در نزدیکی آتش با حرکت موتورهای خود از طریق ماژول L293D استفاده کنیم . وقتی به آتش نزدیک می شویم باید آن را با آب خاموش کنیم. با استفاده از یک ظرف کوچک میتوانیم آب را حمل کنیم، یک پمپ 5 ولتی نیز در ظرف قرار میگیرد و کل ظرف در بالای یک موتور سروو قرار میگیرد تا بتوانیم جهتی که آب باید در آن پاشیده شود را کنترل کنیم. بیایید اکنون به اتصالات ادامه دهیم.
می توانید تمام اتصالات نشان داده شده را برای آپلود برنامه وصل کنید تا کارکرد را بررسی کنید یا می توانید ربات را به طور کامل مونتاژ کنید و سپس به اتصالات ادامه دهید. هر دو راه اتصال بسیار ساده است و شما باید بتوانید آن را به درستی انجام دهید.
بر اساس شاسی روباتیکی که استفاده می کنید، ممکن است نتوانید از همان نوع ظرفی که من استفاده می کنم استفاده کنید. در این صورت از خلاقیت خود برای راه اندازی سیستم پمپاژ استفاده کنید. با این حال کد یکسان باقی خواهد ماند. برای تنظیم پمپ داخل آن از یک قوطی آلومینیومی کوچک (قطی نوشیدنی های خنک) استفاده کردم و داخل آن آب ریختم. سپس کل قوطی را روی یک موتور سروو مونتاژ کردم تا جهت آب را کنترل کنم. ربات من بعد از مونتاژ چیزی شبیه این به نظر می رسد.
همانطور که می بینید من با استفاده از چسب گات پره سروو را به ته ظرف ثابت کردم و با استفاده از مهره و پیچ و مهره سروو موتور را با شاسی فیکس کردم. به سادگی می توانیم ظرف را روی موتور قرار دهیم و پمپ را در داخل آن فعال کنیم تا آب را از طریق لوله به بیرون پمپاژ کنیم. سپس کل ظرف را می توان با استفاده از سروو برای کنترل جهت آب چرخاند.
برنامه نویسی آردوینو:
هنگامی که سخت افزار خود را آماده کردید، می توانید کد آردوینو را برای برخی اقدامات آپلود کنید. برنامه کامل در انتهای همین صفحه آورده شده است. با این حال من در اینجا چند مورد مهم را بیشتر توضیح داده ام.
همانطور که می دانیم سنسور آتش در هنگام آتش سوزی یک خروجی HIGH و در صورت آتش سوزی یک خروجی LOW را نشان می دهد. بنابراین اگر آتش سوزی رخ داده است باید این سنسورها را بررسی کنیم. اگر آتش وجود نداشته باشد، از موتورها می خواهیم که با بالا بردن تمام پین ها مانند شکل زیر، متوقف شوند
if (digitalRead(Left_S) ==1 && digitalRead(Right_S)==1 && digitalRead(Forward_S) ==1) //If Fire not detected all sensors are zero { //Do not move the robot digitalWrite(LM1, HIGH); digitalWrite(LM2, HIGH); digitalWrite(RM1, HIGH); digitalWrite(RM2, HIGH); }
به همین ترتیب، اگر آتش سوزی وجود داشته باشد، می توانیم با چرخاندن موتور مربوطه از ربات بخواهیم در آن جهت حرکت کند. هنگامی که به آتش می رسد، حسگر چپ و راست آتش را تشخیص نمی دهد زیرا مستقیماً جلوی آتش می ایستد. اکنون از متغیری به نام " fire " استفاده می کنیم که تابع را برای خاموش کردن آتش اجرا می کند.