O'z qo'lingiz bilan robot yasashni o'rganmoqchimisiz? Robotlarning ko'p turlari mavjud, ularni o'zingiz qurishingiz mumkin. Ko'pchilik robotni A nuqtadan Bgacha osonroq bajarilishini ko'rishni xohlaydi. Siz robotni analog komponentlardan to'liq qurishingiz yoki boshlang'ich to'plamini sotib olishingiz mumkin. O'z robotingizni yaratish - elektronika va kompyuter dasturlarini o'rganishning ajoyib usuli.
Qadam
5 -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 yoki barchasini mahalliy elektronika sevimli mashg'ulotlari do'konida yoki ba'zi onlayn sotuvchilarda topishingiz mumkin. Ba'zi to'plamlar ushbu komponentlarning barchasini o'z ichiga oladi. Ushbu robot lehimlashni talab qilmaydi:
- Arduino Uno (yoki boshqa mikrokontroller)
- 360 daraja 2 ta servo
- Servo mos keladigan 2 g'ildirak
- 1 bepul g'ildirak
- Lehimlanmagan 1 ta sinov taxtasi (non paneli yoki loyiha taxtasi) (har bir tomonida ikkita ijobiy va salbiy qatorli test taxtasini qidiring)
- 1 yaqinlik sensori (to'rt pinli ulagich kabeli bilan)
- 1 tugmachali tugma
- 1 qarshilik 10 kΩ
- 1 USB A - B kabeli
- 1 ta buziladigan sarlavhalar to'plami
- 9V doimiy quvvat manbaiga ega 6 ta AA batareya ushlagichi
- 22 ta o'tish kabellari yoki bitta kabelli 1 ta paket
- Oldinga va orqaga izolyatsiya (er -xotin lenta) yoki yopishtiruvchi qurol
Qadam 2. Batareya bo'linmasini aylantiring, shunda uning orqa qismi yuqoriga qaraydi
Siz robot korpusini asos sifatida batareya bo'linmasidan qurasiz.
Qadam 3. Batareya bo'linmasining uchida bir xil yo'nalishga qaragan ikkita servo joylashtiring
Bu uchi batareyadan kabel chiqib ketadigan joy. Servo pastki qismga tegishi kerak va har bir servoning aylanish mexanizmi batareya bo'linmasining yon tomoniga qaragan bo'lishi kerak. G'ildiraklar tekis bo'lishi uchun bu servolarni to'g'ri tartibga solish muhim. Servo uchun kabellar batareya bo'linmasining orqa qismidan chiqishi kerak.
4 -qadam. Servolarni izolyatsiyangiz yoki elim bilan yopishtiring
Servo batareya bo'linmasiga mahkam o'rnatilganligiga ishonch hosil qiling. Servo orqasi batareya bo'linmasining orqa qismiga to'g'ri kelishi kerak.
Endi servolar batareya joyining orqa qismidagi bo'sh joyning yarmini egallashi kerak
Qadam 5. Sinov taxtasini batareya bo'linmasidagi qolgan bo'shliqqa perpendikulyar yopishtiring
Bu sinov paneli akkumulyator bo'linmasining old tomoniga bir oz osilib turadi va ikkala tomonga cho'ziladi. Davom etishdan oldin test taxtasi mahkamlanganligiga ishonch hosil qiling. "A" qatori servoga eng yaqin bo'lishi kerak.
Qadam 6. Arduino mikrokontrollerini servoning yuqori qismiga ulang
Agar siz servoni to'g'ri biriktirsangiz, ikkita servoning tekis qismi bir -biriga tegib turishi kerak. Arduino kartasini USB va Arduino quvvat ulagichlari pastga qaragan holda (test kartasidan uzoqda) shunday tekis joyga yopishtiring. Arduino -ning old qismi sinov paneli bilan bir -biriga to'g'ri keladi.
Qadam 7. G'ildiraklarni servolarga o'rnating
G'ildiraklarni aylanadigan servo mexanizmga mahkam bosing. Bu katta kuch talab qilishi mumkin, chunki g'ildiraklar servo uchining shakliga to'liq mos keladigan teshiklarga ega bo'lishi uchun mo'ljallangan.
Qadam 8. Bo'sh g'ildirakni test taxtasining pastki qismiga o'rnating
Agar siz robotni teskari aylantirsangiz, batareya bo'linmasiga osilgan kichik sinov taxtasini ko'rasiz. Erkin g'ildirakni bu osilgan qismga ulang. Agar kerak bo'lsa, pichoqni ishlating. Erkin g'ildirak old g'ildirak bo'lib xizmat qiladi, bu esa robotni istalgan tomonga osonlik bilan burilishiga imkon beradi.
Agar siz to'plam sotib olgan bo'lsangiz, bo'sh g'ildirakda g'ildirakning erga tekkanligini ta'minlash uchun foydalanishingiz mumkin
5 -qismning 2 -qismi: Robotni ulash
Qadam 1. Ikkita 3 pinli sarlavhani kesib oling
Siz buni servoni test kartasiga ulash uchun ishlatasiz. Pimlarni sarlavhalar orasidan pastga suring, shunda ular har ikki tomondan teng masofada chiqadi.
Qadam 2. Ikkita sarlavhani test taxtasidagi E qatoridagi 1-3 va 6-8 pinlarga joylashtiring
Ularning mahkam yoki mahkam o'rnatilganligiga ishonch hosil qiling.
Qadam 3. Servo simlarni sarlavha bilan, qora simni chap tomonda (1 va 6 -pinlar) ulang
Bu servoni sinov paneli bilan bog'laydi. Chap servo chap sarlavhaga, o'ng servo esa o'ng sarlavhaga ulanganligiga ishonch hosil qiling.
Qadam 4. C2 va C7 pinlaridan qizil o'tish simini qizil temir yo'l piniga ulang (musbat)
Sinov taxtasining orqa qismidagi qizil temirdan foydalanganingizga ishonch hosil qiling (robot tanasining qolgan qismiga yaqinroq).
Qadam 5. Qora o'tish simini B1 va B6 pinlaridan ko'k temir yo'l piniga (erga) ulang
Sinov taxtasining orqa tomonidagi ko'k temirdan foydalanganingizga ishonch hosil qiling. Kabelni qizil temir pinga ulamang.
Qadam 6. Arduino -dagi 12 va 13 -pinlardan oq o'tish simlarini A3 va A8 ga ulang
Bu Arduino -ga servo boshqaruvini va g'ildirakni burish imkonini beradi.
Qadam 7. Sensorni test kartasining old qismiga ulang
Sensor sinov taxtasidagi tashqi quvvat panjarasiga o'rnatilmagan, lekin (J) harfi bilan yozilgan dastlabki ikki qatorli pinlarga o'rnatiladi. Siz uni o'rtasiga qo'yganingizga ishonch hosil qiling, har tomondan teng miqdordagi bo'sh pim.
Qadam 8. Qora o'tish simini I14 pinidan sensorning chap tomonidagi birinchi ko'k temir rishtaga ulang
Bu sensorni ishdan chiqaradi.
Qadam 9. I17 pinidan qizil o'tish simini sensorning o'ng tomonidagi birinchi qizil temir pinga ulang
Bu sensorga quvvat beradi.
Qadam 10. Oq o'tish simlarini I15 pinidan Arduino -dagi 9 -pingacha va I16 -dan 8 -pingacha ulang
Bu sensordan mikrokontrollerga ma'lumot beradi.
5 -qismning 3 -qismi: Elektr kabelini o'rnatish
Qadam 1. Robotni aylantiring, shunda siz ichidagi batareya bo'linmasini ko'rasiz
Batareya bo'linmasini shunday joylashtiringki, kabel chap pastki qismdan chiqadi.
Qadam 2. Qizil simni pastdan chapdan ikkinchi buloq bilan ulang
Batareya bo'linmasining to'g'ri joylashtirilganligiga yoki to'g'ri tomonga qaraganligiga ishonch hosil qiling.
Qadam 3. Qora simni pastki o'ngdagi oxirgi buloq bilan ulang
Bu ikkita sim Arduino uchun to'g'ri kuchlanishni ta'minlashga yordam beradi.
Qadam 4. Qizil va qora simlarni test kartasining orqa tomonidagi o'ng tomonda joylashgan qizil va ko'k pinlarga ulang
Qora sim 30 -pinli ko'k rangli temir yo'l piniga o'tishi kerak.
Qadam 5. Arduino -dagi GND pinidan qora simni ko'k rayning orqa qismiga ulang
Telni ko'k yo'lakchadagi 28 -pinli simga ulang.
Qadam 6. Qora simni ko'k relsning orqa qismidan ko'k relsning old tomoniga, har ikkala rels uchun 29 -pinda ulang
Qizil temir yo'lni ulamang, chunki siz Arduino -ga zarar etkazishingiz mumkin.
Qadam 7. Qizil simni 30 -gachasi qizil relsning old qismidan Arduino -dagi 5V -pinga ulang
Bu Arduino -ni quvvat bilan ta'minlaydi.
Qadam 8. 24-26-pinlar orasidagi bo'shliqqa tugmachani joylashtiring
Bu kalit robotni quvvatni o'chirmasdan o'chirishga imkon beradi.
Qadam 9. H24 dan qizil simni sensorning o'ng tomonidagi keyingi bo'sh pimdagi qizil relsga ulang
Bu tugmani quvvat bilan ta'minlaydi.
Qadam 10. H26 ni ko'k rayga ulash uchun rezistordan foydalaning
Uni avvalgi bosqichlarda ulangan qora simning yonidagi pinga ulang.
Qadam 11. G26 dan oq simni Arduino 2 -piniga ulang
Bu Arduino -ga tugmachalarni aniqlash imkonini beradi.
5dan 4 qism: Arduino dasturini o'rnatish
Qadam 1. Arduino IDE -ni yuklab oling va chiqarib oling
Bu erda Arduino ishlab chiqilgan va siz dasturlarni Arduino mikrokontroleriga yuklashingiz mumkin bo'lgan dasturlarni o'rnatishga imkon beradi. Siz uni arduino.cc/en/main/software dan bepul yuklab olishingiz mumkin. Faylni ikki marta bosish va undagi papkani kirish oson bo'lgan joyga ko'chirish orqali yuklab olingan faylni oching. Siz dasturni o'rnatolmaysiz, aksincha uni arduino.exe faylini ikki marta bosish orqali chiqarilgan papkadan ishga tushirasiz.
Qadam 2. Batareya bo'linmasini Arduino -ga ulang
Quvvat olish uchun batareyaning orqa rozetkasini Arduino ulagichiga joylashtiring.
Qadam 3. Arduino -ni kompyuteringizga USB orqali joylashtiring
Ehtimol, Windows qurilmani tanimaydi.
Qadam 4. bosing
Win+R va yozing devmgmt.msc.
Bu buyruq bilan qurilma menejeri ochiladi.
Qadam 5. Boshqa qurilmalar ostida Noma'lum qurilmani o'ng tugmasini bosing va Drayv dasturini yangilash-ni tanlang
Agar siz ushbu parametrni ko'rmasangiz, "Xususiyatlar" ni bosing, "Haydovchi" yorlig'ini tanlang va "Drayverni yangilash" ni bosing.
Qadam 6. Drayv dasturi uchun Kompyuterimni ko'rib chiqish -ni tanlang
Bu sizga Arduino IDE bilan birga o'rnatilgan drayverlarni tanlash imkonini beradi.
Qadam 7. Ko'rish -ni bosing, keyin ilgari chiqarilgan papkani oching
Siz haydovchilar papkasini topasiz.
Qadam 8. Drayvlar papkasini tanlang va OK ni bosing
Agar noma'lum dasturiy ta'minot haqida ogohlantirilsa, davom ettirishni xohlayotganingizni tasdiqlang.
5 -qism 5: Robotlar dasturlash
Qadam 1. IDE papkasidagi arduino.exe faylini ikki marta bosish orqali Arduino IDE-ni oching
Sizni bo'sh loyiha kutib oladi.
Qadam 2. Quyidagi kodni joylashtiring yoki joylashtiring
Quyidagi kod Arduino -ni davom ettiradi.
#include // bu dasturga "Servo" kutubxonasini qo'shadi // quyidagi buyruq ikkita servo ob'ektni yaratadi Servo leftMotor; O'ng servo dvigatel; void setup () {leftMotor.attach (12); // agar siz tasodifan pin raqamlarini servo uchun almashtirgan bo'lsangiz, bu erdagi raqamlarni o'ngga o'zgartirishingiz mumkinMotor.attach (13); } void loop () {leftMotor.write (180); // 360 graduslik burilish (uzluksiz aylanish) bilan 180 raqami servoga to'liq tezlikda "oldinga" harakat qilishni buyuradi. rightMotor.write (0); // agar ikkala qiymat ham 180 bo'lsa, robot aylana bo'ylab aylanadi, chunki servo teskari. "0" robotga "orqaga" to'liq tezlikda harakat qilishini aytadi. }
Qadam 3. Dasturni yarating va yuklang
Bog'langan Arduino -ga dastur yaratish va yuklash uchun yuqori chap burchakdagi o'ng o'q tugmasini bosing.
Siz robotni sirtdan ko'tarishni xohlashingiz mumkin, chunki dastur yuklanganidan keyin robot oldinga yurishda davom etadi
Qadam 4. To'xtatish tugmachasi funktsiyasini qo'shing (o'chirish tugmasi)
"Write ()" funktsiyasining ustiga to'xtatish tugmachasini qo'shish uchun kodingizning "void loop ()" bo'limiga quyidagi kodni qo'shing.
agar (digitalRead (2) == YUQORI) // bu buyruq Arduino 2 pin 2 tugmasi bosilganda ishlaydi (1) {leftMotor.write (90); // "90" - servo uchun neytral holat, bu servoga o'ngga burilishni to'xtatishni bildiradiMotor.write (90); }}
Qadam 5. Yuklab oling va kodingizni tekshiring
Stop switch kodi allaqachon qo'shilgan bo'lsa, siz kodni yuklashingiz va robotni sinab ko'rishingiz mumkin. Robot to'xtash tugmachasini bosmaguningizcha robot oldinga siljishi kerak, bu esa robotning to'xtashiga olib keladi. To'liq kod quyidagicha ko'rinadi:
#include // quyidagi buyruq ikkita Servo leftMotor servo moslamasini yaratadi; O'ng 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); }
Misol
Quyidagi kod robot to'siqqa duch kelganida uni chapga burish uchun robotga o'rnatilgan sensorlardan foydalanadi. Har bir qismdan qanday foydalanish haqida batafsil ma'lumot olish uchun koddagi izohlarga qarang. Quyidagi kod butun dastur.
#xato Servo chapMotor; O'ng dvigatel; const int serialPeriod = 250; // bu kod konsolning chiqish vaqtini har 1/4 soniyada (250 ms) imzosiz uzoq vaqtga beradi. SerialDelay = 0; const int loopPeriod = 20; // bu kod sensorning o'qish chastotasini 20 ms ga o'rnatadi, bu 50 Hz imzosiz uzoq vaqtLoopDelay = 0; // bu kod TRIG va ECHO funktsiyalarini Arduino pimlariga tayinlaydi. Raqamlarni bu erga to'g'rilang, agar ularni boshqa yo'l bilan ulashsangiz const int ultrasonic2TrigPin = 8; const int ultrasonic2EchoPin = 9; int ultrasonic2Distance; int ultrasonic2Duration; // bu kod ikkita mumkin bo'lgan robot holatini belgilaydi: oldinga siljiting yoki chapga buriling #define DRIVE_FORWARD 0 #define TURN_LEFT 1 int holati = DRIVE_FORWARD; // 0 = oldinga davom etish (DEFAULT), 1 = voidni chapga burish () {Serial.begin (9600); // bu sensor pinMode konfiguratsiyasini aniqlaydi (ultrasonic2TrigPin, OUTPUT); pinMode (ultrasonik2EchoPin, Kirish); // bu motorni Arduino pinlariga leftMotor.attach (12) tayinlaydi; rightMotor.attach (13); } void loop () {if (digitalRead (2) == HIGH) // bu kod "stop" ni aniqlaydi {while (1) {leftMotor.write (90); rightMotor.write (90); }} debugOutput (); // bu kod disk raskadrovka xabarlarini ketma -ket konsolda chop etadi, agar (millis () - timeLoopDelay> = loopPeriod) {readUltrasonicSensors (); // bu kod sensorga o'lchangan masofa holati haqidagi ma'lumotlarni o'qish va saqlashni o'rgatadiMachine (); timeLoopDelay = millis (); }} void stateMachine () {if (state == DRIVE_FORWARD) // agar hech qanday to'siq aniqlanmasa {if (ultrasonik2Distance> 6 || ultrasonic2Distance <0) // agar robot oldida hech narsa bo'lmasa. ultrasonikDisk hech qanday to'siq bo'lmasa, ba'zi ultrasoniklar uchun salbiy bo'ladi {// oldinga haydash o'ngMotor.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 gradusga burilish uchun taxminan 0,5 soniya kerak bo'ladi. Agar sizning g'ildiraklaringiz o'lchamdagi misoldan uzun belgisiz uzun turnStartTime = millis () o'lchamidan farq qilsa, siz bu qiymatni o'zgartirishingiz kerak bo'ladi; // robot aylana boshlaganda shartni saqlang ((millis ()-turnStartTime) <timeToTurnLeft) // timeToTurnLeft (500) o'tguncha bu tsiklni saqlang {// chapga buriling, esda tutingki, ikkalasi ham "180", robot aylanadi. rightMotor.write (180); leftMotor.write (180); } holat = DRIVE_FORWARD; }} void readUltrasonicSensors () {// bu ultratovushli 2 uchun. Agar siz boshqa sensor ishlatayotgan bo'lsangiz, bu buyruqni o'zgartirishingiz kerak bo'lishi mumkin. digitalWrite (ultrasonik2TrigPin, HIGH); kechikish mikrosaniyalari (10); // TRIG pinini kamida 10 mikrosaniyagacha digitalWrite (ultrasonik2TrigPin, LOW) baland torting; 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 (); }}