0,00 €

V košarici ni izdelkov.

0,00 €

V košarici ni izdelkov.

More
    DomovRevijaProgramiranjeKrmiljenje pametnih modulov - Shield-A, učni pripomoček za programiranje mikrokontrolerjev (14)

    Krmiljenje pametnih modulov – Shield-A, učni pripomoček za programiranje mikrokontrolerjev (14)

    Svet elektronike colorV spletnih trgovina lahko najdete veliko število “Arduino kompatibilnih” modulov – to so senzorji, displeji, LED prstani in trakovi, spominski moduli, tipkovnice in moduli za druge namene – slika 48 prikazuje samo majhen del te ponudbe. Dober del teh modulov ima na sebi “pametne čipe”, ki opravijo specifično nalogo: berejo tipke, izvajajo prikaz na 7-segmentnem, alfanumeričnem ali grafičnem displeju ali pač na večjem številu LED-ic, merijo temperaturo, tlak ali neko drugo fizikalno količino; nekateri “pametni čipi” imajo funkcionalnost kompleksnih naprav, kot radijski sprejemnik, merilna naprava, natančna ura ali spomini velike kapacitete…

    Avtorja: Vladimir Mitrović in Robert Sedak
    E-pošta: vmitrovic12@gmail.com
    2021-301-33

    Čeprav samostojno opravljajo svojo funkcijo, takšne module vedno krmili nek mikrokontroler, ki jim daje ukaze in obdeluje iz njih pridobljene podatke. Da bi lahko medsebojno komunicirati, morata biti mikrokontroler in “pametni čip” povezana na ustrezen način. Pogost način povezave je dvožilna komunikacija preko SCL in SDA signala in t.i. I2C protokola. Zato smo na razvojnem sistemu Shield-A predvideli konektor J1 (slika 49), ki razen SDA in SCL linij, omogoča tudi napajanje zunanjega modula z napetostjo 5 V (VCC in GND). Priključka SDA in SC sta direktno povezana s priključkoma PC4 in
    PC5 mikrokontrolerja ATmega328P na Arduino Uno ploščici. Preko njiju in njegovim vezjem za I2C komunikacijo, do katerega lahko dostopamo iz programov, pisanih v programskih jezikih Arduino in Bascom-AVR. Tako bomo preko mikrokontrolerja lahko povezali naš razvojni sistem z vsemi moduli, ki za komunikacijo uporabljajo I2C protokol in tudi module, ki uporabljajo druge načine komunikacije, če bomo znali sprogramirati njihov komunikacijski protokol in pod predpostavko, da sta za povezovanje dovolj dve krmilni liniji. SCL in SDA priključke lahko uporabimo tudi kot “običajne” izhode ali vhode… ta mali konektor J1 precej poveča možnosti razvojnega sistema Shield-A!

    Kako ga konkretno uporabiti? V Svetu elektronike smo že pisali o mnogih zanimivih Arduino kompatibilnih modulih, največ v seriji člankov, ki smo jo popularno poimenovali Barduino, pa tudi v nekaterih neodvisnih člankih:

    SE 233-236 I2C OLED displej
    SE 255-256 ZS-042 modul, RTC DS3231
    SE 257-258 ZS-042 modul, serijski EEPROM AT24C32
    SE 259-260 LED prstan, čip WS2812B
    SE 261 I2C IO modul, čip PCF8574/PCF8574A
    SE 262 I2C LCD displej, čip PCF8574/PCF8574A
    SE 263-266 različni LED&KEY in clock moduli, čipi TM1637 i TM1638
    SE 274-275 FM radio moduli
    SE 276-287 moduli iz kompleta 37-in-1

    Navedeni članki vsebujejo opis posameznega modula, njegov namen, shemo, način dela in povezovanja z mikrokontrolerjem in eden ali več Bascom-AVR programov, ki prikazujejo, kako jih lahko krmilimo. Večina teh programov se lahko direktno ali z manjšimi spremembami uporabi v razvojnem sistemu Shield-A; spremembe se v glavnem nanašajo na situacije, v katerih so moduli in drugi elementi povezani na priključke mikrokontrolerja, ki so različni od tistih, ki jih uporablja Shield-A. Vsi ti Bascom-AVR programi so brezplačno na voljo od uredništva revije. Uporabniki Arduino platforme bodo za iste module našli programske primere na internetnih forumih namenjenih Arduino uporabnikom; večina jih je tudi, z manjšimi spremembami, uporabna na razvojnem sistemu Shield-A.

    Tukaj ne bomo analizirati teh programov, pač pa bomo pojasnili, kako lahko module za različne namene povežemo s Shield-A. Najprej bomo pogledali shemo na sliki 50, ki poenostavljeno prikazuje katere vse priključke mikrokontrolerja lahko izkoristimo za nek način komunikacije z “zunanjim svetom”.

    Pričnimo s priključkoma PD0 in PD1, ki sta preko prilagodilnega čipa povezana z USB konektorjem. Preko njiju mikrokontroler vzpostavlja serijsko komunikacijo z osebnim računalnikom (PC). Ta komunikacija služi za prenos (upload) programa s PC-ja v mikrokontroler, in za izmenjavo podatkov med razvojnim sistemom in PC-jem (o tem smo več pisali v šestem nadaljevanju).

    Preostali priključki porta D, PD2-PD7 so povezani na letvico za priključek alfanumeričnega displeja (LCD). Njihov prvenstveni namena je krmiljenje LED-ic D2-D7 in RGB diod D8-D11, oziroma krmiljenje LCD-ja, kadar ga postavimo na Shield-A. Lahko jih uporabimo za povezovanje z drugimi napravami in moduli, vendar samo, če ne uporabljamo LED-ic ali LCD-ja. Zato bomo za povezovanje prvenstveno uporabili priključka SDA in SCL na konektorju J1. SDA in SCL so povezana s priključkoma PC4 in PC5, ki na razvojnem sistemu nista uporabljena na noben drugi način. Ta dva priključka sta ciljno izbrana, ker imata večkratno funkcionalnost: poleg tega, da sta lahko „navadna” digitalna izhoda ter digitalna in analogna vhoda, se lahko programsko povežeta na SDA in SCL priključka komunikacijskega vezja v mikrokontrolerju (od tod tudi izvirajo oznake na konektorju J1). Na ta način lahko najboljše izkoristimo hardverske možnosti mikrokontrolerja za vse čipe, ki podpirajo komunikacijo po I2C protokolu.

    Na J1 konektorju so še predvideni priključki za napajanje zunanjega modula, VCC (+5 V) in GND. Kakšen tok lahko modul “potegne” s teh priključkov je odvisno od izbranega načina napajanja Arduino ploščice. Če uporabimo napajanje preko USB konektorja, bo poraba omejena z varovalko na 500 mA. Če uporabimo napajanje z mrežnim adapterjem napetosti 7-12 V in preko vgrajenega napetostnega stabilizatorja AMS1117, lahko dobite tudi več od 1 A. Ker Arduino ploščica in Shield-A porabita samo nekaj deset mA, bi teoretično na konektor J1 lahko vezali dovolj velike porabnike. Vendar pa zaradi stabilnosti mikrokontrolerskega vezja priporočam, da se s konektorja J1 ne napajajo moduli, ki trošijo več od 200 mA, posebej, če je poraba vezanega modula naklonjena hitrim spremembam.

    Pokažimo sedaj nekaj konkretnih primerov vezave različnih vrst modula. Slika 51 prikazuje, kako na Shield-A vezati ZS-042 modul, na katerem sta vgrajena dva čipa: ura realnega časa DS3231 in serijski EEPROM 24C32. Oba čipa komunicirata preko I2C protokola in je dovolj, da medsebojno povežemo istoimenske priključke na modulu in razvojnem sistemu. Preostala dva priključka na modulu bomo pustili”v zraku”; s tem smo se odrekli nekaterim dodatnim funkcionalnostim DS3231 čipa, kar nam v tem trenutku ni pomembno.

    I2C protokol je zelo praktičen: vsi čipi in moduli se paralelno vežejo na isto dvobitno vodilo s SCL in SDA linijama, preko katere jih mikrokontroler krmili. Uporabljajo ga različne naprave: alfanumerični in grafični displeji, vhodno/izhodni moduli, merilni čipi, različni čipi, ki se uporabljajo v TV sprejemnikih in drugih elektronskih napravah… Da bi komunikacija v taki konfiguraciji bila mogoča, so čipi in moduli vezani na isto vodilo in morajo imeti različne naslove. Naslov je nekaj, kar karakterizira določeno integrirano vezje in tako, npr., imajo vsi DS3231 čipi isti naslov. Pri nekaterih čipih lahko izbirate med nekaj vgrajenimi naslovi, z vezavo naslovnih priključkov na maso ali na napetost napajanja – primer za to je AT29C32, ki ima 3 naslovne linije, ki nudijo izbor enega od 8 naslovov.

    Kaj to konkretno pomeni za nas? Na konektor J1 lahko paralelno vežemo enega ali več I2C čipov in modulov pod predpostavko, da so njihovi naslovi različni. Npr, poleg ZS-042 modula s slike 51, lahko vežete tudi I2C OLED grafični displej, ne pa dva displeja, ker verjetno uporabljata iste čipe z istim naslovom.

    Slika 52 kaže, kako na Shield-A vežemo modul ure s čipom TM1637. TM1637 lahko v multipleksiranem načinu dela podpira prikaz na šestih 7-segmentnih displejih in paralelno s tem bere stanja 16 tipk ali stikal, tako da so njegove možnosti v tem modulu samo delno izkoriščene. Za komunikacijo se uporabljata dve liniji, CLK in DIO. Čeprav shema povezovanja zelo spominja na tisto s slike 51, gre tukaj za popolnoma drugačen primer, ker TM1637 ne podpira I2C protokola. To bo imelo dve posledici:

    za komunikacijo ne bomo uporabili hardverskega komunikacijskega modula mikrokontrolerja in njegova SCL ter SDA priključka, pač pa bomo komunikacijski protokol morati sami programirati z uporabo “navadnih” vhodno/izhodnih priključkov PC4 in PC5;
    TM1637 nima lasnega naslova, zato je na Shield-A v istem trenutku lahko priključen samo en modul takega tipa.

    Shema na sliki 53 prikazuje enega od nekaj LED&KEY modulov, ki so dostopni na trgu. Takšni moduli praviloma uporabljajo TM1638 čip, ki v multipleksnem režimu podpira matrico z 80 LED-icami (= deset 7-segmentnih displejev ali, v tem primeru osem 7-segmentnih displejev + niz 8 dvobarvnih diod) in 24 stikal ali tipk. Za razliko od svojega “mlajšega brata” s slike 52, komunikacijski protokol TM1638 čipa zahteva še en signal, STB (strobe), ki ga bomo morati vzeti z LCD letvice, s čemer smo onemogočili, da se sočasno na Shield-A postavi LCD modul. Katerega od razpoložljivih priključkov bomo uporabili, bo odvisno od tega, katere LED-ice na Shield-A modulu še želimo uporabiti. Na sliki 53 je STB vezan na D4 priključek, s čemer smo osvobodili priključke D5-D7, s katerimi krmilimo RGB diode D8-D11.

    STB signal, ki uporablja LED&KEY modul s TM1638 čipom prinaša eno prednost: zaradi njega je na Shield-A mogoče povezati več takšnih modulov, pri čemer se CLK in DIO priključka vežeta paralelno na PC5 in PC4, vsak STB mora biti povezan na lastni priključek z LCD letvice.

    Med komunikacijskimi protokoli, ki uporabljajo enobitno vodilo, je najbolj poznan 1-wire, vendar pa med čipi, ki uporabljajo ta protokol, so najbolj poznani temperaturni senzorji, kot DS1820 ali DS18B20. Shema na sliki 54 kaže kako na Shield-A povezati module KY-001, na katerih se nahaja senzor DS18B20. Moduli se povezujejo paralelno, na isto vodilo je možno vezati tudi druge komponente, ki uporabljajo isti protokol. Vsaka 1-wire komponenta ima tovarniško vpisano enkratno 64-bitno kodo (naslov) in mikrokontroler bo, če pozna naslove vseh komponent na vodilu, vsako od njih posamezno “poklical” in vzpostavil komunikacijo.

    Strogo gledano, senzorji DS18B20 ne zahtevajo posebne napajalne napetosti, ker jo lahko dovolj “potegnejo” s samega vodila. Na KY-001 je vgrajena tudi LED-ica, ki nima neke funkcije razen da utripa med komunikacijo, vendar ne bo delovala brez posebnega napajanja – zato smo potegnili tudi ta tretji priključek, +.

    Obstajajo tudi drugi protokoli s katerimi je za komunikacijo dovolj enobitno vodilo, poleg tistega, ki uporabljajo “pametne” LED-ice WS1812B. Vsak WS1812B čip vsebuje tribarvno LED-dico in PWM vezje, ki krmili intenziteto vsake posamezne barve. Mikrokontroler pošilja sekvence 24-bitnih nizov, v katerih so “kodirani” želena intenziteta rdečega, zelenega in modrega segmenta. WS1812B čipi so povezani v niz, tako da se na izhod predhodnega čipa veže vhod naslednjega; vsak od čipov bo iz sprejete informacije ločil prvih 24 bitov, ostanek bo poslal naslednjemu nizu, in tako je za krmiljenje z delom večjega števila številk čipov dovolj samo ena komunikacijska linija.

    Shema na sliki 55 kažem kako na Shield-A lahko vežemo LED prstane z WS2812B čipi. Tukaj moramo upoštevati tudi porabo! Če se zadržimo na nižjih intenzivnostih svetilnosti (do 32/255), bomo za 20 čipov brez problema napajanje lahko “potegnili ” s konektorja J1. Kondenzator kapacitete 470 µF ali več je nujen zato, da motnje zaradi povzročene pulzno-širinske modulacije ne bi destabilizirale dela mikrokontrolerja. Pri večjem številu WS1812B čipov in višji intenzivnosti, je potrebno za LED prstane zagotoviti neodvisen vir napajanja ustrezne moči.

    S tem nikakor niso izčrpane vse možnosti! Na PC4 in PC5 priključke lahko vežete tipke, potenciometre, releje, analogne in digitalne izhode različnih senzorjev, elektronska vezja lastne izvedbe (slika 56)… Slika 57 kaže še eno interesantno možnost: povezovanje dveh razvojnih sistemov Shield-A. V tem primeru je možno uporabiti komunikacijo (v katerem je slučajno en Shield-A master, drugi slave) ali pač nek drugi protokol; zato so na shemi zadržane oznake SDA in SCL, ali PC4 in PC5.

    https://svet-el.si