Kako narediti preprostega robota
Sestavljanje preprostega robota je zabaven način za učenje elektronike, osnov mehanike in programiranja. Mnogi mislijo, da morajo biti roboti dragi in zapleteni, vendar lahko dejansko začnete z majhnim projektom, ki ga je enostavno sestaviti doma. V tem članku bomo z uporabo ultrazvočnih senzorjev zgradili preprostega robota za izogibanje oviram. Ta robot lahko hodi naprej in se samodejno obrne, ko zazna predmet pred seboj. Ta projekt je primeren za začetnike, študente ali vse, ki se želijo začeti učiti robotike.
1. Razumevanje koncepta preprostih robotov
Na splošno imajo roboti tri glavne komponente: možgane (krmilnik), čutila (senzorji) in mišice (aktuatorji). V tem projektu:
– Krmilnik: Arduino Uno (ali združljiv)
– Senzor: ultrazvočni senzor HC-SR04 za merjenje razdalje
– Pogon: enosmerni motor, ki poganja kolesa
– Gonilnik motorja: gonilnik motorja L298N (ali L293D), tako da lahko motor krmili Arduino
Ko senzor prebere razdaljo pred robotom in je razdalja preblizu, bo Arduino ukazal gonilniku motorja, da spremeni smer gibanja, na primer zavije desno ali levo.
2. Potrebna orodja in materiali
Tukaj je seznam pogosto uporabljenih komponent, ki jih je enostavno najti v trgovinah z elektroniko ali na tržnicah:
1. Arduino Uno (1 kos)
2. Gonilnik motorja L298N (1 kos)
3. Ultrazvočni senzor HC-SR04 (1 kos)
4. Enosmerni motor + menjalnik in kolesa (2 kosa) za 2-kolesnega robota (diferencialni pogon)
5. Kolesce (1 kos) majhno uravnoteževalno kolo spredaj ali zadaj
6. Baterije (npr. 2×18650 ali 7,4V paket) ali 6xAA, glede na potrebe motorja
7. Šasija robota (lahko jo kupite že izdelano ali izdelano iz akrila/vezane plošče)
8. Kabli za zagon (moški-ženski in moški-moški)
9. Stikalo za vklop/izklop (neobvezno, vendar zelo uporabno)
10. Majhna plošča za izdelavo testa (neobvezno)
11. Vijaki, matice, izvijači in vroče lepilo po potrebi
Če želite nekaj še preprostejšega (brez ultrazvočnih senzorjev), lahko zgradite robota, ki "sledi liniji" s senzorji linij, vendar se različice za izogibanje oviram pogosto zdijo bolj "žive", ker se odzivajo na predmete pred seboj.
3. Zasnova šasije robota
Šasija je okvir, na katerega so nameščene vse komponente. Uporabite lahko že pripravljen komplet šasije ali pa ga sestavite sami iz lahkih materialov, kot so akril, PVC ali tanek les. Načelo je:
– Na levo in desno stran namestite dva enosmerna motorja.
– Namestite kolesa na motorno kolo.
– Za stabilnost robota dodajte kolesce kot uravnotežnik.
– Baterijo namestite tako, da se robot ne nagne.
– Arduino in gonilniki motorja naj bodo nameščeni na vrhu za lažji dostop.
Pazite, da kabel ne visi navzdol, da se ne zatakne med kolesa.
4. Osnovna shema ožičenja
Tukaj je splošen koncept povezave (zatiči so prilagodljivi):
a) Motor do gonilnika L298N
– Levi motor na izhoda OUT1 in OUT2
– Desni motor na izhoda OUT3 in OUT4
b) Gonilnik L298N za Arduino
– IN1, IN2 za levi motor na nekatere digitalne pine Arduina
– IN3, IN4 za desni motor na nekatere digitalne pine Arduina
– ENA in ENB (omogočanje) se lahko priključita na pine Arduino PWM za nadzor hitrosti (neobvezno). Če nista, imajo nekateri moduli L298N že mostiček za omogočanje, ki omogoča delovanje motorja s polno hitrostjo.
c) Senzor HC-SR04 za Arduino
– VCC do 5V Arduina
– GND do GND Arduino
– TRIG na digitalni pin Arduina
– ECHO za digitalni pin Arduino
d) Moč
Motor potrebuje več toka, kot ga lahko zagotovi Arduino. Zato:
– Glavna baterija gre na gonilnik motorja (+12V in GND priključka na L298N).
– Arduino se lahko napaja tudi iz baterije (prek VIN) ali ločene prenosne baterije/USB-ja.
– Ozemljitev: Za stabilnost krmilnega signala morata biti priključeni ozemljitev baterije/gonilnika in ozemljitev Arduina.
Najpogostejša napaka začetnikov je, da pozabijo povezati ozemljitev (GND), zaradi česar se robot premika neenakomerno.
5. Delovna logika robota za izogibanje oviram
Robot bo deloval po preprostem postopku:
1. Odčitajte razdaljo z ultrazvočnega senzorja.
2. Če je razdalja > prag (npr. 20 cm), se robot premakne naprej.
3. Če je razdalja ≤ 20 cm, se robot za kratek čas ustavi.
4. Robot se malo premakne nazaj in se nato za nekaj sto milisekund obrne (na primer v desno).
5. Ponovno odčitajte razdaljo in ponovite.
S tem vzorcem se bo robot navidezno "izognil" oviram, tudi če ne izbere najbolj optimalne poti.
6. Preprost primer kode za Arduino
Spodaj je osnovni primer kode. Pinove lahko prilagodite svojemu vezju:
“`cpp
definiraj TRIG 8
definiraj ECHO 9
// Levi motor
definiraj IN1 2
definiraj IN2 3
// Desni motor
definiraj IN3 4
definiraj IN4 5
dolgo trajanje;
notranja razdalja;
int readDistance() {
digitalnoPiši(TRIG, LOW);
zamuda mikrosekunde (2);
digitalnoPiši(TRIG, VISOKA);
zamuda mikrosekunde (10);
digitalnoPiši(TRIG, LOW);
trajanje = impulzV(ECHO, VISOKA);
int cm = trajanje 0.034 / 2;
vrnitev cm;
}
void naprej() {
digitalnoPiši(IN1, VISOKO);
digitalnoPisanje(IN2, LOW);
digitalnoPiši(IN3, VISOKO);
digitalnoPisanje(IN4, LOW);
}
void vzvratno() {
digitalnoPisanje(IN1, LOW);
digitalnoPiši(IN2, VISOKO);
digitalnoPisanje(IN3, LOW);
digitalnoPiši(IN4, VISOKO);
}
void zavijDesno() {
digitalnoPiši(IN1, VISOKO);
digitalnoPisanje(IN2, LOW);
digitalnoPisanje(IN3, LOW);
digitalnoPiši(IN4, VISOKO);
}
void stop() {
digitalnoPisanje(IN1, LOW);
digitalnoPisanje(IN2, LOW);
digitalnoPisanje(IN3, LOW);
digitalnoPisanje(IN4, LOW);
}
nična namestitev () {
pinMode(TRIG, IZHOD);
pinMode(ECHO, INPUT);
pinMode(VHOD1, IZHOD);
pinMode(VHOD2, IZHOD);
pinMode(VHOD3, IZHOD);
pinMode(VHOD4, IZHOD);
Serial.begin (9600);
}
void loop () {
razdalja = preberiRazdalja();
Serial.println(razdalja);
če (razdalja > 20) {
nadaljujem();
} Else {
ustavi();
zakasnitev (200);
obratno();
zakasnitev (300);
ustavi();
zakasnitev (200);
zavij desno();
zakasnitev (400);
ustavi();
}
zakasnitev (50);
}
""
Ta koda je najosnovnejša različica. Če se robot prepogosto zaletava, lahko prag povečate na 25–30 cm ali podaljšate čas obračanja.
7. Testiranje in uglaševanje
Ko je robot sestavljen, izvedite postopno testiranje:
1. Najprej preizkusite motor: zaženite funkcijo naprej/nazaj, da se prepričate, da se kolesa vrtijo v pravilno smer.
2. Preizkusite ultrazvočni senzor: rezultate razdalje si oglejte v serijskem monitorju Arduino IDE.
3. Združite sistem: zaženite celoten program in opazujte reakcijo robota.
Če se robot obrača ali premika nazaj, ko bi se moral premikati naprej, boste morda morali zamenjati kable motorja ali obrniti logiko IN1-IN2 (in IN3-IN4).
8. Pogoste težave in rešitve
Nekatere ovire, ki se pogosto pojavijo:
– Robot se sploh ne premika: preverite baterijo, preverite gonilnik motorja in se prepričajte, da je omogočevalni mostiček aktiven.
– Arduino se ponastavi med delovanjem motorja: nezadostno napajanje ali hrup motorja. Poskusite uporabiti ločeno baterijo za Arduino, dodati kondenzator in popraviti ozemljitev.
– Odčitek senzorja razdalje je nestabilen: prepričajte se, da je senzor obrnjen naravnost, ga ne izpostavljajte prekomernim vibracijam in da kabel ni ohlapen.
– Robot je »obtičal« v kotu: dodajte logiko naključnega obračanja ali uporabite servomotorje za premikanje senzorjev, da lahko »gledajo« levo in desno.
9. Ideje za razvoj po uspehu
Ko je osnovni robot zagnan in deluje, ga lahko nadgradite na nekaj bolj zanimivega:
– Dodajanje servomotorjev za premikanje ultrazvočnih senzorjev, tako da robot izbere najboljšo pot.
– Dodan Bluetooth nadzor (HC-05) za upravljanje z mobilnim telefonom.
– Uporaba linijskih senzorjev za izdelavo robota, ki sledi liniji.
– Prilagodite hitrost PWM za bolj gladko gibanje.
– Dodajte brenčalo ali LED kot indikator, ko zaznate oviro.
Zaključek
Izdelava preprostega robota ni nujno težka. Z Arduinom, enosmernim motorjem, gonilnikom motorja in ultrazvočnim senzorjem lahko ustvarite robota, ki se lahko samodejno premika in izogiba oviram. Ključi do uspeha so lepo ožičenje, zadostni viri in temeljito testiranje. Ko boste ta projekt izpeljali, boste bolje pripravljeni na bolj kompleksne robotske projekte, kot je pametni robot s kamero ali tak, ki lahko sledi predmetom.
Če želite, vam lahko pomagam ustvariti podrobnejši diagram ožičenja glede na izbrane pine ali prilagoditi kodo, tako da se robot lahko naključno obrača levo/desno in je bolj "inteligenten".