Mozak robota — uvod u mikrokontrolere deo 1.

Treći članak serijala o osnovama robotike.

Danimir Ljepava - 16. April, 2018.

Pred vama je treći u serijalu članaka za juniore (kategorija osnovnih i srednjih škola uzrasta do 18 godina) koji će vam pomoći da naučite nešto više o robotici, elektronici i programiranju kako bi napravili svog prvog robota.

Ovaj serijal je pokrenut inspirisan Eurobot nacionalnim takmičenjem iz robotike koji će se ove godine održati 21. aprila u Novom Sadu. Pobednici će dobiti mogućnost da se takmiče dalje na evropskom takmičenju u Francuskoj.

U prvom članku ovog serijala smo naučili šta je robotika i kakvi sve roboti postoje, a u drugom smo napravili uvod u osnove elektronike, materijale i alate za pravljenje robota.

U ovom članku ćemo se pozabaviti „mozgom” robota — mikrokontrolerom. Mikrokontroler je mini računar koji će vam pomoći da upravljate robotom i koji će mu udahnuti život. Ova oblast je multidisciplinarna, te ćemo u okviru nje da naučimo kako da pravimo elektronske sklopove, kao i da programiramo mikrokontroler. 

Ono što ćete naučiti u ovom članku je:

Članak se završava sa predlozima materijala za dodatno čitanje, kao i spiskom škola gde možete da naučite više o elektronici i robotici. Uputićemo vas i gde možete da nabavite alat i elektronske komponente za samostalan rad.

Odakle da počnem sa mojim prvim robotom?

Robota ćemo početi da pravimo od mikrokontrolera — malog kompjutera, takoreći mozga, koji će da prima komande sa džojstika i pokreće motore robota. 

Postoji zaista mnogo različitih vrsta mikrokontrolera od kojih su u amaterskoj robotici najpopularniji Arduino, Raspberry PI i PIC. Vrsta i izbor mikrokontrolera zavisi od kompleksnosti vašeg robota, i koje sve mogućnosti je potrebno da ima.

Preporučujem da u juniorskoj konkurenciji koristite Arduino mikrokontrolere, jer je najlakše početi s njima — lako se koriste i programiraju i dostupni su u našim prodavnicama. Takođe, na internetu postoji veoma velika podrška i dosta materijala za Arduino koji će vam pomoći u izgradnji vašeg robota.

Šta su ulazni i izlazni priključci (pinovi) mikrokontrolera?

Potrebno je da se prvo upoznamo s činjenicom da mikrokontroleri imaju odredjeni broj ulazno-izlaznih priključaka (koji se na engleskom zovu pinovi). Ovaj koncept je izuzetno važan za razumevanje jer objašnjava kako mikrokontroler upravlja spoljnim svetom (npr. vozi robota) i dobija informacije spolja, tj. “vidi” spoljni svet (npr. razume da li je pritisnut taster džojstika ili da ispred robota stoji neka prepreka).

Šta to zapravo znači? Na svakom modernom mikrokontroleru postoji određeni broj priključaka, odnosno metalnih nožica (pinova) na koje se spajaju druge elektronske komponente i uređaji — vidi sliku dole.

Kada se ove nožice (pinovi) programiraju da budu izlazne (na engleskom output), one omogućavaju Arduinu da softverski pali i gasi priključene uređaje, kao što su na primer svetlo, motori i tome slično. Ovo praktično daje mogućnost softverskog upravljanja robotom, omogućava mu da se kreće i obavlja neophodne radnje.

Takođe je moguće da se nožice (pinovi) programiraju da budu ulazne (na engleskom input). Tako spojeni senzori (to su oči i uši robota kojima vidi i oseća svet oko sebe — na primer, senzor za daljinu, za brzinu kretanja, taster džojstika, i tome sl.) omogućavaju Arduinu da pročita ulazne signale i razume šta se desilo u spoljašnjem svetu.

Ovaj koncept je ilustrovan slikom dole, gde su sa leve strane crvenim strelicama obeleženi različiti senzori (prekidač, senzor za svetlo, mikrofon i sl.), koje Adruinu (plava pločica u sredini) omogućavaju da vidi i čuje svet oko sebe, a sa desne strane su plavim strelicama obeležene različite komponente koje Arduino može da pokrene (motor, displej, LED svetlo, relej, zvučnik i sl.). Potrebno je napomenuti da postoji daleko veći broj senzora i komponenti nego što je ilustrovano na ovoj slici.

Kako konkretno to sve izgleda spojeno (Arduino mikrokontroler, senzori i ostale komponente za upravljanje na jednom juniorskom robotu, pogledajte na slici ispod.

U čemu je razlika izmedju analognih i digitalnih pinova?

Važno je i da objasnimo da ulazne i izlazne nožice (pinovi) mikrokontrolera mogu da budu digitalne i analogne. Na slici dole je na primeru Arduino kontrolera označeno da su neke nožice digitalne, a neke analogne.

Takođe, potrebno je da se obrati pažnja na to da je ova slika pojednostavljena reprezentacija i da nožice mikrokontrolera mogu da sadrže i druge funkcije koje zbog ograničenog prostora ne možemo detaljno da opišemo u ovom članku. Oni koji žele da se detaljnije upoznaju s funkcijama svih nožica Arduino mikrokontrolera mogu da pogledaju ovu stranicu.

Šta konkretno znači analogno/digitalno?

Digitalni priključci (pinovi) mikrokontrolera

Digitalne nožice (pinove) treba da shvatimo kao jednostavan prekidač na kome ili ima ili nema napona (struje).

Verovatno ste čuli da računari rade samo sa nulama i jedinicama (binarno), što zapravo predstavlja koncept digitalne komunikacije. Prisustvo napona (+5 volti) na nekoj nožici mikrokontrolera se u programu označava brojem 1 (ili HIGH), a nedostatak napona (0 volti) na nekoj nožici mikrokontrolera se označava brojem 0 (ili LOW).

Grafički to možete da vidite ilustrovano na slici ispod — plava linija pokazuje da na jednom pinu mikrokontrolera ili ima napona (5 volti) ili nema (0 volti).

U praktičnoj primeni u robotici, kada digitalne nožice (pinove) mikrokontrolera koristimo kao izlaz na njih bi trebalo priključivati uređaje i komponente koje želimo da palimo i gasimo kao jednostavan prekidač — na primer, da upalimo LED diodu (svetlo).

Obratite pažnju u praktičnim primerima koji se nalaze dalje u ovom članku, na to da u samom programskom kodu koristimo HIGH i LOW vrednosti kako bismo dali ininstrukciju mikrokontroleru da na nekom svom pinu pusti ili ne pusti struju.

Slično tome, kada digitalne nožice (pinove) mikrokontrolera koristimo kao ulaz, mikrokontroler može da pročita da li na nekoj nožici ima ili nema napona. Podatak 1 ili HIGH u programu znači da je mikrokontroler detektovao napon na nožici (pinu), a 0 ili LOW da mikrokontroler nije detektovao nikakav napon na nožici. Ovo možemo da koristimo da npr. priključimo taster (prekidač) između nožice mikrokontrolera i napona kako bi Arduino registrovao da li je prekidač pritisnut ili nije.

Analogni priključci (pinovi) mikrokontrolera

Za razliku od digitalnih priključaka, analogni priključci (pinovi) mikrokontrolera mogu da daju i da detektuju promenjiv napon u rasponu od 0 do +5 volti.

Grafički to možete da vidite ilustrovano na slici dole — plava linija pokazuje promenu napona u rasponu od 0 do +5 volti na jednom pinu mikrokontrolera.

U poređenju sa digitalnim, analogni signal je nešto složeniji i može da se koristi za kompleksnije primene u robotici, kao što je to infomacija o tome koliko smo slabo ili jako pritisnuli palicu džojstika, do koje jačine smo okrenuli ručicu potenciometra (varijabilnog otpornika) i tome slično.

U praktičnoj primeni, kada analogne nožice (pinove) mikrokontrolera koristimo kao izlaz trebalo bi na njih da priključimo uređaje i komponente koje želimo da pokrećemo sa različitim vrednostima izlaznog napona. Kada programiramo mikrokontroler da pusti analogni izlazni napon na svoje pinove, s brojevima od 0 do 1.024, u programu određujemo koliko napona će mikrokontroler da pusti na određeni pin. Ovo možemo da koristimo da bismo kontrolisali jačinu svetla, brzinu motora kojim upravljamo, i tome sl.

Slično tome, kada analogne nožice (pinove) mikrokontrolera koristimo kao ulaz, mikrokontroler može da pročita tačnu vrednost napona od 0 to +5 volti koja dolazi na taj pin. Mikrokontroler u programu daje povratnu infromaciju u brojevima od 0 do 1.024, gde broj 0 u programu znači da na pinu nije detektovan nikakav napon (0 volti), pola od te vrednosti ili 512 predstavlja da je na pinu detektovan napon od +2.5 volti, a broj 1.024 da je na pinu detektovan napon od +5 volti.

Ovo možemo da koristimo u situacijama kada želimo da priključimo potenciometar (varijabilni otpornik sa ručicom) između nožice mikrokontrolera i napona i da mikrokontroler registruje koliko jako je potenciometar okrenut. S ovim podatkom možemo i da programiramo npr. da se motori robota kreću brže ili sporije.

Naredni koraci

U zavisnosti od toga da li želite više da čitate, da čujete od drugih ili iskusite kroz samostan rad, preporučujem neke od sledećih aktivnosti kao naredni korak za ulazak u svet elektronike, robotike i programiranja:

Podelite sa nama vaša razmišljanja, pitanja, sugestije o ovom članku. Koliko vam je bio koristan, šta ste naučili, šta još želite da naučite? Da li ste eksperimentisali ili možda napravili neku elektronsku napravu?