6 minute read

mikroupravljača (17

ELEKTRONIKA

Shield-A, učilo za programiranje mikroupravljača (17)

Advertisement

Podsjetimo se, Shield-A je modul na kojem su smješteni nizovi od osam jednobojnih i četiri trobojne (RGB) LE-diode, zujalica, dva tipkala, potenciometar, petnaestak otpornika, dva tranzistora te priključci za alfanumerički displej i za I2C komunikaciju. Dimenzije i oblik pločice Shield-A, kao i raspored igličastih izvoda s njene donje strane, u potpunosti odgovaraju dimenzijama standardne pločice Arduino Uno. Zbog toga se Shield-A lako postavlja na Arduino Uno, čime se komponente s pločice povezuju s izvodima mikroupravljača i naponom napajanja u jednu funkcionalnu cjelinu (Slika 50.).

Slika 50. Pločica Shield-A s modulom Arduino Uno čini funkcionalnu cjelinu

Dobili smo učilo za programiranje mikroupravljača, odnosno razvojni sustav, u kojem LE-diode, alfanumerički displej i zujalica s pločice Shield-A vizualiziraju procese unutar mikroupravljača, a tipkala i potenciometar služe za aktiviranje pojedinih procesa i usmjeravanje rada programa. Analizirajući različite programske zadatke, u prethodnim smo nastavcima postupno ulazili u svijet programiranja mikroupravljača i istovremeno se upoznavali s mogućnostima modula Shield-A. Tijekom ove sezone krenut ćemo korak dalje: pokazat ćemo kako se na konektor J1 modula Shield-A (Slika 51.) mogu povezati različiti “Arduino kompatibilni” moduli. Dostupno je puno takvih modula različitih namjena, jeftini su i zanimljivo je napisati programe kojima ćemo ih

Slika 51. Konektor J1 omogućuje povezivanje razvojnog sustava Shield-A s različitim kompatibilnim modulima Arduino

“oživjeti”: iako samostalno obavljaju svoju funkciju, radom takvih modula uvijek upravlja neki mikroupravljač koji im zadaje naredbe i obrađuje iz njih prikupljene podatke. To što se neki modul reklamira kao Arduino kompatibilan nama neće predstavljati nikakvu prepreku; kao i dosad, sve postavljene zadatke rješavat ćemo na dvije programske platforme, koristeći programske jezike Bascom-AVR i Arduino IDE. No, krenimo redom! Shema na Slici 52. pojednostavljeno prikazuje koje sve pinove mikroupravljača u kombinaciji Arduino Uno + Shield-A možemo iskoristiti za neki oblik komunikacije s “vanjskim svijetom”. Pinovi PD0 i PD1 imaju vrlo važnu i specifičnu namjenu: oni su preko prilagodnog čipa povezani s USB-konektorom i preko njih mikroupravljač uspostavlja serijsku komunikaciju s osobnim računalom. Ta komunikacija služi za prijenos (upload) programa s računala u mikroupravljač, kao i za razmjenu podataka između razvojnog sustava i osobnog računala (o posljednjem smo više govorili u osmom nastavku). Preporuča se ne koristiti ih za druge namjene. Preostali pinovi porta D, PD2-PD7, izvedeni su na letvicu za priključak alfanumeričkog displeja (LCD). Njihova je prvenstvena namjena upravlja-

Slika 52. Veze razvojnog sustava Shield-A s vanjskim svijetom

nje radom LE-dioda D2-D7 i RGB-dioda D8-D11, odnosno radom LCD-displeja, kada ga postavimo na Shield-A. Možemo ih koristiti i za povezivanje s drugim uređajima i modulima, ali samo ako ne koristimo LE-diode ili displej. U prethodnim nastavcima vidjeli smo kako su svi pinovi porta B, PB0-PB5, kao i prva četiri pina porta C, PC0-PC3, povezani s pojedinim komponentama razvojnog sustava Shield-A; kada bismo im dodijelili i neku drugu namjenu, to bi imalo neželjeni utjecaj na osnovne funkcije razvojnog sustava. Tako su nam preostala još samo dva slobodna pina mikroupravljača koja na razvojnom sustavu nisu iskorištena ni na kakav drugi način: to su PC4 i PC5. Oni su povezani s priključcima SDA i SCL na konektoru J1, i njih smo namijenili za povezivanje s drugim uređajima. Ta dva pina su ciljano odabrana, jer imaju višestruku funkcionalnost: osim što mogu biti “obični” digitalni izlazi te digitalni i analogni ulazi, oni se mogu programski povezati s priključcima SDA i SCL komunikacijskog sklopa u mikroupravljaču (otuda i potječu oznake uz konektor J1). Na taj način možemo najbolje iskoristiti hardverske mogućnosti mikroupravljača za sve čipove koji podržavaju komunikaciju prema protokolu I2C (o samom protokolu pisat ćemo malo kasnije). Na konektoru J1 još su predviđeni priključci za napajanje vanjskog modula, VCC (+5 V) i GND. Koliku struju modul može “povući” s tih priključaka ovisi o odabranom načinu napajanja pločice Arduino Uno. Koristimo li napajanje

Slika 53. Primjer spajanja modula s komunikacijom prema protokolu I2C 24

preko USB-konektora, potrošnja je ograničena osiguračem od 500 mA. Koristimo li napajanje s mrežnog adaptera napona 7‒12 V i preko ugrađenog naponskog stabilizatora AMS1117, možemo dobiti i više od 1 A. Kako Arduino pločica i Shield-A troše samo nekoliko desetaka mA, teoretski bi na konektor J1 mogli spojiti dosta velike potrošače. Ipak, zbog stabilnosti mikroupravljača preporučam da se s konektora J1 ne napajaju moduli koji troše više od 200 mA, posebno ako je potrošnja spojenog modula podložna naglim promjenama. Konkretan način spajanja nekog modula na konektor J1 razvojnog sustava Shield-A prikazuje Slika 53. Ovdje se radi o modulu komercijalnog naziva ZS-042, koji na sebi također ima priključke SDA i SCL, pa je u ovom slučaju dovoljno međusobno povezati istoimene priključke na modulu i razvojnom sustavu. Modul se također napaja s priključaka GND i VCC konektora J1, a preostala dva priključka na modulu ostavit ćemo “u zraku”; time smo se odrekli nekih dodatnih funkcionalnosti čipa DS3231, što nam u ovom trenutku nije važno. Na modul ZS-042 ugrađena su dva integrirana kruga: sat realnog vremena DS3231 i serijski EEPROM 24C32. Oba čipa komuniciraju posredstvom protokola I2C koji je vrlo praktičan: svi čipovi i moduli paralelno se spajaju na istu dvobitnu sabirnicu s linijama SCL i SDA, preko koje mikroupravljač upravlja njihovim radom. Koriste ga različiti uređaji: alfanumerički i grafički displeji, ulazno-izlazni moduli, mjerni čipovi, različiti čipovi koji se koriste u TV-prijemnicima i drugim elektroničkim uređajima... Kako bi komunikacija u takvoj konfiguraciji bila moguća, čipovi i moduli spojeni na istu sabirnicu moraju imati različite adrese. Adresa je nešto što karakterizira određeni integrirani krug pa tako, npr., svi čipovi DS3231 imaju istu adresu. Kod nekih čipova možemo birati između nekoliko ugrađenih adresa, spajanjem adresnih pinova na masu ili na napon napajanja ‒ primjer za to je prije spomenuti AT29C32: on ima 3 adresne linije koje nude izbor jedne od 8 mogućih adresa. Što to konkretno za nas znači? Ako su im adrese različite, na konektor J1 možemo paralelno spojiti više od jednog I2C čipa i modula i sa svakim od njih uspostavljati komunikaciju i upravljati njegovim radom neovisno o drugim čipovima. Mikroupravljač najprije generira START signal, koji “razbudi” sve čipove i stavi ih u stanje pripreme. Nakon toga, mikroupravljač šalje adresu čipa s kojim želi uspostaviti komunikaciju: taj čip će se odazvati, a svi ostali će se uspavati. Sve sljedeće naredbe i podatke koje mikroupravljač šalje prihvaćat će adresirani čip, po potrebi će i on poslati neki podatak mikroupravljaču, dok će uspavani čipovi ignorirati promet na sabirnici. Komunikacija s adresiranim čipom završava kada mikrouprvljač generira signal STOP, nakon čega će se i on uspavati. Kako to ostvariti iz programa Bascom-AVI i Arduino IDE pokazat ćemo u sljedećim nastavcima. No, upotreba konektora J1 nije ograničena samo na komponente koje koriste protokol I2C: na njega možemo spojiti sve komponente i module koji za komunikaciju koriste jedan ili dva voda, pod pretpostavkom da znamo isprogramirati njihov komunikacijski protokol. Odabrali smo i pisat ćemo o nekoliko interesantnih komponenti i modula različite namjene, a za kraj smo ostavili pravu poslasticu: povezat ćemo dva Shield-A i naučiti ih “razgovarati”

Čeka nas zanimljiva programerska godina, do čitanja!

Mr. sc. Vladimir Mitrović

This article is from: