O'zingizning robotingizni yaratishni o'rganmoqchimisiz? O'z qo'lingiz bilan yasashingiz mumkin bo'lgan juda ko'p turdagi robotlar mavjud. Ko'pchilik robotni A nuqtadan B nuqtaga o'tishning oddiy vazifalarini bajarishini ko'rishni xohlaydi. Siz robotni analog komponentlardan butunlay yasashingiz yoki boshlang'ich to'plamini noldan sotib olishingiz mumkin! O'z robotingizni yaratish - o'zingizga elektronika va kompyuter dasturlarini o'rgatishning ajoyib usuli.
Qadamlar
6 -qismning 1 -qismi: Robotni yig'ish
Qadam 1. Komponentlaringizni yig'ing
Asosiy robotni yaratish uchun sizga bir nechta oddiy komponentlar kerak bo'ladi. Siz ushbu komponentlarning ko'pini, agar bo'lmasa ham, mahalliy elektronika sevimli mashg'ulotlari do'konida yoki bir nechta onlayn sotuvchilarda topishingiz mumkin. Ba'zi asosiy to'plamlar ushbu komponentlarning barchasini o'z ichiga olishi mumkin. Ushbu robot lehimlashni talab qilmaydi:
- Arduino Uno (yoki boshqa mikrokontroller)
- 2 ta doimiy aylanish servolari
- Servoga mos keladigan 2 ta g'ildirak
- 1 g'ildirakli rulon
- 1 ta kichik lehimsiz non taxtasi (har bir tomonida ikkita ijobiy va salbiy chiziqli non taxtasini qidiring)
- 1 masofa sensori (to'rt pinli ulagich kabeli bilan)
- 1 ta mini tugmachali kalit
- 1 10 kΩ qarshilik
- 1 USB A - B kabeli
- 1 ta ajraladigan sarlavhalar to'plami
- 9V DC quvvat ulagichi bilan 6 x AA batareya ushlagichi
- 1 to'plamli o'tish simlari yoki 22 o'lchovli ulash simlari
- Kuchli ikki tomonlama lenta yoki issiq elim
Qadam 2. Batareya to'plamini teskari o'girilib, tepaga qarating
Siz batareya to'plamini tayanch sifatida ishlatib, robotning tanasini qurasiz.
Qadam 3. Batareya to'plamining oxiridagi ikkita servolarni tekislang
Batareya to'plamining simlari chiqib ketayotganining oxiri shu bo'lishi kerakki, servolarning pastki qismiga tegib turishi kerak va har birining aylanish mexanizmlari batareya to'plamining yon tomoniga qaragan bo'lishi kerak. G'ildiraklar to'g'ri ketishi uchun servo moslashtirilgan bo'lishi kerak. Servo uchun simlar batareyaning orqa qismidan chiqib ketishi kerak.
4 -qadam. Servolarni lenta yoki elim bilan yopishtiring
Batareya paketiga mahkam yopishtirilganligiga ishonch hosil qiling. Servolarning orqa tomoni batareya to'plamining orqa tomoniga to'g'ri kelishi kerak.
Endi servo batareyalar to'plamining orqa yarmini olishi kerak
5 -qadam. Non paneli batareyaning ochiq joyiga perpendikulyar ravishda joylashtiriladi
U batareyaning old tomoniga bir oz osilgan bo'lishi kerak va u har tomondan kengayadi. Davom etishdan oldin uning mahkamlanganligiga ishonch hosil qiling. "A" qatori servolarga eng yaqin bo'lishi kerak.
Qadam 6. Arduino mikrokontrollerini servolarning yuqori qismiga ulang
Agar siz servolarni to'g'ri biriktirgan bo'lsangiz, ular tegib turadigan tekis joy bo'lishi kerak. Arduino platasini shu tekis joyga yopishtiring, shunda Arduino USB va Quvvat ulagichlari orqa tomonga (non panelidan) qaraydi. Arduino -ning old paneli faqat taxtani bir -biriga yopishtirib qo'yishi kerak.
Qadam 7. G'ildiraklarni servolarga qo'ying
G'ildiraklarni servoning aylanish mexanizmiga mahkam bosing. Bu katta kuch talab qilishi mumkin, chunki g'ildiraklar iloji boricha mahkamroq tortish uchun mo'ljallangan.
Qadam 8. G'ildirakni non taxtasining pastki qismiga mahkamlang
Agar siz shassisni ag'darib qo'ysangiz, batareya paketining yonidan o'tayotganini ko'rishingiz kerak. G'ildirakni bu kengaytirilgan qismga mahkamlang, agar kerak bo'lsa, ko'targichlardan foydalaning. G'ildirak old g'ildirak vazifasini bajaradi, bu esa robotga istalgan tomonga osongina burilish imkonini beradi.
Agar siz to'plam sotib olgan bo'lsangiz, g'ildirak erga etib borishini ta'minlash uchun foydalanishingiz mumkin bo'lgan bir nechta ko'targichlar bilan kelgan bo'lishi mumkin. i
6 -dan 2 -qism: Robotni ulash
Qadam 1. Ikkita 3-pinli sarlavhalarni uzing
Siz ularni servolarni non paneliga ulash uchun ishlatasiz. Pimlarni sarlavhadan pastga suring, shunda pinlar har ikki tomondan teng masofada chiqadi.
2-qadam. Ikkita sarlavhani non taxtasining E qatoridagi 1-3 va 6-8 pinlariga joylashtiring
Ularning mahkam o'rnatilganligiga ishonch hosil qiling.
Qadam 3. Servo kabellarni sarlavhalarga ulang, chap tomonda qora kabel (1 va 6 -pinlar)
Bu servolarni non paneliga ulaydi. Chap servo chap va o'ng servo o'ng sarlavhaga ulanganligiga ishonch hosil qiling.
Qadam 4. C2 va C7 pinlaridan qizil o'tish simlarini qizil (musbat) relsli pinlarga ulang
Non taxtasining orqa qismidagi qizil temirdan foydalanganingizga ishonch hosil qiling (shassisning qolgan qismiga yaqinroq).
Qadam 5. Qora o'tish simlarini B1 va B6 pinlaridan ko'k (erga) temir yo'l pinlariga ulang
Non taxtasining orqa tomonidagi ko'k temirdan foydalanganingizga ishonch hosil qiling. Ularni qizil temir yo'l pinlariga ulamang.
Qadam 6. Arduino -dagi 12 va 13 -pinlardan oq o'tish simlarini A3 va A8 ga ulang
Bu Arduino -ga servolarni boshqarish va g'ildiraklarni aylantirish imkonini beradi.
Qadam 7. Sensorni non taxtasining old qismiga ulang
U non panelidagi tashqi quvvat panjaralariga ulanmaydi, aksincha harfli pimlarning birinchi qatoriga (J) ulanadi. To'g'ri markazga qo'yganingizga ishonch hosil qiling, har tomondan teng miqdordagi pim bor.
Qadam 8. Qora o'tish simini I14 pinidan sensorning chap tomonidagi mavjud bo'lgan birinchi ko'k temir pinga ulang
Bu sensorni ishdan chiqaradi.
Qadam 9. I17 pinidan qizil o'tish simini sensorning o'ng tomonidagi mavjud bo'lgan birinchi qizil temir pinga ulang
Bu sensorni quvvat bilan ta'minlaydi.
10 -qadam. Oq o'tish simlarini I15 pinidan Arduino -ning 9 -pinigacha va I16 -dan 8 -pingacha ulang
Bu ma'lumotni sensordan mikrokontrollerga uzatadi.
6 -dan 3 -qism: Quvvatni ulash
Qadam 1. Paketdagi batareyalarni ko'rish uchun robotni yon tomoniga burang
Batareya to'plami kabeli pastki qismdan chapga chiqadigan qilib yo'naltiring.
Qadam 2. Qizil simni pastdan chapdan ikkinchi buloqqa ulang
Batareya to'plami to'g'ri yo'naltirilganligiga ishonch hosil qiling.
Qadam 3. Qora simni pastki o'ngdagi oxirgi buloqqa ulang
Bu ikkita kabel Arduino -ga to'g'ri kuchlanishni ta'minlashga yordam beradi.
Qadam 4. Qizil va qora simlarni non taxtasining orqa qismidagi o'ng va o'ngdagi qizil va ko'k pinlarga ulang
Qora simi 30 -pinli ko'k rangli temir yo'l piniga ulangan bo'lishi kerak.
Qadam 5. Arduino -dagi GND pinidan qora simni orqa ko'k yo'lakka ulang
Uni ko'k yo'lda 28 -pin bilan ulang.
Qadam 6. Qora simni orqa ko'k yo'ldan oldingi ko'k yo'lakka har birining 29 -pinida ulang
Qizil relslarni ulamang, chunki siz Arduino -ga zarar etkazishingiz mumkin.
Qadam 7. Old qizil temirdan 30 -pinli qizil simni Arduino -dagi 5V -ga ulang
Bu Arduino -ni quvvat bilan ta'minlaydi.
Qadam 8. 24-26-gachasi pinlardagi qatorlar orasidagi bo'shliqqa tugmachali kalitni joylashtiring
Bu kalit robotni elektr tarmog'idan uzmasdan turib o'chirish imkonini beradi.
Qadam 9. H24 dan qizil simni sensorning o'ng tomonidagi navbatdagi pimdagi qizil rayga ulang
Bu tugmani yoqadi.
Qadam 10. H26 ni ko'k rayga ulash uchun rezistordan foydalaning
Uni bir necha qadam oldin ulangan qora simning yonidagi pinga ulang.
Qadam 11. G26 dan oq simni Arduino 2 -piniga ulang
Bu Arduino -ga tugmachani ro'yxatdan o'tkazishga imkon beradi.
6 -dan 4 -qism: Arduino dasturini o'rnatish
Qadam 1. Arduino IDE -ni yuklab oling va chiqarib oling
Bu Arduino ishlab chiqish muhiti va sizga Arduino mikrokontroleriga yuklashingiz mumkin bo'lgan ko'rsatmalarni dasturlash imkonini beradi. Siz uni arduino.cc/en/main/software dan bepul yuklab olishingiz mumkin. Yuklab olingan faylni ikki marta bosish orqali oching va ichidagi papkani kirish oson bo'lgan joyga o'tkazing. Siz aslida dasturni o'rnatolmaysiz. Buning o'rniga, siz arduino.exe faylini ikki marta bosish orqali uni chiqarilgan papkadan ishga tushirasiz.
Qadam 2. Batareya to'plamini Arduino -ga ulang
Quvvat berish uchun batareyaning orqa raz'emini Arduino ulagichiga ulang.
Qadam 3. Arduino -ni kompyuterga USB orqali ulang
Windows qurilmani tanimasligi mumkin.
Qadam 4. bosing
⊞ Win+R va yozing devmgmt.msc.
Bu qurilma menejerini ishga tushiradi.
Qadam 5. "Boshqa qurilmalar" bo'limidagi "Noma'lum qurilma" ni o'ng tugmasini bosing va "Drayv dasturini yangilash" -ni tanlang
" Agar siz bu variantni ko'rmasangiz, uning o'rniga "Xususiyatlar" ni bosing, "Haydovchi" yorlig'ini tanlang va "Haydovchini yangilash" ni bosing.
Qadam 6. "Kompyuterimni haydovchi dasturi uchun ko'rib chiqing
" Bu sizga Arduino IDE bilan birga kelgan drayverni tanlash imkonini beradi.
Qadam 7. "Ko'zdan kechirish" tugmasini bosing, keyin siz ilgari chiqarilgan papkaga o'ting
Siz "haydovchilar" papkasini topasiz.
Qadam 8. "Drayvlar" papkasini tanlang va "OK" tugmasini bosing
" Agar noma'lum dasturiy ta'minot haqida ogohlantirilsa, davom ettirish kerakligini tasdiqlang.
6 -dan 5 -qism: Robotni dasturlash
Qadam 1. IDE papkasidagi arduino.exe faylini ikki marta bosish orqali Arduino IDE dasturini ishga tushiring
Sizni bo'sh loyiha kutib oladi.
Qadam 2. Robotingiz to'g'ri yo'lga tushishi uchun quyidagi kodni joylashtiring
Quyidagi kod sizning Arduino -ni doimiy ravishda oldinga siljitadi.
#include // bu dasturga "Servo" kutubxonasini qo'shadi // quyidagi ikkita servo ob'ektni yaratadi Servo leftMotor; O'ng dvigatel; void setup () {leftMotor.attach (12); // agar siz tasodifan o'z servolaringiz uchun pin raqamlarini almashtirgan bo'lsangiz, bu erdagi raqamlarni o'ngga o'zgartirishingiz mumkinMotor.attach (13); } void loop () {leftMotor.write (180); // uzluksiz aylanishda, 180 servoga "oldinga" to'liq tezlikda harakat qilishini aytadi. o'ng motor yozish (0); // agar bu ikkalasi ham 180 da bo'lsa, robot aylana bo'ylab yuradi, chunki servolari aylantiriladi. "0", unga "orqaga" to'liq tezlikda harakat qilishini aytadi. }
Qadam 3. Dasturni tuzing va yuklang
Dasturni ulangan Arduino-ga o'rnatish va yuklash uchun yuqori chap burchakdagi o'ng o'q tugmasini bosing.
Siz robotni sirtdan ko'tarishni xohlashingiz mumkin, chunki u dastur yuklanganidan keyin oldinga siljishni davom ettiradi
Qadam 4. kill switch funksiyasini qo'shing
O'chirish tugmachasini yoqish uchun kodingizning "void loop ()" bo'limiga "write ()" funktsiyasi ustidagi quyidagi kodni qo'shing.
if (digitalRead (2) == YUQORI) // bu tugma Arduino {while (1) {leftMotor.write (90) 2 -piniga bosilganda qayd qilinadi; // "90" - servo uchun neytral pozitsiya, bu ularga o'ngga burilishni to'xtatishni bildiradiMotor.write (90); }}
Qadam 5. Kodni yuklang va sinab ko'ring
Kill switch kodi qo'shilsa, siz robotni yuklashingiz va sinab ko'rishingiz mumkin. U tugmachani bosmaguningizcha oldinga siljishni davom ettirishi kerak, shu vaqtda u to'xtaydi. To'liq kod shunday bo'lishi kerak:
#include // quyidagi ikkita servo ob'ektni yaratadi Servo leftMotor; O'ng servo dvigatel; void setup () {leftMotor.attach (12); rightMotor.attach (13); } void loop () {if (digitalRead (2) == HIGH) {while (1) {leftMotor.write (90); rightMotor.write (90); }} leftMotor.write (180); rightMotor.write (0); }
6 -dan 6 -qism: Misol
Qadam 1. Misol keltiring
Quyidagi kod robotga to'siq qo'yilganda uni chap tomonga burish uchun o'rnatilgan sensordan foydalanadi. Har bir qism nima qilishi haqida batafsil ma'lumot olish uchun koddagi izohlarga qarang. Quyidagi kod butun dastur.
#Servo chapMotorni qo'shing; O'ng servo dvigatel; const int serialPeriod = 250; // bu konsoldagi chiqishni har 1/4 soniyada bir marta imzosiz uzoq vaqt cheklaydiSerialDelay = 0; const int loopPeriod = 20; // bu sensorning tezligini 20 ms ga qanchalik tez -tez belgilashini belgilaydi, bu 50 Gts chastotali imzosiz uzoq vaqtLoopDelay = 0; // bu TRIG va ECHO funktsiyalarini Arduino pimlariga yuklaydi. Agar siz boshqacha ulansangiz, bu erda raqamlarga o'zgartirishlar kiriting ultrasonic2TrigPin = 8; const int ultrasonic2EchoPin = 9; int ultrasonic2Distance; int ultrasonic2Duration; // bu robotning ikkita mumkin bo'lgan holatini belgilaydi: oldinga yoki chapga burilish #define DRIVE_FORWARD 0 #define TURN_LEFT 1 int holati = DRIVE_FORWARD; // 0 = oldinga haydash (DEFAULT), 1 = voidni chapga burish () {Serial.begin (9600); // bu pin pin konfiguratsiyasi pinMode (ultrasonic2TrigPin, OUTPUT); pinMode (ultrasonik2EchoPin, Kirish); // bu motorlarni Arduino pinlariga soladiMotor.attach (12); rightMotor.attach (13); } void loop () {if (digitalRead (2) == HIGH) // bu o'chirish kalitini aniqlaydi {while (1) {leftMotor.write (90); rightMotor.write (90); }} debugOutput (); // bu disk raskadrovka xabarlarini ketma -ket konsolda chop etadi, agar (millis () - timeLoopDelay> = loopPeriod) {readUltrasonicSensors (); // bu sensorga o'lchangan masofalarni o'qish va saqlashni o'rgatadi stateMachine (); timeLoopDelay = millis (); }} void stateMachine () {if (state == DRIVE_FORWARD) // agar hech qanday to'siq aniqlanmasa {if (ultrasonic2Distance> 6 || ultrasonic2Distance <0) // agar robot oldida hech narsa bo'lmasa. ultrasonicDistance hech qanday to'siq bo'lmasa, ba'zi ultrasoniklar uchun salbiy bo'ladi {// oldinga haydash rightMotor.write (180); leftMotor.write (0); } else // agar oldimizda ob'ekt bo'lsa {state = TURN_LEFT; }} else if (holat == TURN_LEFT) // agar to'siq aniqlansa, chapga buriling {unsigned long timeToTurnLeft = 500; // 90 gradusni burish uchun taxminan 5 soniya kerak bo'ladi. Agar siz g'ildiraklaringiz o'lchagichidan farqli o'laroq uzun burilishStartTime = millis (); // biz aylana boshlagan vaqtni tejang ((millis ()-turnStartTime) <timeToTurnLeft) // timeToTurnLeft tugamaguncha shu tsiklda qoling {// chapga buriling, shuni esda tutingki, ikkalasi ham "180" ga o'rnatilganda u aylanadi.. rightMotor.write (180); leftMotor.write (180); } holat = DRIVE_FORWARD; }} void readUltrasonicSensors () {// bu ultrasonik 2 uchun. Agar siz boshqa sensordan foydalansangiz, bu buyruqlarni o'zgartirishingiz kerak bo'lishi mumkin. digitalWrite (ultrasonik2TrigPin, HIGH); kechikish mikrosaniyalari (10); // trig -pinni kamida 10 mikrosaniyagacha digitalWrite (ultrasonik2TrigPin, LOW) baland ushlab turadi; ultrasonic2Duration = pulseIn (ultrasonik2EchoPin, HIGH); ultrasonic2Distance = (ultrasonic2Duration/2)/29; } // quyida konsolda xatolarni tuzatish uchun. void debugOutput () {if ((millis () - timeSerialDelay)> serialPeriod) {Serial.print ("ultrasonic2Distance:"); Serial.print (ultrasonik2Distance); Serial.print ("sm"); Serial.println (); timeSerialDelay = millis (); }}