Štitovi Arduina [6]: USB Host shield | Arduino je zaista velika i fleksibilna platforma i malo toga se ne može povezati da radi sa njom. Do sada smo pisali o raznim opcijama za povezivanje i upotrebu, ali šta je sa uređajima koje svakodnevno koristimo i koji se sa računarom povezuju putem USB porta? U tu svrhu se koristi USB Host šild, o kome ćemo ovoga puta pisati.Za početak da pomenemo uređaje koji koriste USB protokol. Delimo u dve grupe: host (server) i device (klijent). Kada povežemo, recimo, Uno sa računarom, računar je u tom slučaju domaćin, a Uno je klijent. Isto je i kada na računar povežemo miš, tastaturu ili USB fleš. Tada se računar ponaša kao host i kontroliše klijenta. Da bi se ostvarila veza preko ovog protokola, bar jedan od uređaja mora da bude domaćin. Ne možemo očekivati da spojimo miš i tastaturu i da ta kombinacija bilo šta radi. Da bismo pomenuti Uno koristili kao domaćina, potrebno ga je nadograditi USB host šildom. Sa šildom na sebi, Uno će se postaviti kao host i moći će da ostvari komunikaciju sa mišem, tastaturom, džojstikom, Bluetoothom, fleš memorijom, GPS stikom, pa čak i sa Android uređajem. Uno, Mega, Dumilanove i slične ploče jednostavno nemaju snage da samostalno budu domaćini, sa izuzetkom Due (On-The-Go mod). Šild sa slika nije tako jeftin i košta oko pet američkih zelembaća. Vrlo je važno napomenuti da za ovaj šild ima malo podataka i da se prostim postavljanjem na Arduino šild može oštetiti ili taj isti Arduino ili oba. U svakom slučaju, neće raditi. Šta to znači? Šild iz naslova se može koristiti sa raznim pločama koje rade na pet volti ili 3,3 volta. Na sebi ima džampere koji se, u zavisnosti od konfiguracije, potreba i korištene Arduino ploče, moraju zalemiti (premostiti – vidi sliku). Tek nakon toga se šild može koristiti. U suprotnom, skeč je skoro nemoguće prebaciti na Arduino, a ako se i prebaci bez šilda, njegovim ubadanjem bez zalemljenih džampera se ne postiže ništa.Šild je širine Una, ali malo kraći, tako da ni ne stiže do USB porta na Unu (Megi i slični). Tu je odmah i USB tip A konektor, koji ima dovoljno mesta oko sebe, ali se neki malo deblji uređaji (na primer GPS stik) bez kabla ne mogu direktno spojiti. Odmah do njega je ’reset’ taster. Šild ima prolazne hedere, sa kojima smo se već sretali, i na njega je moguće nadograditi i neke druge šildove. Tim pre što za sebe ne koristi ni jedan analogni pin, dok se od digitalnih po potrebi mogu koristiti pinovi 9 i 10 za INT i SS šilda, a za to je potrebno zalemiti obližnje džampere. Za komunikaciju sa Arduinom šild koristi SPI protokol preko ICSP hedera. Zamerku dajemo izuzetno tankim iglama hedera. Srce sistema čini Maxim MAX3421E USB host kontroler. Ovaj kontroler koristi 2.0 standard za Full-speed brzine od 12 Mbit/s za periferije i Full/Low-speed od 12 Mbit/s do 1,5 Mbit/s za hosta. Ima izlazni Interrupt pin, kao i po osam GPIN i GPOUT pinova, koji se mogu koristiti nevezano za Arduino ploču ispod. Ovi GP pinovi se nalaze u dva odvojena reda i jasno su označeni. MAX3421E za sebe ima još i kristal na 12 megaherca.Pomenuli smo da šild pre korišćenja treba prvo „dovesti u red”. Naime, u našem slučaju, s obzirom na to da smo koristili Uno, šild smo pripremili na konfiguraciju od pet volti. To smo postigli tako što smo zalemili džampere od pet i 3,3 volta uz samu naponsku sekciju hedera, kao i džamper od pet volti u VBUS PWR sekciji. Za slučaj da se koristi ploča od 3,3 volta, potrebno je nabaviti šild bez level šiftera ili postojeće odlemiti. Zatim treba zalemiti samo džampere od 3,3 volta u obe sekcije, a pet volti ne spajati. Takođe, treba zalemiti i sve džampere oko 14-pin SOIC-a, tamo gde šifteri treba da budu. Za naprednije korišćenje napajanja koristise TPS61200 buster između džampera od 3,3 volta u naponskoj sekciji i VBUS otvora na ploči. Iz ovoga vidimo da je manja muka sa pločama na pet volti. Za korišćenje ovog šilda neophodna je odgovarajuća biblioteka, a iza jedine upotrebljive stoji Circuitsathome, koju možete preuzeti sa adrese goo.gl/9LyEHZ u verziji 2.0, a može da se preuzme i 3.0, ali uz dodatnu modifikaciju ploče (interupt pinovi). U okviru biblioteke postoji podrška za mnoge USB uređaje, a pomenućemo samo najbitnije. Podrška za Android Open ADK (Accessory Development Kit) je naravno tu, tako da možemo Androidom preko Arduina kontrolisati određene senzore/module. Podržani su kontroleri za Xbox, Sony PS3 i PS4. Tu je i podrška za Bluetooth, GPRS, GPS i XBEE terminale. Možda i najpraktičnija podrška u okviru biblioteke jeste ona za HID (Human Interface Devices), odnosno za miš, tastaturu ili džojstik.USB šild je svakako zanimljiv, ali ne tako čest. Vrlo malo tutorijala se može naći na mreži vezanih za njega. Realno, i nema toliko scenarija u praksi gde bi došao do nekog posebnog izražaja. Kada vidimo koliko košta jedan Arduino sa šildom iz naslova i kada se uračuna vreme koje je potrebno da se sve to isprogramira da bi izvršilo određene zadatke vezane za neki USB uređaj, jasno je da je bolje uzeti neki „čistokrvni” SBC. Dejan PETROVIĆ | | |