ربات تشخیص چهره و دنبال کننده صورت با آردوینو و Processing
محتویات
سلام. پروژه ربات تشخیص چهره و دنبال کننده صورت با آردوینو را آماده کردیم.
پروژه ربات تشخیص چهره با آردوینو
تا به حال شده است که بخواهید پروژه تشخیص چهره را بدون استفاده از برنامه نویسی های دیگر مثل OpenCV ، ویژوال بیسیک #C و … بسازید ؟ در این پروژه آردوینو ما با استفاده از مخلوط کردن قدرت Arduino و اندروید یک بازوی رباتیک دنبال کننده صورت را میسازیم. مزیت این پروژه این است که نیازی به خرید ماژول دوربین ندارید و با دوربین گوشی این کار انجام میشود. همچنین نیازی نیست که آردوینو به کامپیوتر متصل شود. همچنین ما برای ارتباط Android و Arduino از یک ماژول بلوتوث استفاده میکنیم. برنامه اندرویدی استفاده شده در این پروژه با استفاده از Processing اندروید تولید شده است. میتوانید در انتهای صفحه این برنامه را دانلود کنید.
فیلم زیر به شما در درک نحوه کار این پروژه کمک میکند.
در پایان این آموزش شما یک ربات دارید که میتواند صورت شما را ردیابی کرده و به دنبال آن حرکت کند. شما میتوانید از این بازار های ضبط ویدئو های خود استفاده کنید. زیرا ربات ما طوری حرکت میکند که صورت شما دقیقا در وسط صفحه قرار گیرد. تمام تلاش ما این بوده است که این پروژه به ساده ترین شکل ممکن کار کند. هر کس با حداقل آگاهی در مورد سخت افزار یا کدنویسی میتواند این پروژه را راه اندازی کند.
پیشنهاد میکنم پروژه ربات انسان نما با آردوینو را مشاهده کنید.
در انتهای مطلب فیلم عملکرد پروژه و توضیحات کامل کد پروژه را مشاهده میکنید.
چاپ سه بعدی قطعات (اختیاری)
برای کج کردن تلفن همراه، به برخی ساختارهای مکانیکی مانند نگهدارنده موبایل و چند براکت سروو نیاز داریم. می توانید از یک مقوا برای ساخت آن استفاده کنید، اما ما از چاپگر سه بعدی استفاده کردیم.
چاپ سه بعدی ابزاری شگفت انگیز است که می تواند در ساخت و آزمایش پروژه ها با طرح های مکانیکی کمک شایانی کند. اگر به چاپگر 3 بعدی دسترسی دارید، می توانید از فایل های چاپ سه بعدی در انتهای مطلب قرار گرفته اند استفاده کنید و قطعات خود را چاپ کنید. ما برای چاپ پرونده های STL از نرم افزاری به نام Cura استفاده می کنیم. تنظیماتی که ما برای چاپ مواد استفاده کرده ایم در زیر آورده شده است که می توانید از همان استفاده کنید یا آنها را بر اساس چاپگر خود تغییر دهید.
پس از چاپ تمام مواد مورد نیاز می توانید با استفاده از پیچ ها و مقداری چسب، آنها را در موقعیت خود محکم کنید. پس از پایان مونتاژ، قطعات شما باید چیزی شبیه به تصویر زیر باشد.
مدار ربات دنبال کننده صورت با آردوینو
مدار پروژه ردیابی چهره با آردوینو و تلفن هوشمند در تصویر زیر نشان داده شده است.
همانطور که در شماتیک مدار دیده میشود، مدار ما دارای 2 سروو موتور است. یکی برای جابجایی تلفن به سمت چپ و راست است و دیگری برای تنظیم شیب تلفن همراه است. جهت حرکت سروو موتور توسط آردوینو نانو کنترل میشود. اطلاعات حرکت نیز توسط ماژول بلوتوث Hc 05 در اختیار Arduino قرار میگیرند. تمام مدار نیز با یک باتری 9 ولت تغذیه میشود. این مدار را می توان به راحتی بر روی برد بورد متصل کرد.
قطعات مورد نیاز
- آردوینو نانو
- موتور سروو SG90 -دو عدد
- ماژول بلوتوث HC-05 / HC-06
- باتری 9 ولت
تنظیمات برنامه اندروید تشخیص چهره
همانطور که قبلاً گفتیم مغز اصلی این پروژه برنامه Android است. این برنامه اندرویدی با استفاده از پردازش اندروید (Processing Android) توسعه یافته است. می توانید مستقیماً این برنامه را بر روی تلفن همراه خود نصب کرده و با دنبال کردن مراحل زیر آن را راه اندازی کنید.
- فایل APK را در انتهای صفحه بارگیری کنید.
- مدار را روشن کنید.
- در تنظیمات تلفن خودماژول بلوتوث با نام “HC-05” را جستجو کنید. (اگر نام ماژول خود را تغییر داده اید، نام آن را دوباره به HC-05 تغییر دهید.)
- به ماژول بلوتوث خود متصل شوید. در صورت درخواست رمز 000 و 1234 را امتحان کنید.
- شما باید تصویر دوربین خود را در صفحه ببینید و همچنین در بالای صفحه عبارت Connected to : HC-05 را مشاهده کنید.
- دوربین خود را جرکت دهید، باید مربع سبزی را روی چهره روبروی توسط دوربین مشاهده کنید.
می توانید با آوردن پیشرفتهای زیادی که نیازی به رمزگذاری برنامه Android خودتان نیستید ، این پروژه ردیابی چهره Arduino را به سطح بعدی برسانید. ایجاد یک برنامه اندرویدی ممکن است دشوار به نظر برسد اما با کمک پردازش به من اعتماد کنید که می توانید در هیچ زمان یادگیری آن را یاد بگیرید. كد پردازش كامل كه براي ساخت اين برنامه استفاده مي شود را مي توان در اينجا بارگذاري كرد. شما می توانید با خلاقیت خود پیشرفت کنید. برای کسب اطلاعات بیشتر در مورد پردازش ، پروژه های زیر را بررسی کنید:
کد پروژه ردیابی چهره با آردوینو
برنامه Android چهره و موقعیت آن را روی صفحه نمایش تشخیص می دهد. سپس تصمیم می گیرد که بر اساس موقعیت صورت، سروو ها باید به چه جهتی حرکت کنند. سپس این اطلاعات به آردوینو فرستاده میشوند تا سروو ها به حرکت در آیند.
برنامه آردوینو برای این پروژه نسبتاً ساده است، فقط باید بر اساس مقادیر دریافت شده از ماژول بلوتوث، مسیر دو موتور سروو را کنترل کنیم. کد کامل را می توانید در انتهای این آموزش دریافت کنید. در اینجا چند خط مهم از کد Arduino را توضیح میدهیم.
در کد زیر اتصال سریال با پین D12 به عنوان RX و D11 به عنوان TX برقرار می شود. از این رو پین D12 باید به TX ماژول بلوتوث و پین D11 به RX ماژول بلوتوث وصل شود.
SoftwareSerial cam_BT(12, 11); // RX, TX
سپس ماژول بلوتوث را با نرخ باود 9600 راه اندازی میکنیم. اطمینان حاصل کنید که ماژول نیز با همان نرخ baud کار می کند. در غیر این صورت آن را تغییر دهید.
cam_BT.begin(9600); //نرخ باود 9600 cam_BT.println("Ready to take commands");
در خط زیر میگوییم آردوینو اطلاعات به دست آمده از گوشی را بخواند. همچنین این داده ها در متغیر “BluetoothData” ذخیره میشوند.
if (cam_BT.available()) //دستور خواندن اطلاعات دریافتی { BluetoothData=cam_BT.read(); Serial.print("Incoming from BT:"); Serial.println(BluetoothData); }
براساس داده های دریافت شده از بلوتوث جهت حرکت موتور کنترل می شود. برای چرخاندن یک موتور به سمت چپ، از مقدار قبلی موتور 2 عدد کاسته میشود. اگر نیاز دارید ربات شما سریع تر حرکت کند این مقدار را تغییر دهید.
if (BluetoothData==49) //چرخش به چپ {pos1+=2; servo1.write(pos1);} if (BluetoothData==50) //چرخش به راست {pos1-=2; servo1.write(pos1);} if (BluetoothData==51) //چرخش به بالا {pos2-=2; servo2.write(pos2);} if (BluetoothData==52) //چرخش به پایین {pos2+=2; servo2.write(pos2);}
پس از آماده کردن مدار و بارگذاری برنامه در آردوینو، نرم افزار را باز کنید. برنامه به طور خودکار به ماژول بلوتوث با نام Hc-05 متصل میشود و منتظر میماند تا چهره ای بیابد و آن را شناسایی کند. سپس میتوانید چهره خود یا عکس چهره ای را جلوی دوربین قرار دهید تا آن را شناسایی کند. سپس میتوانید حرکت کنید یا عکس را حرکت دهید تا ببینید ربات چطور به دنبال چهره حرکت میکند.
موارد موجود در فایل : سورس کامل ، شماتیک پروژه ، نرم افزار اندروید
برای دانلود فایل ها باید حساب کاربری داشته باشید ثبت نام / ورود
شما اگر پروژه رو تست نمی کنید چرا در سایت قرار می دید. واقعا که شما خودتون یک بار این پروژه رودرست کنید، نرم افزار تصویر رو وارونه نشون میده، کدی به بلوتوث ارسال نمی کنه.
من خیلی از پروژه های شما رو دیدم که ترجمه شده هست؛ شاید مطالبی که ترجمه می کنید، مطالب پرت و در پیتی باشن لطفا این کار رو نکنید اونم شمایی که انقدر دوره های اموزشی خوبی دارید.
سلام عزیز
اکثر پروژه های سایت ترجمه شده هستند و به دلیل مشغله وقت برای تست کردن نیست
فیلم عملکرد دارند و پروژه ها عمل میکنند
سعی میکنیم از این به بعد تست کنیم
سلام این پروژه توسط شما تست شده ؟
من این مدار رو بستم ولی اپ موبایلش مشکل داره تصویر رو وارونه نشون میده و هیچ کدی به ماژول بلوتوث ارسال نمیکنه
ممنون میشم راهنمایی کنید من این پروژه رو برای کارشناسیم انتخاب کردم باید ازش جواب بگیرم
سلام عزیز
این پروژه ترجمه شده هست ما تست نکردیم
سلام یه سوال
این فقط با همون برنامه اندروید کار میکنه
مثلا برای دوربین نرم افزار هایی مثل تلگرام یا اینستا کار میکنه؟
سلام جناب، فقط با برنامه خاص پروژه کار میکند.
ببخشید هر چی می گردم توی نرم افزار پراسسینگ همچین کتابخونه هایی نمی بینم.لطفا راهنماییم کنید خیلی نیاز دارم.خیلی ممنون می شم جواب بدین.
سلام مجدد.ببخشید زحمتتون دادم.کتابخونه رو از کجا باید نصب کنم؟ ممنون
می شه لطفا بگین این ارور برای چیه؟ ممنون می شم.اخه خیلی برام مهمه
کتابخانه های مورد نیاز رو باید نصب کنید.
فایل AndroidManifest.xml برای چیه؟ با تشکر فراوان از شما و سایت عالیتون
سلام.کد پراسسینگ ارور می ده.No library found for android.content
No library found for android.os
No library found for android.os
No library found for android.bluetooth
No library found for android.view
The type android.content.Intent cannot be resolved. It is indirectly referenced from required .class files
سلام.هر کاری می کنم فایل توی گوشی من باز نمی شه.می شه راهماییم کنید؟ ممنون
سلام جناب. دوباره دانلود کنید و فایل رو با نرم افزار WinRAR باز کنید (RAR).
سلام.ببخشید برای اینکه من با ماژول دوربین ov7670 و اردوینو بتونم همین تشخیص چهره رو انجام بدم باید چه کار کنم؟ ممنون از سایت عالیتون
سلام.ببخشید چطور می شه این پروژه رو با ماژول دوربین ov7670 انجام داد؟ با تشکر
سلام.ببخشید پاسخ شما به سوال من اینجا نیومد ولی در بخش اخرین نظرات مطالب دیگه سایت هست.چرا اینجوری شده؟
سلام.ببخشید من می خوام وقتی چهره تشخیص داده شد یک ال ای دی روشن بشه.برای این کار باید باید چی کار کنم؟ ممنون
سلام جناب. در قسمت چرخش به چپ و راست با دستور digitalWrite ال ای دی مورد نظرتون رو کنترل کنید.
درود و خدا قوت
برنامه اندروید با چه زبانی نوشته شده است ؟
آیا سورس برنامه اندروید هم در زمینه پروژه است ؟
سلام جناب. برنامه اندروید با Processing نوشته شده و سورس برنامه هم در فایل دانلودی موجود هست.