![]() | ![]() |
![]() |
| ![]() |
| ||||||||||||||||
ATmega32u4 ploče
Kada govorimo o Arduinu, prvo što pomislimo je Uno. Standardna osnovna ploča o kojoj se sve zna, koju svi preporučuju i za koju ima pregršt primera. Uno je „work horse” u Arduino ekosistemu, sa svim svojim prednostima i ograničenjama. Ipak, Uno ne mora biti prvi izbor za projekte. Čak ni za samu razradu projekta. U ovom broju vam predstavljamo ploče zasnovane na ATmega32u4 čipovima, koje su, po nama, neopravdano zapostavljene. ATmega32u4
Drugi član kraljevske porodice
Pinout ženskih hedera je donekle kompatibilan sa Unom, što će reći da će veliki broj šildova moći i ovde da se koristi, ali ne svi. Leonardo je iz ATmega32u4 izvukao 20 digitalnih pinova koji rade na pet volti. Za razliku od Una, Leonardo je ovim pinovima omogućio 40 miliampera struje. Struja na pinu 3.3V je ostala na 50 miliampera. Od ovih pinova osmobitne PWM kanale ih ima sedam. Zanimljivo je i da pin 13 ima mogućnost PWM pa se možemo igrati sa ugrađenom LED u „fade-in/fade-out” maniru. Svi GPIO pinovi se mogu koristiti kao digitalni, dok se čak dvanaest njih mogu koristiti kao analogni, iako ih je samo šest označeno sa A. Za njihov raspored treba ispratiti pinout šemu. Iz tog razloga svi pinovi mogu biti i INPUT i OUTPUT. Za razliku od Una, I2C pinovi (SDA i SCL) su na digitalnim pinovima 2 i 3. Leonardo SPI pinove ima samo preko ICSP hedera, koji je na svom standardnom mestu. Ukoliko će se koristiti šild koji koristi SPI interfejs, ali preko digitalnih pinova, Uno je bolje rešenje. Pinovi RX i TX za serijski interfejs su na svojim standardnim digitalnim pinovima 0 i 1. Kod korišćenja biblioteka koje koriste određene pinove, treba obratiti pažnju i eventualno ih korigovati. Takođe, iako su u osnovi digitalni pinovi koji imaju svoje digitalne oznake, pinovi iz analogne sekcije (A0-A5) se u skeču ne mogu označavati kao digitalni. Na primer, ako napišemo pinMode(14,OUTPUT), nećemo dobiti ništa. Potrebno ih je adresirati po oznakama kao na ploči, recimo, pinMode(A0, OUTPUT). Za kraj da dodamo da se neke verzije Leonarda pri pukom resetovanju na računaru prijavljuju pod drugim virtuelnim portom, što nekad ume da bude problem. Naš primerak je bio „zakovan” na isti port, a baš smo se trudili da to proverimo. Mali od Leonarda Još manje zastupljena ploča od Leonarda iz ATmega32u4 porodice je Pro Micro. U pitanju je ploča dimenzija nalik Pro Miniju, koja se na prvi pogled od nje razlikuje po mikro USB portu. Kao i kod Pro Minija, i ovde razlikujemo dve osnovne verzije, verziju na pet volti sa kristalom na 16 megaherca i verziju na 3,3 volta i kristalom na osam megaherca. Verzija na pet volti je ugrubo rečeno umanjeni Leonardo i pinout radi na pet volti. Pinovi verzije Pro Micra na 3,3 volta nisu tolerantni na pet volti i na to treba obratiti pažnju, a ovaj model je pogodan za rad na litijumskim baterijama od 3,7 volti. Mi smo nabavili verziju sa TQFP čipom na sebi, kakav je i na Leonardu. Postoje i verzije sa manjim QFN čipom, ali na mreži se može naći veći broj njih kojima je dopao primerak sa spojenim izlazima na samom čipu.
int RXLED = 17; void setup(){ pinMode(RXLED, OUTPUT); } void loop(){ digitalWrite(RXLED, LOW); // palimo RX TXLED0; //uz pomoc macro-a palimo TX delay(1000); digitalWrite(RXLED, HIGH); // gasimo RX TXLED1; //gasimo TX delay(1000); } Baš iz razloga što su mikorkontroler i računar direktno vezani, može se desiti da ne možemo da prebacimo skeč na Pro Micro. Kod Leonarda se ovaj problem lako reši resetovanjem ploče preko tastera, ali Pro Micro takav taster nema, te se problem rešava „RST” pinom. Uz dva brza reseta ploča ide u bootloader mode na osam sekundi. You Got Quacked! ATmega32u4 može da se programira da se ponaša kao bilo koji USB uređaj. To mogu biti razni igrački kontroleri, miševi, ali i tastature. Ovo poslednje je prilično zanimljivo i dovelo je do pojave raznih varijanti ovog čipa u formi USB stika, nalik na USB fleš memorijske stikove. Uz pomoć biblioteka se ovakvi uređaji mogu isprogramirati tako da kada se ubodu u računar urade razne stvari. Pritom, računar će sve vreme misliti da komunicira sa, recimo, tastaturom. Za to vreme se na ekranu može pojaviti poruka „Srećna Nova Godina” ili slično. Naravno, računar može da uradi i razne druge stvari, svakako ozbiljnije od poruke ispisane u Notepadu.
Da bismo ovu priču malo skratili, napomenućemo da se za programiranje ovakvih uređaja mogu koristiti payloads napisani za Rubber Ducky, koji je šrafciger u alatu mnogih hakera. Spisak komandi za „Gumenu patku” se može naći ovde github. #include <Keyboard.h> // ukljucujemo biblioteku void setup(){ Keyboard.begin(); delay(3000); Keyboard.press(KEY_LEFT_GUI); //win taster Keyboard.press(114); // R taster Keyboard.releaseAll(); delay(500); Keyboard.print("notepad”); // kucamo notpad u polju za pretragu delay(500); typeKey(KEY_RETURN); // pritiskamo enter delay(750); // mali zastoj da se notepad pokrene Keyboard.print("A robot may not injure!!!”); typeKey(KEY_RETURN); delay(750); Keyboard.print("A robot must obey!!!”); typeKey(KEY_RETURN); delay(750); Keyboard.print("A robot must protect itself!!”); typeKey(KEY_RETURN); } // funkcija za pritiskanje odredjenih tastera. na ovaj nacin smanjujemo broj redova u okviru skeca void typeKey(int key){ Keyboard.press(key); delay(50); Keyboard.release(key); } void loop() { } Skeč koji vidite ovde je prilično jednostavan i sve se izvršava samo jednom u setup funkciji. Možete zamisliti šta bi se dogodilo sa računarom kada bismo komande prebacili u loop funkciju. BadUsb nije svemoguć. Računar u stand-by sa lozinkom je nepremostiva prepreka za njega, ali za neoprezne korisnike može biti i te kako izvor problema. Pored BadUSb, postoje i rešenja sa slotom memorijske kartice koje dodatno povećavaju mogućnosti osnovne verzije. Penzioner Na kraju ćemo dodati da je u penziju otišao YUN, ploča koja je kombinovala dva sveta, 32u4 mikrokontroler i SoC, poput Linkita o kome smo već pisali (SK 11/2018) i koji takođe koristi Atmega32u4. Dolazak novih i osetno jeftinijih rešenja je doveo do toga da o YUN-u pričamo u prošlom vremenu. Dejan PETROVIĆ |
| ||||||||||||||||||
![]() | |
![]() | ![]() |
Home / Novi broj | Arhiva • Opšte teme | Internet | Test drive | Test run | PD kutak | CeDeteka | WWW vodič • Svet igara Svet kompjutera Copyright © 1984-2018. Politika a.d. • Redakcija | Kontakt | Saradnja | Oglasi | Pretplata • Help • English | |
SKWeb 3.22 |