Želite li naučiti kako izgraditi vlastitog robota? Postoji mnogo različitih vrsta robota koje možete sami napraviti. Većina ljudi želi vidjeti robota kako obavlja jednostavne zadatke kretanja od točke A do točke B. Možete napraviti robota u potpunosti od analognih komponenti ili kupiti početni komplet od nule! Izgradnja vlastitog robota odličan je način da naučite i elektroniku i računalno programiranje.
Koraci
1. dio od 6: Sklapanje robota
Korak 1. Okupite komponente
Za izradu osnovnog robota trebat će vam nekoliko jednostavnih komponenti. Većinu, ako ne i sve ove komponente možete pronaći u vašoj lokalnoj trgovini hobi elektronike ili u nekoliko prodavača na mreži. Neki osnovni kompleti mogu uključivati i sve ove komponente. Ovaj robot ne zahtijeva nikakvo lemljenje:
- Arduino Uno (ili drugi mikrokontroler)
- 2 servo servera sa kontinuiranom rotacijom
- 2 točka koji odgovaraju servo pogonima
- 1 kotačić
- 1 mala ploča bez lemljenja (potražite ploču s dvije pozitivne i negativne linije sa svake strane)
- 1 senzor udaljenosti (sa četveropolnim priključnim kablom)
- 1 mini prekidač na dugme
- 1 otpornik od 10 kΩ
- 1 USB A do B kabel
- 1 set odvojnih zaglavlja
- 1 6 x AA držač baterije sa 9V DC utičnicom za napajanje
- 1 pakovanje kratkospojnih žica ili žice za spajanje 22 kalibra
- Jaka dvostrana traka ili vruće ljepilo
Korak 2. Okrenite bateriju tako da ravna stražnja strana gleda prema gore
Gradit ćete tijelo robota koristeći bateriju kao bazu.
Korak 3. Poravnajte dva serva na kraju baterije
Ovo bi trebao biti kraj kada žica baterije izlazi iz servomotori bi trebali dodirivati dno, a rotirajući mehanizmi svakog od njih trebali bi biti okrenuti prema stranama baterije. Servomotori moraju biti pravilno poravnati tako da kotači idu ravno. Žice za servo pogone trebale bi sići sa stražnje strane baterije.
Korak 4. Pričvrstite servo pogone trakom ili ljepilom
Uvjerite se da su čvrsto pričvršćene za bateriju. Stražnji dijelovi servo upravljača trebaju biti poravnati u ravnini sa stražnjom stranom baterije.
Servo upravljači bi sada trebali zauzimati zadnju polovinu baterije
Korak 5. Postavite ploču okomito na otvoreni prostor na bateriji
Trebao bi malo visjeti preko prednje strane baterije i protezati će se sa svake strane. Prije nego nastavite, provjerite je li dobro pričvršćen. Red "A" trebao bi biti najbliži servo pogonima.
Korak 6. Priključite Arduino mikrokontroler na vrhove servo upravljača
Ako ste servo upravljače pravilno priključili, trebao bi postojati ravan prostor koji se dodiruje. Zalijepite Arduino ploču na ovaj ravni prostor tako da USB i priključci za napajanje Arduina budu okrenuti prema stražnjoj strani (dalje od matične ploče). Prednja strana Arduina trebala bi se jedva preklapati s matičnom pločom.
Korak 7. Stavite kotače na servo pogone
Čvrsto pritisnite kotače na rotirajući mehanizam serva. To može zahtijevati značajnu silu, jer su kotači dizajnirani tako da prilegnu što je moguće bolje za najbolju vuču.
Korak 8. Pričvrstite kotač na dno matične ploče
Ako preokrenite šasiju, trebali biste vidjeti malo oplate koja se proteže pored baterije. Pričvrstite kotač na ovaj produženi komad, ako je potrebno pomoću uspona. Kotač djeluje kao prednji kotač, omogućavajući robotu lako okretanje u bilo kojem smjeru.
Ako ste kupili komplet, kotač je možda došao s nekoliko uspona koje možete upotrijebiti da osigurate da kotač dođe do tla. i
Dio 2 od 6: Ožičenje robota
Korak 1. Odlomite dva 3-pinska zaglavlja
Koristit ćete ih za povezivanje servo uređaja na matičnu ploču. Gurnite iglice prema dolje kroz zaglavlje tako da igle izađu na jednakoj udaljenosti s obje strane.
Korak 2. Umetnite dva zaglavlja u pinove 1-3 i 6-8 u redu E matične ploče
Uvjerite se da su čvrsto umetnuti.
Korak 3. Spojite servo kabele na zaglavlja, s crnim kabelom s lijeve strane (pinovi 1 i 6)
Ovo će spojiti servosisteme na matičnu ploču. Uvjerite se da je lijevi servo priključen na lijevo zaglavlje, a desni na desno zaglavlje.
Korak 4. Spojite crvene kratkospojničke žice sa pinova C2 i C7 na crvene (pozitivne) igle šine
Koristite crvenu šinu na stražnjoj strani ploče (bliže ostatku šasije).
Korak 5. Spojite crne kratkospojnike sa iglica B1 i B6 na plave (uzemljene) igle
Obavezno koristite plavu šinu na stražnjoj strani matične ploče. Nemojte ih priključivati u igle za crvenu šinu.
Korak 6. Spojite bijele kratkospojne žice s pinova 12 i 13 na Arduinu na A3 i A8
To će omogućiti Arduinu da kontrolira servomotore i okreće kotače.
Korak 7. Priključite senzor na prednju stranu ploče
Ne priključuje se na vanjske šine za napajanje na matičnoj ploči, već u prvi red iglica sa slovima (J). Pobrinite se da ga postavite u točno središte, s jednakim brojem igala sa svake strane.
Korak 8. Spojite crnu kratkospojničku žicu s pina I14 na prvi dostupni plavi pin na lijevoj strani senzora
Ovo će uzemljiti senzor.
Korak 9. Spojite crvenu kratkospojnu žicu sa pina I17 na prvi dostupni crveni klin s desne strane senzora
Ovo će napajati senzor.
Korak 10. Spojite bijele kratkospojničke žice s pina I15 na pin 9 na Arduinu, a od I16 na pin 8
Ovo će slati informacije sa senzora u mikrokontroler.
Dio 3 od 6: Ožičenje napajanja
Korak 1. Okrenite robota na stranu tako da možete vidjeti baterije u pakovanju
Orijentirajte ga tako da kabel baterije izlazi lijevo na dnu.
Korak 2. Priključite crvenu žicu na drugu oprugu s lijeve strane na dnu
Uverite se da je baterija pravilno orijentisana.
Korak 3. Priključite crnu žicu na posljednju oprugu u donjem desnom kutu
Ova dva kabela pomoći će u pružanju ispravnog napona Arduinu.
Korak 4. Spojite crvenu i crnu žicu na krajnje desnu crvenu i plavu iglu na stražnjoj strani matične ploče
Crni kabel treba biti utaknut u pin plave šine na pinu 30. Crveni kabel treba priključiti u iglu crvene šine na pinu 30.
Korak 5. Spojite crnu žicu s GND pina na Arduinu sa stražnjom plavom šinom
Spojite ga na pin 28 na plavoj šini.
Korak 6. Spojite crnu žicu sa stražnje plave šine na prednju plavu šinu na iglici 29 za svaku
Nemojte spajati crvene šine jer ćete vjerojatno oštetiti Arduino.
Korak 7. Spojite crvenu žicu s prednje crvene šine na pin 30 na pin 5V na Arduinu
Ovo će Arduinu osigurati snagu.
Korak 8. Gurnite prekidač u razmak između redova na iglama 24-26
Ovaj prekidač će vam omogućiti da isključite robota bez potrebe za isključivanjem napajanja.
Korak 9. Priključite crvenu žicu od H24 na crvenu šinu u sljedećem dostupnom pinu desno od senzora
Ovo će uključiti dugme.
Korak 10. Pomoću otpornika spojite H26 na plavu šinu
Spojite ga na pin direktno pored crne žice koju ste povezali prije nekoliko koraka.
Korak 11. Spojite bijelu žicu od G26 na pin 2 na Arduinu
To će omogućiti Arduinu da registrira tipku.
4. dio od 6: Instaliranje Arduino softvera
Korak 1. Preuzmite i raspakirajte Arduino IDE
Ovo je Arduino razvojno okruženje i omogućava vam programiranje uputa koje zatim možete prenijeti na svoj Arduino mikrokontroler. Možete ga besplatno preuzeti sa arduino.cc/en/main/software. Raspakirajte preuzetu datoteku dvostrukim klikom na nju i premjestite mapu unutra na lako dostupnu lokaciju. Nećete zapravo instalirati program. Umjesto toga, samo ćete ga pokrenuti iz izdvojene mape dvostrukim klikom na arduino.exe.
Korak 2. Spojite bateriju na Arduino
Uključite zadnju utičnicu baterije u konektor na Arduinu kako biste mu dali napajanje.
Korak 3. Priključite Arduino u računalo putem USB -a
Windows verovatno neće prepoznati uređaj.
Korak 4. Pritisnite
⊞ Win+R i otkucajte devmgmt.msc.
Ovo će pokrenuti Upravitelj uređaja.
Korak 5. Desnom tipkom miša kliknite "Nepoznat uređaj" u odjeljku "Ostali uređaji" i odaberite "Ažuriraj softver upravljačkog programa"
" Ako ne vidite ovu opciju, umjesto toga kliknite "Svojstva", odaberite karticu "Upravljački program", a zatim kliknite "Ažuriraj upravljački program".
Korak 6. Odaberite "Pregledaj moj računar za upravljački program
" To će vam omogućiti da odaberete upravljački program koji ste dobili s Arduino IDE -om.
Korak 7. Kliknite "Pregledaj", a zatim idite do mape koju ste prethodno izdvojili
Unutra ćete pronaći mapu "drivers".
Korak 8. Odaberite mapu "drivers" i kliknite "OK"
" Potvrdite da želite nastaviti ako ste upozoreni o nepoznatom softveru.
5. dio od 6: Programiranje robota
Korak 1. Pokrenite Arduino IDE dvostrukim klikom na datoteku arduino.exe u mapi IDE
Dočekaće vas prazan projekat.
Korak 2. Zalijepite sljedeći kôd kako bi vaš robot krenuo ravno
Kod ispod će učiniti da vaš Arduino neprestano napreduje.
#include // ovo dodaje biblioteku "Servo" u program // sljedeće stvara dva servo objekta Servo leftMotor; Servo rightMotor; void setup () {leftMotor.attach (12); // ako ste slučajno promijenili pin brojeve za svoje servomotore, ovdje možete zamijeniti brojeve rightMotor.attach (13); } void loop () {leftMotor.write (180); // sa kontinuiranom rotacijom, 180 govori servo da se kreće punom brzinom "naprijed". rightMotor. write (0); // ako su oba na 180, robot će ići u krug jer su servo pogoni okrenuti. "0", govori mu da se kreće punom brzinom "unatrag". }
Korak 3. Napravite i otpremite program
Pritisnite gumb sa strelicom nadesno u gornjem lijevom kutu za izradu i postavljanje programa na povezani Arduino.
Možda ćete htjeti podići robota s površine, jer će se on samo nastaviti kretati nakon što se program učita
Korak 4. Dodajte funkcionalnost prekidača za isključivanje
Dodajte sljedeći kod u odjeljak "void loop ()" vašeg koda da biste omogućili prekidač kill, iznad funkcija "write ()".
if (digitalRead (2) == HIGH) // ovo se registruje kada se dugme pritisne na pin 2 Arduina {while (1) {leftMotor.write (90); // "90" je neutralni položaj za servomotore, koji im govori da prestanu okretati desnoMotor.write (90); }}
Korak 5. Otpremite i testirajte svoj kôd
Uz dodani kod prekidača za isključivanje, možete postaviti i testirati robota. Trebao bi nastaviti voziti naprijed sve dok ne pritisnete prekidač, u tom trenutku će se prestati kretati. Cijeli kod bi trebao izgledati ovako:
#include // sljedeće stvara dva servo objekta Servo leftMotor; Servo rightMotor; 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); }
Dio 6 od 6: Primjer
Korak 1. Slijedite primjer
Sljedeći kôd će koristiti senzor priključen na robota kako bi se okrenuo ulijevo kad god naiđe na prepreku. Pogledajte komentare u kodu za detalje o tome šta svaki dio radi. Šifra ispod je cijeli program.
#include Servo leftMotor; Servo rightMotor; const int serialPeriod = 250; // ovo ograničava izlaz na konzolu na svakih 1/4 sekunde nepotpisanog dugog vremenaSerialDelay = 0; const int loopPeriod = 20; // ovo postavlja koliko često senzor očitava vrijednost do 20 ms, što je frekvencija od 50Hz bez znaka longtimeLoopDelay = 0; // ovo dodjeljuje funkcije TRIG i ECHO pinovima na Arduinu. Ovdje prilagodite brojeve ako ste se povezali drugačije const int ultrasonic2TrigPin = 8; const int ultrasonic2EchoPin = 9; int ultrasonic2Distance; int ultrasonic2Duration; // ovo definira dva moguća stanja za robota: vožnja naprijed ili skretanje ulijevo #define DRIVE_FORWARD 0 #define TURN_LEFT 1 int stanje = DRIVE_FORWARD; // 0 = vožnja naprijed (DEFAULT), 1 = skrenite lijevo void setup () {Serial.begin (9600); // ove konfiguracije pinova senzora pinMode (ultrasonic2TrigPin, OUTPUT); pinMode (ultrazvučni2EchoPin, ULAZ); // ovo dodjeljuje motore Arduino pinovima leftMotor.attach (12); rightMotor.attach (13); } void loop () {if (digitalRead (2) == HIGH) // ovo otkriva prekidač kill {while (1) {leftMotor.write (90); rightMotor.write (90); }} debugOutput (); // ovo ispisuje poruke za otklanjanje grešaka na serijsku konzolu if (millis () - timeLoopDelay> = loopPeriod) {readUltrasonicSensors (); // ovo upućuje senzor da očita i pohrani izmjerene udaljenosti stateMachine (); timeLoopDelay = millis (); }} void stateMachine () {if (state == DRIVE_FORWARD) // ako nisu otkrivene prepreke {if (ultrasonic2Distance> 6 || ultrasonic2Distance <0) // ako nema ništa ispred robota. ultrasonicDistance će biti negativan za neke ultrazvuke ako nema prepreka {// vozite se naprijed rightMotor.write (180); leftMotor.write (0); } else // ako je objekt ispred nas {state = TURN_LEFT; }} else if (state == TURN_LEFT) // ako se otkrije prepreka, skrenite lijevo {unsigned long timeToTurnLeft = 500; // potrebno je oko 0,5 sekundi da se okrene za 90 stepeni. Možda ćete ovo morati prilagoditi ako su vaši kotači različite veličine od primjerka bez potpisa dugog turnStartTime = millis (); // spremamo vrijeme koje smo počeli okretati dok ((millis ()-turnStartTime) <timeToTurnLeft) // ostajemo u ovoj petlji sve dok ne istekne timeToTurnLeft {// skrenite lijevo, imajte na umu da će se oba okrenuti na "180". rightMotor.write (180); leftMotor.write (180); } stanje = DRIVE_FORWARD; }} void readUltrasonicSensors () {// ovo je za ultrazvuk 2. Možda ćete morati promijeniti ove naredbe ako koristite drugi senzor. digitalWrite (ultrasonic2TrigPin, HIGH); delayMicroseconds (10); // održava trig pin visokim najmanje 10 mikrosekundi digitalWrite (ultrasonic2TrigPin, LOW); ultrasonic2Duration = pulseIn (ultrasonic2EchoPin, HIGH); ultrasonic2Distance = (ultrasonic2Duration/2)/29; } // sljedeće je za otklanjanje grešaka u konzoli. void debugOutput () {if ((millis () - timeSerialDelay)> serialPeriod) {Serial.print ("ultrasonic2Distance:"); Serial.print (ultrasonic2Distance); Serial.print ("cm"); Serial.println (); timeSerialDelay = millis (); }}