Ar norite išmokti pasigaminti savo robotą? Yra daugybė skirtingų tipų robotų, kuriuos galite sukurti patys. Dauguma žmonių nori matyti robotą, kuris lengvai pereina iš taško A į B. Jūs galite visiškai sukurti robotą iš analoginių komponentų arba nusipirkti pradinį rinkinį. Sukurti savo robotą yra puikus būdas išmokti elektronikos ir kompiuterinio programavimo.
Žingsnis
1 dalis iš 5: Roboto surinkimas
Žingsnis 1. Surinkite komponentus
Norėdami sukurti pagrindinį robotą, jums reikės kelių paprastų komponentų. Daugumą ar visus šiuos komponentus galite rasti vietinėje elektronikos pomėgių parduotuvėje arba kai kuriuose internetiniuose mažmenininkuose. Kai kuriuose rinkiniuose yra visi šie komponentai. Šiam robotui nereikia litavimo:
- „Arduino Uno“(arba kitas mikrovaldiklis)
- 2 servai 360 laipsnių kampu
- 2 ratai, atitinkantys servo
- 1 laisvas ratas
- 1 bandymo lenta (duonos plokštė arba projekto plokštė), kuri nebuvo lituojama (ieškokite bandymo plokštės, kurios abiejose pusėse yra dvi teigiamos ir neigiamos eilutės)
- 1 artumo jutiklis (su keturių kontaktų jungties kabeliu)
- 1 mygtuko jungiklis
- 1 rezistorius 10 kΩ
- 1 USB kabelis nuo A iki B
- 1 išardomų antraščių rinkinys
- 1 6 x AA baterijų laikiklis su 9 V nuolatinės srovės maitinimo lizdu
- 1 pakuotė su 22. trumpikliu arba vienu kabeliu
- Izoliacija pirmyn ir atgal (dviguba juosta) arba klijų pistoletas
Žingsnis 2. Pasukite baterijų skyrių taip, kad jo plokščia nugara būtų nukreipta į viršų
Jūs sukursite roboto korpusą, kaip pagrindą naudodami akumuliatoriaus skyrių.
Žingsnis 3. Akumuliatoriaus skyriaus gale išdėstykite du servo variklius, nukreiptus ta pačia kryptimi
Šis galas yra galas, kuriame kabelis išeina iš akumuliatoriaus. Servos turi liesti dugną, o kiekvieno servo sukimosi mechanizmas turi būti nukreiptas į išorę iš akumuliatoriaus skyriaus šonų. Svarbu, kad šie servai būtų teisingai išdėstyti, kad ratai būtų tiesūs. Servo kabeliai turi būti iš akumuliatoriaus skyriaus galo.
Žingsnis 4. Klijuokite servos savo izoliacija arba klijais
Įsitikinkite, kad servo sistema tvirtai pritvirtinta prie akumuliatoriaus skyriaus. Servo galinė dalis turi būti suderinta su akumuliatoriaus skyriaus galine dalimi.
Dabar servoservisai turėtų užimti pusę vietos akumuliatoriaus skyriaus gale
Žingsnis 5. Priklijuokite bandymo plokštę statmenai akumuliatoriaus skyriaus likusiai erdvei
Ši bandymo plokštė šiek tiek pakabins virš akumuliatoriaus skyriaus priekio ir tęsis į abi puses. Prieš tęsdami įsitikinkite, kad bandymo plokštė yra sandari. „A“eilutė turėtų būti arčiausiai servo.
Žingsnis 6. Pritvirtinkite „Arduino“mikrovaldiklį prie servo viršaus
Jei teisingai pritvirtinsite servo servetėlę, plokščia dviejų servo dalių dalis turi liesti viena kitą. Priklijuokite „Arduino“plokštę prie šios plokščios vietos, kad USB ir „Arduino“maitinimo jungtys būtų nukreiptos žemyn (toli nuo bandymo plokštės). „Arduino“priekis sutaps su bandymo lenta.
Žingsnis 7. Sumontuokite ratus ant servo
Tvirtai prispauskite ratus prie besisukančio servo mechanizmo. Tam gali prireikti didelės jėgos, nes ratai suprojektuoti taip, kad skylės tiksliai atitiktų servo antgalio formą.
Žingsnis 8. Įdėkite laisvą ratą bandymo plokštės apačioje
Jei apversite robotą aukštyn kojomis, pamatysite mažą bandymo plokštę, kabančią ant akumuliatoriaus skyriaus. Prie šios kabančios dalies pritvirtinkite laisvą ratą. Jei reikia, naudokite pleištą. Laisvas ratas tarnauja kaip priekinis ratas, leidžiantis robotui lengvai pasukti bet kuria kryptimi.
Jei įsigijote rinkinį, laisvas ratas gali turėti keletą pleištų, kuriais galite įsitikinti, kad ratas gali laisvai liesti žemę
2 dalis iš 5: Roboto prijungimas
Žingsnis 1. Iškirpkite dvi 3 kontaktų antraštes
Tai naudosite, norėdami prijungti servo prie bandymo plokštės. Stumkite kaiščius žemyn per antraštes, kad jie būtų vienodo atstumo iš abiejų pusių.
Žingsnis 2. Įdėkite dvi antraštes į bandymo plokštės E eilutės 1-3 ir 6-8 kaiščius
Įsitikinkite, kad jie tvirtai arba tvirtai įkišti.
Žingsnis 3. Prijunkite servo laidus prie antraštės, o juoda viela - kairėje pusėje (1 ir 6 kaiščiai)
Taip servo bus prijungtas prie bandymo plokštės. Įsitikinkite, kad kairioji servo sistema prijungta prie kairiosios antraštės, o dešinioji - prie dešinės.
Žingsnis 4. Prijunkite raudoną jungiamąjį laidą iš kaiščių C2 ir C7 prie raudono bėgelio kaiščio (teigiamas)
Būtinai naudokite raudoną bėgelį bandymo plokštės gale (arčiau likusio roboto korpuso).
Žingsnis 5. Prijunkite juodą jungiamąjį laidą iš kaiščių B1 ir B6 prie mėlyno bėgelio kaiščio (įžemintas)
Būtinai naudokite mėlyną bėgelį bandymo plokštės gale. Nemontuokite kabelio prie raudono bėgelio kaiščio.
Žingsnis 6. Prijunkite baltus trumpiklius nuo Arduino 12 ir 13 kaiščių prie A3 ir A8
Tai leis „Arduino“valdyti servo ir pasukti ratą.
Žingsnis 7. Pritvirtinkite jutiklį prie bandymo plokštės priekio
Jutiklis pritvirtintas ne prie bandymo plokštės išorinio maitinimo bėgelio, o prie pirmųjų dviejų kaiščių eilių (J). Įsitikinkite, kad įdėjote jį tiesiai į vidurį, kad kiekvienoje pusėje būtų vienodas skaičius tuščių kaiščių.
Žingsnis 8. Prijunkite juodą jungiamąjį laidą nuo kaiščio I14 prie pirmojo mėlynojo bėgio kaiščio jutiklio kairėje
Tai įžemins jutiklį.
Žingsnis 9. Prijunkite raudoną jungiamąjį laidą nuo kaiščio I17 prie pirmojo raudono bėgelio kaiščio, esančio jutiklio dešinėje
Tai suteiks jutikliui energijos.
Žingsnis 10. Prijunkite baltus trumpiklius nuo I15 kaiščio prie 9 kaiščio „Arduino“ir nuo I16 iki 8 kaiščio
Tai suteiks informaciją iš jutiklio į mikrovaldiklį.
3 dalis iš 5: Maitinimo kabelio montavimas
1 žingsnis. Apverskite robotą, kad pamatytumėte akumuliatoriaus skyrių viduje
Išdėstykite baterijų skyrių taip, kad kabelis išeitų per apatinį kairįjį kampą.
Žingsnis 2. Prijunkite raudoną laidą su antrąja spyruokle iš kairės apačioje
Įsitikinkite, kad baterijų skyrius yra tinkamai sulygiuotas arba nukreiptas teisinga kryptimi.
Žingsnis 3. Prijunkite juodą laidą prie paskutinės spyruoklės apačioje dešinėje
Šie du laidai padės užtikrinti tinkamą „Arduino“įtampą.
Žingsnis 4. Prijunkite raudonus ir juodus laidus prie raudonų ir mėlynų kaiščių, kurie yra dešinėje bandymo plokštės gale
Juoda viela turėtų eiti į mėlyną bėgelio kaištį ant 30 kaiščio. Raudona viela turėtų eiti į raudoną bėgelio kaištį ant 30 kaiščio.
Žingsnis 5. Prijunkite juodą laidą nuo „Arduino“GND kaiščio prie mėlynojo bėgelio galo
Prijunkite laidą prie mėlynojo bėgelio 28 kaiščio.
Žingsnis 6. Prijunkite juodą laidą nuo mėlynojo bėgelio galo prie mėlynojo bėgelio priekio ant abiejų bėgių 29 kaiščio
Nejunkite raudonojo bėgelio, nes galite sugadinti „Arduino“.
Žingsnis 7. Prijunkite raudoną laidą nuo raudonojo bėgio 30 kaiščio priekio prie 5 V kaiščio „Arduino“
Tai suteiks energijos „Arduino“.
Žingsnis 8. Įdėkite mygtukinį jungiklį į tarpą tarp kaiščių 24-26
Šis jungiklis leis jums išjungti robotą, neišjungiant maitinimo.
Žingsnis 9. Prijunkite raudoną laidą nuo H24 prie raudono bėgelio kitame tuščiame kaištyje, esančiame dešinėje nuo jutiklio
Tai suteiks mygtukui galios.
Žingsnis 10. Naudokite rezistorių, kad prijungtumėte H26 prie mėlynojo bėgelio
Prijunkite jį prie kaiščio tiesiai šalia juodos vielos, kurią ką tik prijungėte atlikdami ankstesnius veiksmus.
Žingsnis 11. Prijunkite baltą laidą nuo G26 prie 2 kaiščio „Arduino“
Tai leis „Arduino“aptikti mygtukus.
4 dalis iš 5: „Arduino“programinės įrangos diegimas
Žingsnis 1. Atsisiųskite ir ištraukite „Arduino IDE“
Čia kuriamas „Arduino“ir leidžia programuoti instrukcijas, kurias galite įkelti į „Arduino“mikrovaldiklį. Ją galite nemokamai atsisiųsti iš arduino.cc/en/main/software. Išpakuokite atsisiųstą failą dukart spustelėdami failą ir perkeldami jame esantį aplanką į lengvai pasiekiamą vietą. Jūs iš tikrųjų neįdiegsite programos, o tiesiog paleisite ją iš aplanko, kuris buvo išgautas dukart spustelėjus arduino.exe.
Žingsnis 2. Prijunkite akumuliatoriaus skyrių prie „Arduino“
Įjunkite galinį akumuliatoriaus lizdą į „Arduino“jungtį, kad ją įjungtumėte.
Žingsnis 3. Įdėkite „Arduino“į kompiuterį per USB
Tikėtina, kad „Windows“neatpažins įrenginio.
Žingsnis 4. Paspauskite
Win+R. ir tipas devmgmt.msc.
Ši komanda atidarys įrenginių tvarkytuvę.
5 veiksmas. Dešiniuoju pelės mygtuku spustelėkite Nežinomas įrenginys skiltyje Kiti įrenginiai ir pasirinkite Atnaujinti tvarkyklės programinę įrangą
Jei nematote šios parinkties, spustelėkite Ypatybės, pasirinkite skirtuką Tvarkyklė, tada spustelėkite Atnaujinti tvarkyklę.
Žingsnis 6. Pasirinkite Naršyti mano kompiuteryje tvarkyklės programinę įrangą
Tai leis jums pasirinkti integruotas tvarkykles, pateiktas kartu su „Arduino IDE“.
Žingsnis 7. Spustelėkite Naršyti, tada atidarykite anksčiau išgautą aplanką
Jame rasite tvarkyklių aplanką.
Žingsnis 8. Pasirinkite tvarkyklių aplanką ir spustelėkite Gerai
Patvirtinkite, kad norite tęsti, jei esate įspėti apie nežinomą programinę įrangą.
5 dalis iš 5: Robotų programavimas
1 veiksmas. Atidarykite „Arduino IDE“dukart spustelėdami failą arduino.exe, esantį IDE aplanke
Jus pasitiks tuščias projektas.
Žingsnis 2. Įklijuokite arba įklijuokite šį kodą, kad jūsų robotas būtų tobulesnis
Žemiau pateiktas kodas išlaikys jūsų „Arduino“.
#include // tai prideda „Servo“biblioteką prie programos // tokia komanda sukuria du servo objektus Servo leftMotor; Servo dešinėMotor; void setup () {leftMotor.attach (12); // jei netyčia pakeitėte savo servo kaiščio numerius, čia galite juos sukeisti rightMotor.attach (13); } void loop () {leftMotor.write (180); // sukant 360 laipsnių kampu (nuolatinis sukimasis), skaičius 180 nurodo servo varikliui judėti „pirmyn“visu greičiu. rightMotor.write (0); // jei abi reikšmės yra 180, robotas sukasi ratu, nes servo sistema yra atvirkštinė. „0“nurodo robotui judėti „atgal“visu greičiu. }
Žingsnis 3. Sukurkite ir įkelkite programą
Spustelėkite dešinės rodyklės mygtuką viršutiniame kairiajame kampe, kad sukurtumėte ir įkeltumėte programą į prijungtą „Arduino“.
Galbūt norėsite pakelti robotą nuo paviršiaus, nes robotas ir toliau vaikščios į priekį po programos įkėlimo
Žingsnis 4. Pridėkite sustabdymo jungiklio funkciją (nužudymo jungiklį)
Pridėkite šį kodą prie kodo „void loop ()“skyriaus, kad pridėtumėte sustabdymo jungiklio funkciją „write ()“funkcijos viršuje.
if (digitalRead (2) == HIGH) // ši komanda vykdoma paspaudus mygtuką ant 2 kaiščio „Arduino“{while (1) {leftMotor.write (90); // "90" yra neutrali servo padėtis, kuri nurodo servo sustabdyti sukimąsi į dešinęMotor.write (90); }}
Žingsnis 5. Įkelkite ir patikrinkite savo kodą
Jau pridėję stabdymo jungiklio kodą, galite įkelti kodą ir išbandyti robotą. Robotas turėtų judėti į priekį, kol paspausite sustabdymo jungiklio mygtuką, dėl kurio robotas sustos. Visas kodas atrodys taip:
#include // tokia komanda sukuria du Servo leftMotor servo objektus; Servo dešinėMotor; 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); }
Pavyzdys
Šis kodas naudos robote įdiegtus jutiklius, kad jis pasuktų į kairę, kai robotas susiduria su kliūtimi. Peržiūrėkite kodo komentarus, kad sužinotumėte, kaip naudoti kiekvieną dalį. Žemiau pateiktas kodas yra visa programa.
#įtraukti „Servo leftMotor“; Servo dešinėMotor; const int serialPeriod = 250; // šis kodas suteikia konsolės išvesties laiko atsilikimui kas 1/4 sekundės (250 ms) nepasirašytą ilgą laikąSerialDelay = 0; const int loopPeriod = 20; // šis kodas nustato jutiklio skaitymo dažnį iki 20 ms, o tai yra 50 Hz nepasirašytas ilgas laikasLoopDelay = 0; // šis kodas priskiria TRIG ir ECHO funkcijas „Arduino“kaiščiams. Sureguliuokite skaičius čia, jei juos sujungsite kitaip. const int ultragarsas2EchoPin = 9; int ultragarsas2Distance; int ultragarsas2Duration; // šis kodas apibrėžia dvi galimas roboto būsenas: tęsti pirmyn arba pasukti į kairę #define DRIVE_FORWARD 0 #define TURN_LEFT 1 int state = DRIVE_FORWARD; // 0 = tęsti pirmyn (Numatytasis), 1 = pasukti į kairę void setup () {Serial.begin (9600); // šis jutiklis nustato kaiščio konfigūraciją pinMode (ultrasonic2TrigPin, OUTPUT); pinMode (ultragarsinis2EchoPin, INPUT); // tai priskiria variklį prie „Arduino“kaiščių leftMotor.attach (12); rightMotor.attach (13); } void loop () {if (digitalRead (2) == HIGH) // šis kodas aptinka „sustabdymą“{while (1) {leftMotor.write (90); rightMotor.write (90); }} debugOutput (); // šis kodas spausdina derinimo pranešimus į serijinę konsolę, jei (millis () - timeLoopDelay> = loopPeriod) {readUltrasonicSensors (); // šis kodas nurodo jutikliui skaityti ir saugoti duomenis apie išmatuotą atstumo būsenąMachine (); timeLoopDelay = milis (); }} void stateMachine () {if (state == DRIVE_FORWARD) // jei kliūtis neaptinkama {if (ultragarsinis2 atstumas> 6 || ultragarsinis2 atstumas <0) // jei nieko nėra priešais robotą. ultragarsasAtstumas kai kuriems ultragarso prietaisams bus neigiamas, jei nebus kliūčių {// važiuoti į priekį rightMotor.write (180); leftMotor.write (0); } else // jei priešais mus yra objektas {state = TURN_LEFT; }} else if (state == TURN_LEFT) // jei aptinkama kliūtis, pasukite į kairę {unsigned long timeToTurnLeft = 500; // apsisukti 90 laipsnių užtrunka apie 0,5 sekundės. Jums gali tekti koreguoti šią vertę, jei jūsų ratų dydis skiriasi nuo dydžio, nurodyto nepasirašyto ilgo turnStartTime = milis (); // išlaikyti sąlygą, kai robotas pradeda suktis, kol ((millis ()-turnStartTime) <timeToTurnLeft) // išlaikyti šį ciklą, kol timeToTurnLeft (500) praeis {// pasukti į kairę, atminkite, kad kai abu yra „180“, robotas pasisuks. rightMotor.write (180); leftMotor.write (180); } būsena = DRIVE_FORWARD; }} void readUltrasonicSensors () {// tai skirta ultragarsui 2. Jei naudojate kitą jutiklį, gali tekti pakeisti šią komandą. „DigitalWrite“(ultragarsas2TrigPin, HIGH); delayMikrosekundės (10); // traukite TRIG kaištį aukštai mažiausiai 10 mikrosekundžių digitalWrite (ultrasonic2TrigPin, LOW); ultrasonic2Duration = pulseIn (ultragarsinis2EchoPin, HIGH); ultragarsinis2 atstumas = (ultragarso2 trukmė/2)/29; } // toliau pateikiamos konsolės derinimo klaidos. void debugOutput () {if ((millis () - timeSerialDelay)> serialPeriod) {Serial.print ("ultrasonic2Distance:"); Serial.print (ultragarsinis2 atstumas); Serijinis atspaudas ("cm"); Serial.println (); timeSerialDelay = milis (); }}