Sistem na čipu (Vir:1) je tehnologija, ki je omogočila pametne telefone. Preko malih matičnih plošč (Vir:2) omogoča hiter razvoj s pomočjo ustreznih modulov. Tehnično je SoC procesorsko jedro(a), grafična kartica in večina potrebne vhodno izhodne elektronike. Še posebej moramo omeniti GPIO (General-purpose input/output) (Vir:6) dodatek, ki omogoča krmiljenje, komunikacijo in nadzor.
Avtor: Boštjan Šuhel
E-pošta: bostjan.suhel@gmail.com
2021-298-34
Po mednarodni predstavitvi krmilnega jedra v okviru slovenske izdaje (Vir:3), je prav, da pokažemo izgradnjo minimalnega učila. Minimalno učilo predstavlja malo matično ploščo (Vir:4) in modul s štirimiLED-icami in štirimi kapacitivnimi tipkami (Vir:5). Za povezavo uporabljamo vtične priključne žice (Vir:7).
Modul s tipkami in led
Gre za zanimiv modul s štirimi signalnimi led in štirimi kapacitivnimi tipkami. Signalne LED-ice so priključene na izhodne priključke. Tipke so tudi priključene na izhodne priključke, vendar preko cca. 5kΩ upora. Tako imamo možnost na GPIO vhodu male matične plošče nastaviti vhod ali izhod. Če nastavimo vhod beremo stanje kapacitivne tipke, če nastavimo izhod, zazna stanje signalna LED-. Stanje tipke se v tem primeru povozi. To nam daje zanimivo priložnost branja stanje tipke in obenem neodvisno izpisovati stanje LED-ice.
Ta vsebina je samo za naročnike
Mala matična plošča
Male matične plošče imajo GPIO (Vir:7). Imajo dimenzijo kreditne kartice in imajo pritrdilne izvrtine, GPIO konektor in druge standardne mehanske karakteristike. Imamo 4 porte po 8 bitov. Vsak bit ima standardno IO, prekinitveno in pulzno širinsko logiko. Skoraj vsak pin ima dodane specialne funkcionalnosti. Funkcionalnosti so lahko programsko ali strojno omejene. Tipične funkcionalnosti so komunikacije in dodeljevanje posebnih nalog, kot je npr. komandne linije za SD kartico in podobno.
Programsko imamo dostopnih 28 od 32 bitov. Na ploščiči je veliko mase (GND), imamo tudi 5V in 3,3V napajanje. Razpored na 40 pinskem GPIO konektorju je standard za razne razširitvene module.
Minimalno učilo
Je sestavljeno iz male matične plošče in modulom s tipkami in LED-icami.
Modul in matično ploščo povežemo s šestimi vodniki. Dva za napajanje (masa in 3,3V) in štiri za izhode kapacitivnih tipk. Na Python->Tipke->navodila.py je funkcija pin().
Program navodila.py vrne načrt ožičenja za vse module, ki jih uporabljamo v slovenski izdaji.
Sam program navodila.py je napisan tako, da opiše priključitev tipk na malo matično ploščo.
Vidimo, da je tipka1 na GPIO pinu 3. V python programih je ime t1 bool spremenljivka za tipko1 Podobno lahko zapišemo za tipka2, tipka3 in tipka4.
Minimalno učilo je odlično za osnovne vaje in za vaje povezovanja (konektiranja). Učenci v živo priključijo matično ploščo in modul s tipkami in LED-icami. Za to porabimo 6 žičnih povezav.
Slika 6 kaže enostavnost povezav in mogočo tehnologijo lepljenja modula na ohišje s pomočjo vroče plastike. Odlično za kreativne konstrukcije in ceno vsekakor globoko pod 60€.
Python->Tipke
Python->Tipke->gor.py
Krmilno jedro ima tri elemente. V delu programa, ki določa lastnosti, določimo delovanje tipke t1 na »gor«, kar pomeni, da je funkcija tap(t1) True pri prvem branju po spremembi stanja t1 iz 0 v 1, torej gor. Določimo tudi začetno vrednost bool spremenljivke tp na True:
- Črno označeno je objekt krmilnega jedra, ki se izvaja kadar je program v stanju start (kar je začetna vrednost). Ko pritisnemo tipko t1 (ali gumb g1), se stanje t2 spremeni na tp.
- Spremenljivki tp tudi negiramo vrednost. Posledično se ob vsakem pritisku na tipko t1 spremeni stanje na led2.
- Rdeče označeno je objekt, ki se izvaja kadar je program v stanju stop. V tem stanju led2 ohranja vrednost, ne glede na pritiskanje tipke t1.
- Zeleno označeno je objekt ki se izvaja stalno in vpisuje stanja tipke t1 in bool spremenljivke v diagram. Če pritisnemo na gumb »Izris«, dobimo časovni potek (trend diagram) stanja tipke t1 in led2. Vidimo da se stanje led2 spremeni vedno, ko pritisnemo tipko t1.
Python->Tipke->ali.py
Program prižge led1 in led2, če pritisnemo tipko t1 ali tipko t2. Izris nam pokaže stanje tipke t1, tipke t2 in bool spremenljivke tp. Ker bool spremenljivka tp nastavlja stanje led1 in led2, je tretji diagram stanje led1 in led2.
Python->Tipke->daljsaj.py
Program daljsaj.py deluje kot časovni rele za daljšanje pulza. Časovni releji so uvod v sekvenčna vezja, kjer je izhodno stanje odvisno od predhodnega stanja, oziroma smo v sekvenci. Ko pritisnem na tipko t1, se prižgeta led1 in led2 za pred nastavljeno vrednost, ne glede na dolžino pritiska na tipki t1. Uporabno npr. za stopniščni avtomat.
Pokazali smo samo tri vaje iz vsakega sklopa. Če koga zanimajo vse vaje, ste vabljeni, da si ogledate Vir:3. Pokazana je tudi praktična uporaba krmilnega jedra. Krmilno jedro je nadzirano preko UDP telegramov in omogoča funkcije, ki so opisovane tudi v tem članku.
Naslednjič
Naslednjič se bomo spustili v delujoče šolske projekte. Na mednarodnih predstavitvah smo govorili o orkestraciji ključnih tehnologij, ki jih na slovenski izdaji predhodno obdelamo. Govor je o html, css, javascript, php, python in c. Začeli bomo s klimatom. Klimat pokaže, kako zbiramo meritve in jih zapisujemo v sql bazo. Kako iz teh meritev prikažemo tedenske diagrame. Dodan je histrerezni regulator temperature in tedenski urnik referenčne temperature. Gre za krmiljenje, regulacijo in vodenje, sveti trojček regulacij. V laboratoriji nove mehatronike so delujoči projekti postavljeni na ločenem učilu, ki je stalno priključen in zbira podatke. Orkestracija tehnologij je ključni korak k razumevanju razvojnih tehnologij.
Viri:
https://en.wikipedia.org/wiki/System_on_a_chip
https://sl.wikipedia.org/wiki/Raspberry_Pi
http://si.raspberryip.com/
https://www.galagomarket.com/item/display/1862/5377_raspberry-pi_raspberry-pi_raspberry-pi-4-model-b,-2gb
https://www.banggood.com/CJMCU-0401-4-bit-Button-Capacitive-Touch-Proximity-Sensor-Module-With-Self-locking-Function-p-1118016.html
https://en.wikipedia.org/wiki/General-purpose_input/output
https://www.banggood.com/40pcs-20cm-Female-to-Female-Jumper-Cable-Dupont-Wire-p-75612.html
https://www.raspberrypi.org/documentation/usage/gpio/