LAKI PINGVINI<>
102016<><>

Arduino Uno

Prvi član kraljevske porodice

Kada nadobudni ljubitelji računara vide tehničke karakteristike modela Arduino Uno obično odmahnu rukom smatrajući da se radi o sporom uređaju sa smešno malom količinom memorije. Međutim, kada biste se malo udubili u tematiku, shvatili biste da se u 32 kilobajta može smestiti i te kako mnogo korisnog koda. Arhitektura AVR nudi brzinu izvršavanja od milion instrukcija u sekundi, što kada se pomnoži sa 16 megaherca daje više nego dovoljno procesorske snage kako za obradu informacija pristiglih sa spoljašnjih izvora, tako i za upravljanje priključenim uređajima.

Arduino Uno (Slika 1) dolazi u vidu malene pločice dimenzija 6,9 × 5,3 centimetara koja se programira putem USB interfejsa. Za pisanje programa je moguće koristiti kako računare koji rade pod Windowsom tako i one sa OS × i Linuksom. Na pločici se nalazi USB-B konektor koji služi za programiranje uređaja, kao i njegovo napajanje dok je priključen na računar. Ukoliko je potrebno da uređaj funkcioniše nezavisno od računara, na raspolaganju nam je konektor (2,1x5,5 milimetara) preko koga priključujemo eksterno napajanje sa naponom u rangu 5-12 volti. Često se u takvim slučajevima koristi standardna „kockasta” PP3 baterija od devet volti za koju je potrebno nabaviti odgovarajući adapter. Ako uređaj napajamo preko USB porta, maksimalna jačina struje na koju možemo računati je 500 miliampera, dok u slučaju konektora za napajanje po specifikaciji može da ide do jednog ampera (realno oko 800 miliampera).

Najuočljiviji element na pločici je sam mikrokontroler Atmega328P (P je oznaka za „PicoPower” tehnologiju uštede energije), dok manji kvadratni čip u sebi sadrži USB/Serial interfejs. Dva bloka od po šest iglica predstavljaju ICSP (In-Circuit Serial Programming) interfejse. Reč je o specijalizovanoj varijanti ISP (In-System Programming) interfejsa čija je namena da dozvoli menjanje sistemskog programa (bootloadera) u čipovima na pločici, čime se izbegava odlemljivanje komponenti. Jedan blok je namenjen programiranju mikrokontrolera, a drugi za programiranje USB/Serial kontrolera. Od ostalih uočljivijih elemenata na pločici možemo izdvojiti taster za resetovanje uređaja, regulator napona koji se nalazi pored ulaza za napajanje i kristal od 16 megaherca u prepoznatljivom metalnom kućištu. Tu su i četiri minijaturna LED svetla od kojih dva prikazuju slanje i prijem podataka preko serijskog porta (Rx,Tx), jedno prikazuje da je uređaj pod naponom, dok je četvrto fizički povezano sa pinom 13 i služi kao indikator njegove aktivnosti.

Pored edukacije, glavna namena Arduina je da olakša posao projektovanja uređaja koji u sebi imaju mikrokontroler i uz njegovu pomoć proveravamo da li naša zamisao funkcioniše u praksi. Obično se uz Arduino koristi prototipska ploča sa konektorima (breadboard) kojima nije potrebno lemljenje i na koju se postavljaju komponente koje se međusobno povezuju sa provodnim žicama. Ako se radi o edukaciji, nakon što učenik završi sa postavljanjem komponenti i uveri se (uz obavezno divljenje svojoj inteligenciji) da sve radi kako treba, obično sledi uklanjanje svih delova da bi se oslobodio prostor za nove eksperimente. Ako se pak Arduino koristi za konstrukciju nekog uređaja koji će biti korišćen u praksi, situacija ja malo drugačija. Kada se dokaže ispravnost projekta, Arduino nam suštinski više nije potreban i umesto njega na štampanu pločicu možemo postaviti mikrokontroler koji će obavljati ulogu koju je prethodno imao mikrokontroler na našoj prototipskoj platformi. U narednim brojevima ćemo prikazati neke od alatki koje maksimalno pojednostavljuju izradu štampanih pločica koristeći za osnovu prototip koji smo kreirali na Arduinu.

Uno, due, tre...

Priča o Arduinu Uno započinje u Nju Jorku početkom jeseni 2010. godine kada je najavljen u okviru sajma posvećenog ljubiteljima tehnike „uradi sam”. Inače, reč je o sajmu koji organizuje poznati američki časopis „Make” i koji se održava u velikom broju gradova širom sveta. Nije nikakva tajna da Arduino platforma tom časopisu duguje dobar deo svoje popularnosti.

Uno svojom pojavom u suštini nije doneo ništa spektakularno novo. Radi se o modelu koji blago evoluira iz svojih prethodnika. Kao prvi popularni predak Una se može smatrati model Arduino NG u koji je ugrađen mikrokontroler ATmega8 sa svojih osam kilobajta fleš memorije. Nakon njega, 2007. godine sledi model Arduino Diecimila koji donosi ATmega168 i 16 kilobajta memorije za programe. Dve godine posle dolazi red na model Duemilanove koji sa „mozgom” baziranim na ATmega328 već dobrano počinje da liči na Uno. Glavna razlika se odnosi na promenu čipa koji konvertuje podatke sa USB porta u serijski oblik. U prethodnim verzijama se radilo o čipu FT232RL, dok Uno dolazi sa modelom Atmega8u2 u prve dve revizije i Atmega16u2 za R3. Za prosečnog korisnika između tih modela nema nikakve razlike. Do pojave treće revizije Una imali su i identičan broj i raspored pinova. Postavlja se pitanje, zašto je Uno najpopularniji model Arduina, a ne neki drugi? Iz prostog razloga što se tajming velike popularnosti cele platforme poklopio sa njegovim pojavljivanjem.

Često se uz naziv Uno modela može videti oznaka R3 koja predstavlja treću reviziju pločice uređaja. Oznake R1 i R2 je danas vrlo teško negde susresti, pošto su te varijante davno prestale da se proizvode. Razlike između ta tri modela su minimalne, a glavnu smo opisali u prethodnom pasusu. Postoje dve varijante Arduino Uno R3 uređaja koje su funkcionalno jednake i razlikuju se samo u tipu kućišta mikrokontrolera. Naime, prvobitna verzija dolazi sa duguljastim DIP kućištem (Slika 2) koje ima 28 nožica, ali je proizvođač zbog nedostatka tih čipova na tržištu bio primoran da koristi SMD varijantu (Slika 3) Atmega328 u kvadratnom kućištu sa 32 pina. Informacije radi, SMD verzija mikrokontrolera sadrži dva neiskorišćena ADC ulaza (A6 i A7) koji nemaju izvode na kućištu uređaja. Korisnicima generalno ova razlika ne znači mnogo, ali je velika prednost DIP varijante to što je u slučaju pregorevanja mikrokontrolera moguće na jednostavan način zameniti neispravan deo, što je u SMD varijanti mnogo složeniji posao. Modeli sa SMD čipom donose oznaku „SMD Edition” uz inverziju osnovnih boja na leđnoj strani pločice.

Veza sa svetom

Arduino je po svojoj funkciji U/I ploča (I/O board), što znači da preko svojih izvoda omogućuje rad sa ulaznim i izlaznim uređajima. Za priključivanje se koriste plastični konektori koji se tradicionalno nazivaju pinovima, iako su ovde u pitanju konektori ženskog tipa. Izvodi su grupisani u četiri gnezda i to po dva sa dve bočne strane pločice.

Gnezdo sa izvodima vezanim za napajanje uređaja u R3 varijanti ima osam kontaktnih mesta od kojih krajnje levo nema nikakvu funkciju. Tu su dva pina za uzemljenje (Gnd), izlazni pinovi za 3,3 i pet volti, pin za ulazni napon (Vin), pin za dovođenje RESET signala i (samo na R3) pin IOREF, čija je funkcija da uskladi napon priključenog šilda (dodatni uređaj) sa naponom samog uređaja.

Sledeće gnezdo ima šest pinova nazvanih A0-A5, čija je namena da prihvate informacije u analognom obliku koje su predstavljene različitim naponima. Te informacije se dalje prosleđuju u tzv. ADC (Analog to Digital Converter), gde se pristigli napon pretvara u neku vrednost izraženu 10-bitnim brojem. Znači, vrednost u opsegu 0-1024 (210). Pinovi A4 i A5 su interno povezani sa pinovima SDA i SCL, što nam omogućuje uspostavljanje komunikacije sa drugim uređajima putem I2C magistrale. I2C je jedan od najjednostavnijih protokola za serijski prenos podataka i za to su mu potrebne svega dve žice. Brzine prenosa ove magistrale se kreću od 1-5 Mb/s.

Sa gornje strane pločice se nalaze dva konektora (8 i 10 pinova) koji su najvećim svojim delom namenjeni radu sa digitalnim signalima. Pinovi sa oznakama 0-13 po potrebi mogu da imaju funkciju kako ulaznih, tako i izlaznih konektora. Pored pinova 3,5,6,9,10 i 11 se nalazi znak „~” koji napominje da se oni mogu koristiti kao pseudoanalogni izlazni portovi. Šta to znači? Pošto Atmega328 nema DAC (Digital-to-Analog Converter) logiku, koristi se tehnika PWM (Pulse Width Modulation) za generisanje analognih signala putem modulacije kvadratnog talasa. Šest nabrojanih pinova je podeljeno u tri para koji mogu raditi na različitim frekvencijama. Pinovi 5 i 6 se kontrolišu preko tajmerskog registra TCCR0B, 9 i 10 preko TCCR1B, a 3 i 11 preko TCCR2B. Kombinovanjem kvadratnog talasa sa vrednostima navedenih registara stvara promenjive nivoe napona u opsegu 0-5 volti. Funkcija analogWrite() svake sekunde može da bude izvršena nešto manje od 500 puta.

Na digitalnim pinovima D0 i D1 se nalaze oznake Rx i Tx koje sugerišu da se radi o kontaktima koji mogu biti korišćeni kao USART (Universal Synchronous/Asynchronous Receiver/Transmitter), odnosno, serijski interfejs preko koga možemo komunicirati sa drugim računarima i uređajima, a u slučaju potrebe ga možemo koristiti za programiranje samog Arduina.

Pinovi D10-D13 obavljaju i ulogu SPI (Serial Peripheral Interface) porta. Reč je o serijskoj magistrali koja za razliku od ostalih serijskih protokola koje smo obradili omogućuje rad u dupleks režimu (istovremeno slanje i primanje podataka). Interfejs koristi četiri pina za svoj rad i to: D10 – SS (Slave Select) pin koji koristi master za (de)aktivaciju uređaja; D11 – MOSI (Master Out Slave In) master linija za slanje podataka na slave; D12 – MISO (Master In Slave Out) slave linija za slanje podataka masteru i D13 – SCK (Serial Clock) klok za sinhronizaciju prenosa.

Pin 15 pod nazivom AREF (Analog REFerence) služi za određivanje gornje vrednosti ulaznog opsega za analogno-digitalni konverter. Podrazumevana vrednost je pet volti za modele koji rade na naponu od pet volti i 3,3V za uređaje koji nemaju napajanje od pet volti. Dovođenje većeg napona na ovaj pin može da pokvari uređaj.

Preostala dva pina SCL i SDA (16 i 17) predstavljaju instancu serijskog interfejsa koji se naziva TWI (Two Wire Interface), a koji je zapravo isto što i I2C, samo se koristi drugo ime kako bi se izbegao sudski spor sa Filipsom, pošto je I2C registrovan kao njihov trgovački znak.

Atmega328

Srce i duša Arduina Uno je mikrokontroler koga proizvodi kompanija Atmel, jer pinovi koje smo prethodno pominjali su zapravo izvodi nožica ovog mališana. Procesorsko jezgro Atmelovih kontrolera na bazi AVR tehnologije je izgrađeno po RISC dizajnu koji najčešće jednu mašinsku instrukciju obrađuje u toku jednog sistemskog takta. Mikrokontroler Atmega328 radi na maksimalnom taktu od 20 megaherca, ali je zbog kompatibilnosti sa prethodnim modelima Arduina radni takt ograničen na 16 megaherca. Osim toga, ovaj čip podržava različite brzine u zavisnosti od ulaznog napona. U slučaju da je napon na ulazu 1,8 volti, procesor će raditi na maksimalnoj brzini od četiri megaherca. Ako je pak u pitanju napon od 2,7 volti brzina će biti 10 megaherca. Za maksimalnu brzinu od 20 megaherca je potreban napon od minimalno 4,5 volti.

U slučaju kada ne postoji dovoljan broj pinova na nekom uređaju, pribegava se interfejsu koji se naziva GPIO (General Purpose Input/Output) i koji po potrebi može menjati funkciju nožica MCU čipa. Na ilustraciji pod brojem 1 je šematski prikazan mikrokontroler Atmega328P sa oznakama svih funkcija dodeljenih pojedinim njegovim nožicama.

Iz priloženog vidimo da, recimo, nožica označena brojem 5 može imati pet različitih funkcija. Ako malo pažljivije pogledamo ilustraciju, primetićemo da su pinovima mikrokontrolera 23-28 dodeljene funkcije ADC konvertera i analognih ulaza (A0-A5). Međutim, odmah pored vidimo da isti pinovi obavljaju i funkciju digitalnih portova sa oznakama D14-D19. Iako to nije obeleženo na samom uređaju (niti se o tome govori u specifikaciji), po potrebi je moguće raditi sa 20 digitalnih U/I kanala.

Kao što se vidi na ilustraciji, sve nožice mikrokontrolera osim onih čija je funkcija vezana za napajanje, imaju konektore sa početnim slovima PB, PC i PD iza kojih sledi brojna oznaka. Ta tri porta se u Arduino žargonu nazivaju PORTB, PORTC i PORTD. PORTB se odnosi na digitalne pinove D13-D8, PORTC na analogne pinove A5-A1, dok se PORTD odnosi na digitalne pinove D7-D0. Svaki od portova se kontroliše preko tri posebna registra (r ima vrednost B,C ili D):

DDRr – ukazuje na to da li je pin INPUT ili OUTPUT PORTr – ukazuje na to da li je pin HIGH ili LOW PINr – sadrži vrednost INPUT, ukoliko je pin u režimu čitanja ulaza. (Slika 4)

Upravljanje ovim registrima spada u naprednije tehnike programiranja za Arduino i početnicima nije neophodno njihovo detaljno poznavanje. Ipak, treba istaći to da se njihovim korišćenjem prilikom rada sa portovima može uveliko smanjiti obim koda, kao i povećati brzina njegovog izvršavanja za čak deset do petnaest puta.

Što se tiče organizacije memorije, Atmega328 kao pripadnik harvardske škole deli memoriju na programsku i onu za podatke. Programska je fleš tipa, dok je memorija za podatke na bazi brzih SRAM memorijskih ćelija. Veličina programske memorije iznosi 32 kilobajta, od kojih treba oduzeti 512 bajtova namenjenih smeštanju tzv. bootloader programa koji omogućuje programiranje mikrokontrolera sa računara. Memorija za podatke sadrži 32 osmobitna registra opšte namene, 64 U/I registra, 160 registara za proširenu U/I memoriju i dva kilobajta namenjena smeštanju podataka potrebnih za izvršavanje programa iz programske memorije. Šest registara (R26-R31) ima posebnu namenu i mogu se kombinovati u indeksne pokazivače šesnaestobitnog adresnog opsega.

Unutar procesora su nam na raspolaganju tri registra koji po potrebi mogu vršiti funkciju tajmera ili brojača. Oni se nazivaju Timer/Counter 0, 1 i 2. Prvi i treći rade sa osam bita i međusobno su dosta slični, dok drugi ima šesnaestobitni registar. O njima smo govorili kada smo pominjali konverziju digitalnog u PWM analogni signal, gde igraju važnu ulogu.

Na čipu se našlo mesta i za EEPROM (Electrically Erasable Programmable Read-Only Memory) veličine jednog kilobajta koji može sadržati podatke koji ostaju i nakon isključivanja struje, nešto kao minijaturni hard-disk. Tu se uglavnom upisuju podaci koji predstavljaju podešavanja koja se ne menjaju tako često. Ovoj memoriji nije moguće pristupiti direktno, već se to obavlja preko posebnih registara. Na sreću, postoje programske biblioteke koje krajnje pojednostavljuju tu proceduru.

Specifikacija mikrokontrolera kaže da je zagarantovano 10000 ciklusa zapisivanja podataka u programsku memoriju i 100000 u EEPROM. U praksi je to najčešće nekoliko puta više od deklarisanih vrednosti.

Mere opreza

Kao i svi uređaji i ovaj pod određenim uslovima može da se pokvari. Jedan od klasičnih načina da nešto zabrljamo je da napravimo kratak spoj postavljajući uređaj na materijal koji funkcioniše kao provodnik. Da bi se ovo izbeglo, preporučuje se korišćenje posebnih podnožja ili kućišta koja će obavljati funkciju izolatora. Moguće je izazvati kvar tako što ćemo utaknuti žicu u pogrešan konektor. Jedan od primera je povezivanje Vin i GND pinova. Potreban je oprez prilikom proračuna potrošnje struje, jer ukoliko Atmega328P daje struju veću od 200 miliampera (ili 40 miliampera sa pojedinačnog pina), dolazi do pregorevanja. Najčešći kvarovi su posledica dovođenja elektriciteta koji premašuje propisane vrednosti za više od 10%. Recimo, dovođenje šest volti na U/I pinove. Postoje i načini da kvar izazovemo programskim putem. Na primer, povežemo dva U/I pina sa jednom žicom i postavimo im funkciju izlaza, pa jednom od njih dodelimo vrednost High, a drugom Low, što će izazvati pregorevanje na oba konektora.

Igor S. RUŽIĆ

 
Deepin 15.3
Prvi koraci od sedam milja
Simplenote 1.0.2
Arduino Uno
Šta mislite o ovom tekstu?

Za seckanje hleba

Prototipske ploče koje ne zahtevaju lemljenje izum su koji je za red veličine pojednostavio dizajniranje i testiranje jednostavnijih hardverskih uređaja. Sa njihovom pojavom je prestala potreba za prepravljanjem prototipskih štampanih ploča i lemljenjem komponenti u fazi konstrukcije. Naziv breadboard potiče od kuhinjske daske za sečenje hleba koja je često korišćena kao „matična ploča” za radio amaterske uređaje pre mnogo decenija.
Logički se svi kontaktni otvori na ploči mogu podeliti u dve grupe. Prva obuhvata konektore koji se nalaze po bokovima (na modelima sa 400 i 830 rupica su odvojene obojenim linijama i praćene oznakama + i –) i namena im je da služe za napajanje strujom komponenata na centralnom delu ploče. Konektori u ta dva reda (modeli sa 700 rupica imaju samo po jedan) su povezani i jedan red je namenjen razvođenju napona (+), a drugi uzemljenju (-). U neku od (obično krajnjih) rupica ovog bloka žicama dovodimo struju sa izvora napajanja, a zatim je razvodimo iz ostalih konektora tog reda. Ispod plastike su skrivene minijaturne štipaljke koje pridržavaju utaknutu žicu ili nožicu komponente i stvaraju električni kontakt. Prosečan vek štipaljki na kvalitetnim pločama se računa na oko 10000 korišćenja.

Centralni deo je namenjen smeštanju elektronskih komponenata i sastoji se iz dva bloka konektora koji su razdvojeni kanalom. Svaki blok je sačinjen iz većeg broja kolona od po pet rupica. Svaka od tih kolona konektora je ispod plastike povezana paralelnom vezom i sve žice/komponente koje imaju dodir sa tom kolonom ostvaruju međusobni električni kontakt. Razmak između blokova služi za galvansko razdvajanje i to je jedino mesto na koje se mogu postaviti integrisana kola koja su jednim redom nožica priključena na prvi, a drugim redom na drugi blok. Rastojanje između rupica iznosi 2,5 milimetra (1/10 inča), što je ujedno i standardni razmer za razmak između kontakata elektronskih komponenata.
Osim standardnih ploča koje smo opisali, postoje i one bez redova za napajanje i sa kolonama sa manjim brojem otvora od pet. Često je na pločama moguće videti brojne i slovne oznake koje mogu biti od pomoći kada se sklapaju projekti koji navode tačne pozicije komponenata. Postoje i modeli koji kombinuju dve ploče u jednu.

Za ostvarivanje veza se uglavnom koriste obične izolovane žice manjih profila. Te žice se često nazivaju džamperima. Za malu sumu novca je moguće nabaviti pakovanja od više desetina žica koje imaju igličaste konektore na obe strane, pa su izuzetno pogodne za povezivanje sa Arduinom. Ovakve prototipske ploče u zavisnosti od veličine i kvaliteta koštaju 1,5-5 evra, što je zaista malo u odnosu na udobnost koju pružaju.
Home / Novi brojArhiva • Opšte temeInternetTest driveTest runPD kutakCeDetekaWWW vodič • Svet igara
Svet kompjutera Copyright © 1984-2018. Politika a.d. • RedakcijaKontaktSaradnjaOglasiPretplata • Help • English
SKWeb 3.22
Opšte teme
Internet
Test Drive
Test Run
PD kutak
CeDeteka
WWW vodič
Svet igara



Naslovna stranaPrethodni brojeviOpšte informacijeKontaktOglašavanjePomoćInfo in English

Svet kompjutera