ربات خانگی. ربات کوچک خانگی. با این مجموعه چه چیزی می توان مطرح کرد

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

مطمئناً، پس از تماشای فیلم های مربوط به ربات ها، بیش از یک بار می خواستید رفیق خود را بسازید، اما نمی دانستید از کجا شروع کنید. البته، شما قادر به ساخت یک ترمیناتور دو پا نخواهید بود، اما ما برای این نیز تلاش نمی کنیم. جمع آوری کنید ربات سادههر کسی که می داند چگونه آهن لحیم کاری را به درستی در دستان خود نگه دارد، می تواند این کار را انجام دهد، و این نیازی به دانش عمیق ندارد، اگرچه آنها دخالتی نخواهند کرد. رباتیک آماتور تفاوت چندانی با مدار ندارد، بلکه بسیار جالب تر است، زیرا حوزه هایی مانند مکانیک و برنامه نویسی نیز در اینجا تحت تأثیر قرار می گیرند. همه اجزا به راحتی در دسترس هستند و گران نیستند. بنابراین پیشرفت متوقف نمی شود و ما از آن به نفع خود استفاده خواهیم کرد.

معرفی

بنابراین. ربات چیست؟ در اکثر موارد اینطور است دستگاه اتوماتیککه به هر عملی واکنش نشان می دهد محیط... ربات ها را می توان توسط انسان کنترل کرد یا اقدامات از پیش برنامه ریزی شده را انجام داد. به طور معمول، یک ربات به انواع حسگرها (فاصله، زاویه چرخش، شتاب)، دوربین های ویدئویی، دستکاری کننده ها مجهز است. بخش الکترونیکی ربات متشکل از یک میکروکنترلر (MC) است - یک ریز مدار که شامل یک پردازنده، یک ژنراتور ساعت، تجهیزات جانبی مختلف، دسترسی تصادفی و حافظه دائمی است. در دنیا وجود دارد مقدار زیادیانواع میکروکنترلر برای مناطق مختلفاپلیکیشن ها و بر اساس آن ها می توانید ربات های قدرتمند را جمع آوری کنید. برای ساختمان های آماتورمیکروکنترلرهای AVR به طور گسترده مورد استفاده قرار می گیرند. آنها امروزه در دسترس ترین هستند و در اینترنت می توانید نمونه های زیادی بر اساس این MK پیدا کنید. برای کار با میکروکنترلرها باید بتوانید به صورت اسمبلی یا C برنامه نویسی کنید و دانش اولیه الکترونیک دیجیتال و آنالوگ را داشته باشید. ما از C در پروژه خود استفاده خواهیم کرد. برنامه نویسی برای MK تفاوت چندانی با برنامه نویسی در رایانه ندارد، نحو زبان یکسان است، بیشتر توابع عملاً یکسان هستند و موارد جدید یادگیری بسیار آسان و استفاده راحت هستند.

آنچه ما نیاز داریم

برای شروع، ربات ما قادر خواهد بود به سادگی موانع را دور بزند، یعنی رفتار طبیعی بیشتر حیوانات در طبیعت را تکرار کند. تمام چیزهایی که برای ساختن چنین رباتی نیاز داریم را می توان در فروشگاه های رادیویی پیدا کرد. ما تصمیم خواهیم گرفت که رباتمان چگونه حرکت کند. من فکر می کنم موفق ترین مسیرهایی هستند که در تانک ها استفاده می شوند، این راحت ترین راه حل است، زیرا مسیرها توانایی عبور و مرور بیشتری نسبت به چرخ های وسیله نقلیه دارند و برای کنترل راحت تر هستند (برای چرخاندن، آن برای چرخاندن مسیرها در جهات مختلف کافی است). بنابراین، به هر مخزن اسباب‌بازی با مسیرهایی که مستقل از یکدیگر می‌چرخند نیاز دارید، می‌توانید آن را در هر فروشگاه اسباب‌بازی با قیمت مناسب خریداری کنید. از این مخزن فقط به یک پلت فرم با آهنگ و موتور با گیربکس نیاز دارید، بقیه را می توانید با خیال راحت باز کنید و دور بیندازید. ما همچنین به یک میکروکنترلر نیاز داریم ، انتخاب من روی ATmega16 افتاد - دارای پورت های کافی برای اتصال سنسورها و لوازم جانبی است و به طور کلی بسیار راحت است. شما همچنین باید برخی از قطعات رادیویی، یک آهن لحیم کاری، یک مولتی متر بخرید.

ساخت تابلو با MK

در مورد ما، میکروکنترلر وظایف مغز را انجام می دهد، اما ما با آن شروع نمی کنیم، بلکه با منبع تغذیه مغز ربات شروع می کنیم. تغذیه مناسب- تضمین سلامت، بنابراین ما با نحوه تغذیه صحیح ربات خود شروع می کنیم، زیرا این اشتباه معمولاً ربات سازان مبتدی است. و برای اینکه ربات ما به طور معمول کار کند، باید از تثبیت کننده ولتاژ استفاده کنید. من ریز مدار L7805 را ترجیح می دهم - برای ارائه ولتاژ پایدار 5 ولت در خروجی طراحی شده است، چیزی که میکروکنترلر ما به آن نیاز دارد. اما با توجه به اینکه افت ولتاژ روی این میکرو مدار حدود 2.5 ولت است، باید حداقل 7.5 ولت به آن تغذیه شود. همراه با این تثبیت کننده، از خازن های الکترولیتی برای صاف کردن موج های ولتاژ استفاده می شود و یک دیود باید در مدار قرار داده شود تا در برابر معکوس شدن قطبیت محافظت کند.

اکنون می توانیم با میکروکنترلر خود مقابله کنیم. کیس MK DIP است (به این ترتیب لحیم کاری راحت تر است) و دارای چهل پین است. روی هواپیما یک ADC، PWM، USART و موارد دیگر وجود دارد که فعلا از آنها استفاده نخواهیم کرد. چندین مورد را در نظر بگیرید گره های مهم... پایه RESET (پایه نهم MK) توسط مقاومت R1 به سمت "به علاوه" منبع تغذیه کشیده می شود - این باید انجام شود! در غیر این صورت، MK شما ممکن است ناخواسته بازنشانی شود یا به عبارتی باگ شود. همچنین یک اقدام مطلوب، اما نه اجباری، اتصال RESET از طریق خازن سرامیکی C1 به زمین است. در نمودار، الکترولیت 1000 uF را نیز مشاهده می کنید، در هنگام کار موتورها از افت ولتاژ صرفه جویی می کند، که همچنین تأثیر مفیدی بر عملکرد میکروکنترلر خواهد داشت. کریستال کوارتز X1 و خازن های C2, C3 باید تا حد امکان نزدیک به پین ​​های XTAL1 و XTAL2 قرار گیرند.

من در مورد نحوه فلش کردن MK صحبت نمی کنم، زیرا می توانید در مورد آن در اینترنت بخوانید. ما برنامه را به زبان C خواهیم نوشت؛ من CodeVisionAVR را به عنوان محیط برنامه نویسی انتخاب کردم. این یک محیط بسیار راحت و مفید برای مبتدیان است، زیرا دارای یک جادوگر داخلی برای ایجاد کد است.

کنترل موتور

یک جزء به همان اندازه مهم در ربات ما، محرک موتور است که کنترل آن را برای ما آسان‌تر می‌کند. هرگز و تحت هیچ شرایطی موتورها را مستقیماً به MK وصل نکنید! به طور کلی، بارهای قدرتمند را نمی توان مستقیماً از میکروکنترلر کنترل کرد، در غیر این صورت می سوزد. از ترانزیستورهای کلیدی استفاده کنید. برای مورد ما، یک میکرو مدار ویژه وجود دارد - L293D. در چنین پروژه های ساده، همیشه سعی کنید از این ریزمدار خاص با شاخص "D" استفاده کنید، زیرا دارای دیودهای داخلی برای محافظت در برابر اضافه بار است. کارکرد این ریز مدار بسیار آسان است و به راحتی می توان آن را از فروشگاه های رادیویی تهیه کرد. در دو بسته DIP و SOIC موجود است. ما از بسته DIP به دلیل سهولت نصب برد استفاده خواهیم کرد. L293D دارای منبع تغذیه جداگانه برای موتورها و منطق است. بنابراین، ما خود ریز مدار را از تثبیت کننده (ورودی VSS) و موتورها را مستقیماً از باتری ها (ورودی VS) تغذیه می کنیم. L293D می تواند بار 600 میلی آمپر در هر کانال را تحمل کند و دو تا از این کانال ها را دارد، یعنی دو موتور را می توان به یک میکرو مدار متصل کرد. اما برای ایمن کردن آن، کانال ها را ترکیب می کنیم و سپس برای هر موتور یک میکرون نیاز داریم. از این رو L293D قادر به مقاومت در برابر 1.2 A خواهد بود. برای رسیدن به این هدف، همانطور که در نمودار نشان داده شده است، باید پایه های Micra را ترکیب کنید. ریز مدار به شرح زیر عمل می کند: وقتی یک "0" منطقی به IN1 و IN2 اعمال می شود و یک واحد منطقی به IN3 و IN4 اعمال می شود، موتور در یک جهت می چرخد ​​و اگر سیگنال ها معکوس شوند، یک صفر منطقی اعمال می شود، سپس موتور شروع به چرخش در جهت دیگر می کند. پین های EN1 و EN2 وظیفه روشن کردن هر کانال را بر عهده دارند. ما آنها را وصل می کنیم و آنها را به "پلاس" منبع تغذیه از تثبیت کننده متصل می کنیم. از آنجایی که ریز مدار در حین کار گرم می شود و نصب رادیاتورها برای این نوع موارد مشکل ساز است ، اتلاف گرما توسط پایه های GND تأمین می شود - بهتر است آنها را در یک منطقه تماس گسترده لحیم کنید. این تمام چیزی است که برای اولین بار باید در مورد درایورهای موتور بدانید.

سنسورهای مانع

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


سیستم عامل ربات

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

#عبارتند از
#عبارتند از

خطوط زیر مشروط هستند زیرا مقادیر PORTC به نحوه اتصال درایور موتور به میکروکنترلر بستگی دارد:

PORTC.0 = 1; PORTC.1 = 0; PORTC.2 = 1; PORTC.3 = 0; مقدار 0xFF به این معنی است که خروجی ثبت خواهد شد. "1"، و 0x00 - ورود به سیستم. "0". با ساخت زیر بررسی می کنیم که آیا مانعی در مقابل ربات وجود دارد و در کدام سمت قرار دارد: if (! (PINB & (1)<

اگر نور یک دیود IR به فوتو ترانزیستور برخورد کند، یک سیاهه روی پایه میکروکنترلر تنظیم می شود. "0" و ربات شروع به حرکت به سمت عقب می کند تا از مانع دور شود، سپس به دور خود می چرخد ​​تا دوباره با مانع برخورد نکند و سپس دوباره به جلو می رود. از آنجایی که ما دو سنسور داریم، دو بار وجود یک مانع را بررسی می کنیم - در سمت راست و در سمت چپ، و بنابراین می توانیم بفهمیم که مانع از کدام طرف است. دستور "delay_ms (1000)" نشان می دهد که یک ثانیه طول می کشد تا دستور بعدی اجرا شود.

نتیجه

من بیشتر جنبه هایی را پوشش داده ام که به شما در ساختن اولین ربات کمک می کند. اما روباتیک به همین جا ختم نمی شود. اگر این ربات را بسازید، فرصت های زیادی برای گسترش آن خواهید داشت. می‌توانید الگوریتم ربات را بهبود ببخشید، مثلاً اگر مانع از طرفی نباشد، بلکه مستقیماً جلوی روبات باشد، چه کاری انجام دهید. همچنین نصب یک رمزگذار ضرری ندارد - یک دستگاه ساده که به شما کمک می کند موقعیت ربات خود را در فضا به طور دقیق تعیین کنید و بدانید. برای وضوح، امکان نصب یک نمایشگر رنگی یا تک رنگ وجود دارد که می تواند اطلاعات مفیدی را نشان دهد - سطح شارژ باتری، فاصله تا یک مانع، اطلاعات مختلف اشکال زدایی. بهبود سنسورها نیز ضرری نخواهد داشت - نصب TSOP (این گیرنده های IR هستند که سیگنال را فقط با فرکانس خاصی درک می کنند) به جای فوتوترانزیستورهای معمولی. علاوه بر سنسورهای مادون قرمز، سنسورهای اولتراسونیک نیز وجود دارد، آنها گران تر هستند و همچنین بدون اشکال نیستند، اما اخیراً در بین مهندسان رباتیک محبوبیت پیدا کرده اند. برای اینکه ربات بتواند به صدا پاسخ دهد، نصب میکروفون های تقویت شده خوب است. اما نکته بسیار جالب، به نظر من، نصب دوربین و برنامه ریزی بر اساس بینایی ماشین است. مجموعه ای از کتابخانه های OpenCV ویژه وجود دارد که با آنها می توانید تشخیص چهره، حرکت با چراغ های رنگی و بسیاری چیزهای جالب دیگر را برنامه ریزی کنید. همه چیز فقط به تخیل و مهارت شما بستگی دارد.

لیست اجزاء:

    ATmega16 در بسته DIP-40>

    L7805 در بسته بندی TO-220

    L293D در بسته بندی DIP-16 х2 عدد.

    مقاومت 0.25 وات با مقادیر اسمی: 10 کیلو اهم x1 عدد، 220 اهم x4 عدد.

    خازن های سرامیکی: 0.1 μF، 1 μF، 22 pF

    خازن های الکترولیتی: 1000 uF x 16 V، 220 uF x 16V x 2 عدد.

    دیود 1N4001 یا 1N4004

    تشدید کننده کریستالی در 16 مگاهرتز

    دیودهای IR: هر دو دیود انجام می دهند.

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

کد سیستم عامل:

/**************************************************** ** سیستم عامل برای ربات MK نوع: ATmega16 فرکانس ساعت: 16.000000 مگاهرتز اگر فرکانس کوارتز متفاوتی دارید، باید این را در تنظیمات محیط مشخص کنید: Project -> Configure -> Tab "C Compiler" ****** *********************************************** / #عبارتند از #عبارتند از void main (void) (// راه اندازی پورت ها برای ورودی // از طریق این پورت ها سیگنال هایی را از حسگرهای DDRB = 0x00 دریافت می کنیم؛ // مقاومت های pull-up را روشن کنید PORTB = 0xFF؛ // پورت ها را برای خروجی تنظیم کنید // از این طریق پورت ها را کنترل می کنیم موتورهای DDRC = 0xFF؛ // حلقه اصلی برنامه. در اینجا مقادیر را از حسگرها می خوانیم // و موتورها را در حالی که (1) کنترل می کنیم (// به جلو PORTC.0 = 1؛ PORTC. 1 = 0؛ PORTC.2 = 1؛ PORTC.3 = 0؛ اگر (! (PINB & (1<درباره ربات من

در حال حاضر ربات من تقریباً کامل شده است.


دارای دوربین بی سیم، سنسور فاصله (هم دوربین و هم این سنسور بر روی برج دوار نصب شده اند)، یک سنسور مانع، یک رمزگذار، یک گیرنده سیگنال از کنترل از راه دور و یک رابط RS-232 برای اتصال به کامپیوتر. . این دوربین در دو حالت کار می کند: خودکار و دستی (سیگنال های کنترلی را از کنترل از راه دور دریافت می کند)، همچنین دوربین می تواند از راه دور یا توسط خود ربات روشن / خاموش شود تا در مصرف باتری صرفه جویی شود. در حال نوشتن فریمور برای امنیت آپارتمان (انتقال تصویر به کامپیوتر، تشخیص حرکت، دور زدن اتاق) هستم.

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

شما یک ربات بسیار زیرک و متحرک خواهید داشت که بسته به روش اتصال ریز مدار با موتورها و فتوسل ها، در تاریکی پنهان می شود یا به سمت نور حرکت می کند یا از نور فرار می کند یا در جستجوی نور حرکت می کند.

حتی می توانید کاری کنید که ربات هوشمند خود فقط از یک خط روشن یا برعکس یک خط تیره پیروی کند، یا می توانید کاری کنید که ربات کوچک دست شما را دنبال کند - فقط چند LED روشن به مدار آن اضافه کنید!

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

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

1. باتری 2 و یک مورد برای آنها.

2. دو موتور (هر کدام 1.5 ولت).

3. 2 سوئیچ SPDT;

4. 3 منگنه;

4. یک توپ پلاستیکی با سوراخ.

5. یک تکه کوچک سیم جامد.

مراحل ساخت ربات خانگی:

1. یک تکه سیم را به 13 قسمت هر کدام شش سانتی متر برش دهید و هر کدام را از دو طرف 1 سانتی متر در معرض دید قرار دهید.

با یک آهن لحیم کاری، ما 3 سیم را به کلیدهای SPDT و 2 سیم را به موتورها وصل می کنیم.

2. حالا یک کیس برای باتری ها می گیریم که در یک طرف آن دو سیم چند رنگ (به احتمال زیاد مشکی و قرمز) از آن خارج شده است. باید سیم دیگری را به طرف دیگر کیس لحیم کنیم.

اکنون باید قاب باتری را باز کنید و هر دو سوئیچ SPDT را با سیم V شکل لحیم شده به پهلو بچسبانید.

3. بعد از آن در دو طرف بدنه باید موتورها را چسب بزنید تا به سمت جلو بچرخند.

سپس یک گیره بزرگ برمیداریم و خمش میکنیم. گیره کاغذ خم نشده را از سوراخ سوراخ توپ پلاستیکی می کشیم و انتهای گیره کاغذ را به موازات یکدیگر صاف می کنیم. انتهای گیره کاغذ را به ساختار خود می چسبانیم.

4. چگونه یک ربات خانگی بسازیم تا بتواند واقعاً از موانع جلوگیری کند؟ مهم است که تمام سیم های نصب شده را همانطور که در عکس نشان داده شده است لحیم کنید.

5. ما آنتن ها را از گیره های کاغذ خم نشده می سازیم و آنها را به سوئیچ های SPDT می چسبانیم.

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

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

چگونه می توانید با اصول رفتاری خاص یک ربات بسازید؟یک کلاس کامل از چنین ربات هایی با استفاده از فناوری BEAM ایجاد می شود که اصول معمول رفتار آن بر اساس به اصطلاح "دریافت نور" است. در پاسخ به تغییرات در شدت نور، چنین مینی روباتی کندتر یا برعکس، سریعتر حرکت می کند (فتوکینزیس).

برای ساخت رباتی که حرکت آن از نور یا به سمت نور است و در اثر واکنش فوتوتاکسی ایجاد می شود، به دو حسگر نوری نیاز داریم. واکنش فوتوتاکسی به صورت زیر ظاهر می شود: اگر نور به یکی از حسگرهای نور ربات BEAM برخورد کند، موتور الکتریکی مربوطه روشن می شود و ربات به سمت منبع نور می چرخد.

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

چگونه رباتی بسازیم که یک دست را دنبال می کند؟برای انجام این کار، مینی ربات ما باید نه تنها به سنسور، بلکه به LED نیز مجهز باشد. LED ها نور ساطع می کنند و ربات به نور منعکس شده پاسخ می دهد. اگر کف دست خود را در مقابل یکی از سنسورها قرار دهیم، مینی ربات در جهت خود می چرخد.

اگر کف دست خود را کمی از حسگر مربوطه دور کنید، ربات "اطاعتانه" کف دست را دنبال می کند. برای اینکه نور منعکس شده به وضوح توسط ترانزیستورهای فوتو گرفته شود، LED های نارنجی یا قرمز روشن (بیش از 1000 mCd) را برای ساخت ربات انتخاب کنید.

بر کسی پوشیده نیست که هر سال بر تعداد سرمایه گذاری ها در زمینه رباتیک افزوده می شود، نسل های جدیدی از ربات ها در حال ایجاد هستند، با توسعه فناوری های تولید، فرصت های جدیدی برای ایجاد و استفاده از ربات ها پدیدار می شود و استادان با استعداد خود آموخته می شوند. همچنان جهان را با اختراعات جدید خود در زمینه رباتیک شگفت زده می کنند.

حسگرهای نوری داخلی به نور واکنش نشان می‌دهند و به سمت منبع هدایت می‌شوند و حسگرها مانعی را در راه تشخیص می‌دهند و ربات تغییر جهت می‌دهد. برای ساختن چنین ربات ساده ای با دستان خود، نیازی به داشتن "هفت دهانه در پیشانی" و تحصیلات فنی عالی ندارید. کافی است تمام قطعات لازم را برای ایجاد یک ربات خریداری کنید (و برخی از قطعات را می توانید پیدا کنید) و به تدریج همه ریز مدارها، سنسورها، حسگرها، سیم ها و موتورها را به هم وصل کنید.

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

در بالای سر مسواک، یک تکه نوار دو طرفه و در بالا - یک موتور ویبره بچسبانید. تنها با نصب یک باتری تخت در کنار موتور ویبره، منبع تغذیه مینی روبات را تامین می کنیم. همه چيز! ربات ما آماده است - به دلیل لرزش، ربات روی موها به جلو حرکت می کند.

♦ کلاس کارشناسی ارشد برای "خودکارهای پیشرفته": روی عکس کلیک کنید

♦ درس های ویدیویی برای مبتدیان:

حتی کسانی که به تازگی آهن لحیم کاری را برداشته اند می توانند ساده ترین ربات را بسازند.

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

برای "هوش مصنوعی" آینده ما نیاز داریم:

  1. ریز مدار L293D
  2. موتور الکتریکی کوچک M1 (قابل بیرون کشیدن از ماشین های اسباب بازی)
  3. فوتوترانزیستور و مقاومت 200 اهم.
  4. سیم، باتری و البته خود پلتفرم که همه اینها در آن قرار خواهد گرفت.

اگر چند LED روشن دیگر به طرح اضافه کنید، به راحتی می توانید به این نتیجه برسید که ربات به سادگی پشت دست می دود یا حتی یک خط روشن یا تاریک را دنبال می کند. ساخته ما نماینده معمولی ربات های کلاس BEAM خواهد بود. اصل رفتار چنین روبات‌هایی مبتنی بر "دریافت نور" است، یعنی نور، در این مورد، به عنوان منبع اطلاعات عمل خواهد کرد.

ربات ما با برخورد یک پرتو نور به جلو حرکت می کند. این رفتار دستگاه "فتوکینزیس" نامیده می شود - افزایش یا کاهش بی جهت در تحرک در پاسخ به تغییرات در سطوح نور.

در دستگاه ما، همانطور که در بالا ذکر شد، یک ترانزیستور نوری n-p-n از ساختار PTR-1 به عنوان حسگر نور استفاده شد. در اینجا می توانید نه تنها از یک ترانزیستور نوری، بلکه از یک مقاومت نوری یا فوتودیود نیز استفاده کنید، زیرا اصل کار برای همه عناصر یکسان است.

شکل بلافاصله نمودار سیم کشی ربات را نشان می دهد. اگر هنوز به اندازه کافی با نمادهای فنی آشنا نیستید، بر اساس این نمودار، درک اصول تعیین و اتصال عناصر به یکدیگر آسان خواهد بود.

GND. سیم های اتصال عناصر مختلف مدار به زمین (قطب منفی منبع تغذیه) معمولاً به طور کامل روی نمودارها نمایش داده نمی شوند. در عوض، یک خط تیره کوچک برای نشان دادن اتصال زمین کشیده می شود. گاهی اوقات، در کنار خط تیره می نویسند "GND" - از انگلیسی. کلمات "زمین" - زمین.

Vcc. این نام نشان می دهد که از طریق این قسمت مدار به منبع تغذیه وصل شده است - قطب مثبت! گاهی اوقات بر روی نمودارها، به جای این حروف، اغلب رتبه بندی فعلی نوشته می شود. در این مورد، + 5 ولت.

اصل ربات.

هنگامی که یک پرتو نور به فوتو ترانزیستور برخورد می کند (در نمودار به صورت PRT1 نشان داده شده است)، یک سیگنال مثبت در خروجی ریزمدار INPUT1 ظاهر می شود که باعث می شود موتور M1 کار کند. برعکس، هنگامی که پرتو نور روشن کردن ترانزیستور فوتو را متوقف می کند، سیگنال در خروجی ریزمدار INPUT1 ناپدید می شود، بنابراین، موتور متوقف می شود.

مقاومت R1 در این مدار برای جبران جریان عبوری از فوتوترانزیستور طراحی شده است. مقدار اسمی مقاومت 200 اهم است - البته، می توانید مقاومت ها را در اینجا با اندازه های دیگر لحیم کنید، اما باید به خاطر داشت که حساسیت فوتو ترانزیستور و در نتیجه عملکرد خود ربات به مقدار اسمی بستگی دارد.

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

به طور خلاصه، در این مدار نباید از مقاومت هایی با مقاومت کمتر از 100 اهم استفاده کنید، در غیر این صورت ممکن است فوتوترانزیستور به سادگی بیش از حد گرم شود و از کار بیفتد.

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

مطمئناً، پس از تماشای فیلم های مربوط به ربات ها، بیش از یک بار می خواستید رفیق خود را بسازید، اما نمی دانستید از کجا شروع کنید. البته، شما قادر به ساخت یک ترمیناتور دو پا نخواهید بود، اما ما برای این نیز تلاش نمی کنیم. هر کسی که می داند چگونه آهن لحیم کاری را به درستی در دستان خود نگه دارد، می تواند یک ربات ساده جمع کند و این نیازی به دانش عمیق ندارد، اگرچه آنها دخالتی ندارند. رباتیک آماتور تفاوت چندانی با مدار ندارد، بلکه بسیار جالب تر است، زیرا حوزه هایی مانند مکانیک و برنامه نویسی نیز در اینجا تحت تأثیر قرار می گیرند. همه اجزا به راحتی در دسترس هستند و گران نیستند. بنابراین پیشرفت متوقف نمی شود و ما از آن به نفع خود استفاده خواهیم کرد.

معرفی

بنابراین. ربات چیست؟ در بیشتر موارد، این یک دستگاه خودکار است که به هر عملی در محیط واکنش نشان می دهد. ربات ها را می توان توسط انسان کنترل کرد یا اقدامات از پیش برنامه ریزی شده را انجام داد. به طور معمول، یک ربات به انواع حسگرها (فاصله، زاویه چرخش، شتاب)، دوربین های ویدئویی، دستکاری کننده ها مجهز است. بخش الکترونیکی ربات متشکل از یک میکروکنترلر (MC) است - یک ریز مدار که شامل یک پردازنده، یک ژنراتور ساعت، تجهیزات جانبی مختلف، دسترسی تصادفی و حافظه دائمی است. تنوع بسیار زیادی از میکروکنترلرها در زمینه های مختلف در جهان وجود دارد و بر اساس آنها می توان ربات های قدرتمندی را مونتاژ کرد. برای ساختمان های آماتور، میکروکنترلرهای AVR به طور گسترده استفاده می شود. آنها امروزه در دسترس ترین هستند و در اینترنت می توانید نمونه های زیادی بر اساس این MK پیدا کنید. برای کار با میکروکنترلرها باید بتوانید به صورت اسمبلی یا C برنامه نویسی کنید و دانش اولیه الکترونیک دیجیتال و آنالوگ را داشته باشید. ما از C در پروژه خود استفاده خواهیم کرد. برنامه نویسی برای MK تفاوت چندانی با برنامه نویسی در رایانه ندارد، نحو زبان یکسان است، بیشتر توابع عملاً یکسان هستند و موارد جدید یادگیری بسیار آسان و استفاده راحت هستند.

آنچه ما نیاز داریم

برای شروع، ربات ما قادر خواهد بود به سادگی موانع را دور بزند، یعنی رفتار طبیعی بیشتر حیوانات در طبیعت را تکرار کند. تمام چیزهایی که برای ساختن چنین رباتی نیاز داریم را می توان در فروشگاه های رادیویی پیدا کرد. ما تصمیم خواهیم گرفت که رباتمان چگونه حرکت کند. من فکر می کنم موفق ترین مسیرهایی هستند که در تانک ها استفاده می شوند، این راحت ترین راه حل است، زیرا مسیرها توانایی عبور و مرور بیشتری نسبت به چرخ های وسیله نقلیه دارند و برای کنترل راحت تر هستند (برای چرخاندن، آن برای چرخاندن مسیرها در جهات مختلف کافی است). بنابراین، به هر مخزن اسباب‌بازی با مسیرهایی که مستقل از یکدیگر می‌چرخند نیاز دارید، می‌توانید آن را در هر فروشگاه اسباب‌بازی با قیمت مناسب خریداری کنید. از این مخزن فقط به یک پلت فرم با آهنگ و موتور با گیربکس نیاز دارید، بقیه را می توانید با خیال راحت باز کنید و دور بیندازید. ما همچنین به یک میکروکنترلر نیاز داریم ، انتخاب من روی ATmega16 افتاد - دارای پورت های کافی برای اتصال سنسورها و لوازم جانبی است و به طور کلی بسیار راحت است. شما همچنین باید برخی از قطعات رادیویی، یک آهن لحیم کاری، یک مولتی متر بخرید.

ساخت تابلو با MK



مدار ربات

در مورد ما، میکروکنترلر وظایف مغز را انجام می دهد، اما ما با آن شروع نمی کنیم، بلکه با منبع تغذیه مغز ربات شروع می کنیم. تغذیه مناسب کلید سلامتی است، بنابراین ما با نحوه تغذیه صحیح ربات خود شروع می کنیم، زیرا این اشتباه معمولاً ربات سازان مبتدی است. و برای اینکه ربات ما به طور معمول کار کند، باید از تثبیت کننده ولتاژ استفاده کنید. من ریز مدار L7805 را ترجیح می دهم - برای ارائه ولتاژ پایدار 5 ولت در خروجی طراحی شده است، چیزی که میکروکنترلر ما به آن نیاز دارد. اما با توجه به اینکه افت ولتاژ روی این میکرو مدار حدود 2.5 ولت است، باید حداقل 7.5 ولت به آن تغذیه شود. همراه با این تثبیت کننده، از خازن های الکترولیتی برای صاف کردن موج های ولتاژ استفاده می شود و یک دیود باید در مدار قرار داده شود تا در برابر معکوس شدن قطبیت محافظت کند.
اکنون می توانیم با میکروکنترلر خود مقابله کنیم. کیس MK DIP است (به این ترتیب لحیم کاری راحت تر است) و دارای چهل پین است. روی هواپیما یک ADC، PWM، USART و موارد دیگر وجود دارد که فعلا از آنها استفاده نخواهیم کرد. بیایید چندین گره مهم را در نظر بگیریم. پایه RESET (پایه نهم MK) توسط مقاومت R1 به سمت "به علاوه" منبع تغذیه کشیده می شود - این باید انجام شود! در غیر این صورت، MK شما ممکن است ناخواسته بازنشانی شود یا به عبارتی باگ شود. همچنین یک اقدام مطلوب، اما نه اجباری، اتصال RESET از طریق خازن سرامیکی C1 به زمین است. در نمودار، الکترولیت 1000 uF را نیز مشاهده می کنید، در هنگام کار موتورها از افت ولتاژ صرفه جویی می کند، که همچنین تأثیر مفیدی بر عملکرد میکروکنترلر خواهد داشت. کریستال کوارتز X1 و خازن های C2, C3 باید تا حد امکان نزدیک به پین ​​های XTAL1 و XTAL2 قرار گیرند.
من در مورد نحوه فلش کردن MK صحبت نمی کنم، زیرا می توانید در مورد آن در اینترنت بخوانید. ما برنامه را به زبان C خواهیم نوشت؛ من CodeVisionAVR را به عنوان محیط برنامه نویسی انتخاب کردم. این یک محیط بسیار راحت و مفید برای مبتدیان است، زیرا دارای یک جادوگر داخلی برای ایجاد کد است.


برد ربات من

کنترل موتور

یک جزء به همان اندازه مهم در ربات ما، محرک موتور است که کنترل آن را برای ما آسان‌تر می‌کند. هرگز و تحت هیچ شرایطی موتورها را مستقیماً به MK وصل نکنید! به طور کلی، بارهای قدرتمند را نمی توان مستقیماً از میکروکنترلر کنترل کرد، در غیر این صورت می سوزد. از ترانزیستورهای کلیدی استفاده کنید. برای مورد ما، یک میکرو مدار ویژه وجود دارد - L293D. در چنین پروژه های ساده، همیشه سعی کنید از این ریزمدار خاص با شاخص "D" استفاده کنید، زیرا دارای دیودهای داخلی برای محافظت در برابر اضافه بار است. کارکرد این ریز مدار بسیار آسان است و به راحتی می توان آن را از فروشگاه های رادیویی تهیه کرد. در دو بسته DIP و SOIC موجود است. ما از بسته DIP به دلیل سهولت نصب برد استفاده خواهیم کرد. L293D دارای منبع تغذیه جداگانه برای موتورها و منطق است. بنابراین، ما خود ریز مدار را از تثبیت کننده (ورودی VSS) و موتورها را مستقیماً از باتری ها (ورودی VS) تغذیه می کنیم. L293D می تواند بار 600 میلی آمپر در هر کانال را تحمل کند و دو تا از این کانال ها را دارد، یعنی دو موتور را می توان به یک میکرو مدار متصل کرد. اما برای ایمن کردن آن، کانال ها را ترکیب می کنیم و سپس برای هر موتور یک میکرون نیاز داریم. از این رو L293D قادر به مقاومت در برابر 1.2 A خواهد بود. برای رسیدن به این هدف، همانطور که در نمودار نشان داده شده است، باید پایه های Micra را ترکیب کنید. ریز مدار به شرح زیر عمل می کند: وقتی یک "0" منطقی به IN1 و IN2 اعمال می شود و یک واحد منطقی به IN3 و IN4 اعمال می شود، موتور در یک جهت می چرخد ​​و اگر سیگنال ها معکوس شوند، یک صفر منطقی اعمال می شود، سپس موتور شروع به چرخش در جهت دیگر می کند. پین های EN1 و EN2 وظیفه روشن کردن هر کانال را بر عهده دارند. ما آنها را وصل می کنیم و آنها را به "پلاس" منبع تغذیه از تثبیت کننده متصل می کنیم. از آنجایی که ریز مدار در حین کار گرم می شود و نصب رادیاتورها برای این نوع موارد مشکل ساز است، اتلاف گرما توسط پایه های GND تامین می شود - بهتر است آنها را در یک منطقه تماس گسترده لحیم کنید. این تمام چیزی است که برای اولین بار باید در مورد درایورهای موتور بدانید.

سنسورهای مانع

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


اولین نسخه از سنسورهای ربات من

سیستم عامل ربات

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

#عبارتند از
#عبارتند از

خطوط زیر مشروط هستند زیرا مقادیر PORTC به نحوه اتصال درایور موتور به میکروکنترلر بستگی دارد:

PORTC.0 = 1;
PORTC.1 = 0;
PORTC.2 = 1;
PORTC.3 = 0;

مقدار 0xFF به این معنی است که خروجی ثبت خواهد شد. "1"، و 0x00 - ورود به سیستم. "0".

با ساخت زیر بررسی می کنیم که آیا مانعی در مقابل ربات وجود دارد و از کدام سمت است:

اگر (! (PINB & (1< {
...
}

اگر نور یک دیود IR به فوتو ترانزیستور برخورد کند، یک سیاهه روی پایه میکروکنترلر تنظیم می شود. "0" و ربات شروع به حرکت به سمت عقب می کند تا از مانع دور شود، سپس به دور خود می چرخد ​​تا دوباره با مانع برخورد نکند و سپس دوباره به جلو می رود. از آنجایی که ما دو سنسور داریم، دو بار وجود یک مانع را بررسی می کنیم - در سمت راست و در سمت چپ، و بنابراین می توانیم بفهمیم که مانع از کدام طرف است. دستور "delay_ms (1000)" نشان می دهد که یک ثانیه طول می کشد تا دستور بعدی اجرا شود.

نتیجه

من بیشتر جنبه هایی را پوشش داده ام که به شما در ساختن اولین ربات کمک می کند. اما روباتیک به همین جا ختم نمی شود. اگر این ربات را بسازید، فرصت های زیادی برای گسترش آن خواهید داشت. می‌توانید الگوریتم ربات را بهبود ببخشید، مثلاً اگر مانع از طرفی نباشد، بلکه مستقیماً جلوی روبات باشد، چه کاری انجام دهید. همچنین نصب یک رمزگذار ضرری ندارد - یک دستگاه ساده که به شما کمک می کند موقعیت ربات خود را در فضا به طور دقیق تعیین کنید و بدانید. برای وضوح، امکان نصب یک نمایشگر رنگی یا تک رنگ وجود دارد که می تواند اطلاعات مفیدی را نشان دهد - سطح شارژ باتری، فاصله تا یک مانع، اطلاعات مختلف اشکال زدایی. بهبود سنسورها نیز ضرری نخواهد داشت - نصب TSOP (این گیرنده های IR هستند که سیگنال را فقط با فرکانس خاصی درک می کنند) به جای فوتوترانزیستورهای معمولی. علاوه بر سنسورهای مادون قرمز، سنسورهای اولتراسونیک نیز وجود دارد، آنها گران تر هستند و همچنین بدون اشکال نیستند، اما اخیراً در بین مهندسان رباتیک محبوبیت پیدا کرده اند. برای اینکه ربات بتواند به صدا پاسخ دهد، نصب میکروفون های تقویت شده خوب است. اما نکته بسیار جالب، به نظر من، نصب دوربین و برنامه ریزی بر اساس بینایی ماشین است. مجموعه ای از کتابخانه های OpenCV ویژه وجود دارد که با آنها می توانید تشخیص چهره، حرکت با چراغ های رنگی و بسیاری چیزهای جالب دیگر را برنامه ریزی کنید. همه چیز فقط به تخیل و مهارت شما بستگی دارد.
لیست اجزاء:
  • ATmega16 در بسته DIP-40>
  • L7805 در بسته بندی TO-220
  • L293D در بسته بندی DIP-16 х2 عدد.
  • مقاومت 0.25 وات با مقادیر اسمی: 10 کیلو اهم x1 عدد، 220 اهم x4 عدد.
  • خازن های سرامیکی: 0.1 μF، 1 μF، 22 pF
  • خازن های الکترولیتی: 1000 uF x 16 V، 220 uF x 16V x 2 عدد.
  • دیود 1N4001 یا 1N4004
  • تشدید کننده کریستالی در 16 مگاهرتز
  • دیودهای IR: هر دو دیود انجام می دهند.
  • فوتوترانزیستورها، همچنین هر کدام، اما فقط به طول موج پرتوهای مادون قرمز واکنش نشان می دهند
کد سیستم عامل:
/*****************************************************
سیستم عامل ربات

نوع MK: ATmega16
فرکانس ساعت: 16.000000 مگاهرتز
اگر فرکانس کوارتز متفاوتی دارید، باید در تنظیمات محیط مشخص شود:
Project -> Configure -> C Compiler Tab
*****************************************************/

#عبارتند از
#عبارتند از

اصلی خالی (باطل)
{
// پورت ها را برای ورودی پیکربندی کنید
// از طریق این پورت ها سیگنال هایی از سنسورها دریافت می کنیم
DDRB = 0x00;
// مقاومت های pull-up را روشن کنید
PORTB = 0xFF;

// پورت ها را برای خروجی تنظیم کنید
// از طریق این پورت ها موتورها را کنترل می کنیم
DDRC = 0xFF;

// حلقه اصلی برنامه. در اینجا مقادیر را از سنسورها می خوانیم
// و موتورهای درایو
در حالی که (1)
{
// بریم جلو
PORTC.0 = 1;
PORTC.1 = 0;
PORTC.2 = 1;
PORTC.3 = 0;
اگر (! (PINB & (1< {
// 1 ثانیه به عقب برگردید
PORTC.0 = 0;
PORTC.1 = 1;
PORTC.2 = 0;
PORTC.3 = 1;
delay_ms (1000);
// بسته بندی کردن
PORTC.0 = 1;
PORTC.1 = 0;
PORTC.2 = 0;
PORTC.3 = 1;
delay_ms (1000);
}
اگر (! (PINB & (1< {
// 1 ثانیه به عقب برگردید
PORTC.0 = 0;
PORTC.1 = 1;
PORTC.2 = 0;
PORTC.3 = 1;
delay_ms (1000);
// بسته بندی کردن
PORTC.0 = 0;
PORTC.1 = 1;
PORTC.2 = 1;
PORTC.3 = 0;
delay_ms (1000);
}
};
}

درباره ربات من

در حال حاضر ربات من تقریباً کامل شده است.


دارای دوربین بی سیم، سنسور فاصله (هم دوربین و هم این سنسور بر روی برج دوار نصب شده اند)، یک سنسور مانع، یک رمزگذار، یک گیرنده سیگنال از کنترل از راه دور و یک رابط RS-232 برای اتصال به کامپیوتر. . این دوربین در دو حالت کار می کند: خودکار و دستی (سیگنال های کنترلی را از کنترل از راه دور دریافت می کند)، همچنین دوربین می تواند از راه دور یا توسط خود ربات روشن / خاموش شود تا در مصرف باتری صرفه جویی شود. در حال نوشتن فریمور برای امنیت آپارتمان (انتقال تصویر به کامپیوتر، تشخیص حرکت، دور زدن اتاق) هستم.

در صورت درخواست، من یک ویدیو ارسال می کنم:

UPDمن عکس ها را دوباره بارگذاری کردم و اصلاحات جزئی در متن انجام دادم.