A Piface Digital HAT nem egy mai csirke, mondhatnánk némi képzavarral élve. A 2012-ben megrendezett Cambridge Raspberry Jam rendezvényen mutatták be, ebben az évben került forgalomba, és ekkor írt róla Gordon Henderson kiváló termékismertető posztot népszerű oldalán. (https://projects.drogon.net/piface/).
A cikk természetesen az „ős” Piface kártya leírása, ami sok változáson ment keresztül az elmúlt hét év során. Több hiányosságot kijavítottak azóta a HAT fejlesztői, pl. felkerültek a Henderson cikkében jogosan hiányolt jumperek, amikkel többek között az eszköz címzése állítható be. Ami nem változott, az a HAT két központi eleme, a Microchip gyártmányú MCP23S17-es, SPI buszos, 16-bites I/O buszbővítő, illetve a Texas Instruments gyártmányú ULN2803A darlington tranzisztor tömb. A panel felépítése viszonylag egyszerű, a buszbővítő áramkör az SPI-n keresztül kommunikál a Raspberry Pi-vel, nyolc csatornáját bementként használja, másik nyolc csatornája pedig a kimenet. Ezek a kimenetek vezérlik a szintén nyolc darlington kapcsolású tranzisztort tartalmazó ULN2803A-t, ami nem csak biztonságos leválasztást szolgálja, hanem az adatlap tanúsága szerint csatornánként maximum 50V/500mA terhelhetőséget is biztosít.
További „kényelmi” szolgáltatások a kimenet első két csatornájára kapcsolt (de a megfelelő jumperek segítségével lekapcsolható) morze érintkezős relék, az összes kimeneti csatorna státuszát kijelző SMD ledek, valamint a bemenet első négy csatornájára kötött nyomógombok, amik lenyomásuk esetén az alapból felhúzó ellenállásokkal magas szintre kapcsolt bemeneteket GND potenciálra húzzák le. A kimenetek egyébként open collectoros megoldások, így külső, magasabb tápfeszültségű alkalmazások működtetésére is kiválóak.
Ami szintén nem változott, sajnos, az a nem túl hatékony szoftveres támogatás, ami az idevágó fórumok tanúsága szerint hosszú ideje okoz gondot a felhasználók körében. Már a korábbi Raspberry Pi változatok kapcsán is sok felhasználó jelezte, hogy nem tudja telepíteni, illetve használni a HAT-et, döntően szoftveres problémák miatt.
A 4-es Pi verzió megjelenése kapcsán új lendületet kapott a téma, sokan fordultak el az egyébként remek kis paneltől, így felmerült az igény, hogy teszteljük a Piface Digital működőképességét a négyes Raspberry-vel.
A teszt előtt azonban vegyük tüzetesebben szemügyre az áramkört!
1. A Piface Digital felépítése:
A panel V2-es verziója látható az ábrán, ami csak elrendezésben különbözik a korábbi változattól. A sorkapocs zöld színnel jelölt csatlakozói a bemenetek,amik beépített felhúzó ellenállással rendelkeznek. A csatlakozósor jobb szélső eleme a GND pont, így a kapcsoló (nyomógomb) bekötésénél ez felhasználható az egyik kontaktushoz.
A panel kimenetei:
A nyolc narancssárga csatlakozó a panel kimeneti pontjai. Minden egyes kimenet mögött a következő áramkör áll:
A kimenethez ledek, izzólámpák, DC motorok csatlakoztathatók.
A JP7-es jumper a Raspberry Pi 5V-os tápfeszültségét kapcsolja a kimenetre.
Darlington kimenetek:
A JP4-es jumper a beépített védődiódák ki- illetve bekapcsolására szolgál. Ezek a fordított polaritással bekötött diódák az induktív terhelés kikapcsolásakor keletkező káros „visszáramok” söntölésére szolgálnak, amik tönkretehetik a kimeneti tranzisztort.
Amennyiben nem az 5V-os tápfeszültséget használjuk, a jumpereket el kell távolítani!
Relés kimenetek:
A kimenet első két csatornája (0,1) két, morze-érintkezős relét működtet, amennyiben a JP5, ill. JP6 jumper a helyén van.
A morze-érintkezős reléknek három kivezetésük van, a közös pont (CO), az alaphelyzetben zárt (NC) és az alaphelyzetben nyitott (NO) érintkező. Kikapcsolt állapotban a CO és az NC érintkezők vannak összekötve, ha a relé vezérlést kap, az érintkező átvált, és a CO és az NO érintkezők zárnak össze. Egy egyszerű motor ki/bekapcsoló áramköre a következő képpen oldható meg az egyik relé felhasználásával:
A panel címzése:
A HAT felépítése lehetővé teszi, hogy több kártyát is használjunk egyszerre. Ebben az esetben a két Piface címét a JP1/JP2 jumperekkel különböző címekre kell állítani.
Az ábrán az alapbeállítás látható, az eszköz a 0-ás címre van állítva.
Külső tápfeszültség alkalmazása:
A JP3-as jumper lehetővé teszi, hogy a Piface-t leválasszuk a Raspberry Pi 5V-os tápfeszültségéről. Ebben az esetben a sorkapcsok GND ( – ) illetve 5V ( + ) feliratú kapcsaira kell kötnünk a külső energiaforrást.
Sose használjuk úgy a külső tápfeszültség forrást, hogy ez a jumper a helyén van!!
A Piface Digital jumperei:
2. A Piface Digital programozása:
A legegyszerűbbnek tűnő, általunk is tesztelt megoldás a „pifacecommon” mappa letöltése a PifaceGithub oldalról. Ennek lépései a következők:
– indítsunk el egy terminál ablakot, „álljunk” a home/pi könyvtárba (cd ~) majd gépeljük be a következő parancsokat:
gitclone https://github.com/piface/pifacecommon.git
cd pifacecommon
python setup.py build
sudo python setup.py install
– második lépésként töltsük le a szükséges Python könyvtárakat:
sudo pip install pifacedigitalio
A könyvtár letöltése után a programozás már könnyű feladat, segítségképpen még néhány javaslat:
import pifacedigitalio as p
(könyvtár importálás, alias p hozzáadása)
p.init()
(piface hat inicializálása)
p.digital_write(ch,1/0)
(írás az adott csatornára)
p.digital_read(ch)
(olvasás az adott csatornáról – ch = 0-7)
3. Példaprogramok:
Az alábbiakban három nagyon egyszerű program segítségével ismerheted meg a PifaceDigital alapfunkcióit Python programozási nyelven.
LED villogtatás
Az egyik kimenet (esetünkben a 7., azaz utolsó) logikai állapotát változtatja a program logikai 0, illetve 1 között:
# led_blink - PifaceDigital * Malnasuli– 2019 import time import pifacedigitalio as p p.init() while True: p.digital_write(7,1) time.sleep(0.1) p.digital_write(7,0) time.sleep(0.1)
LEDsor
A második programban a Piface 8 kimenetét kapcsoljuk sorban először logikai 1, majd logikai 0 szintre,azaz először az összes ellenörző ledet sorban bekapcsoljuk, majd azonos sorrendben ki:
# ledsor - PifaceDigital * Malnasuli– 2019 import time import pifacedigitalio as p p.init() while True: for out in range(0,8): p.digital_write(out,1) time.sleep(0.2) for out in range(0,8): p.digital_write(out,0) time.sleep(0.2)
Bemenet kiolvasás
A harmadik mintaprogramban az első bemenetet (ch0) olvassuk ki és állapotának függvényében vagy az első,vagy a második kimenet billen logikai 1 szintre:
# bemenet - PifaceDigital * Malnasuli - 2019 import pifacedigitalio as p p.init() while True: a = p.digital_read(0) print(a) if a == 1: p.digital_write(0,1) p.digital_write(1,0) else: p.digital_write(0,0) p.digital_write(1,1)
4. Összeszerelés:
A PifaceDigital alapvetően HAT típusú kiegészítő, így tervezői elképzelései szerint a Rasberry Pi tetején foglalna helyet a GPIO port tüskéihez csatlakoztatva. A probléma azonban a negyedik generációs Pi esetén kettős. Egyrészt a Raspberry paneljén történt változtatások miatt (pl. az USB és a NET csatlakozók cseréje) mechanikailag a panel nem csatlakoztatható, másrészt ha ez a probléma nem is akadályozná a két áramkör fizikai illesztését, a Pi4 megnövekedett hőleadása miatt nem lenne szerencsés „letakarni” a panelt.
A probléma feloldására két megoldás kínálkozik. Az első, egy megfelelő „távtartó közdarab” beiktatásával messzebbre tudjuk helyezni a HAT-et a Pi-től, így nem jön létre mechanikai ütközés, illetve az alkatrészek hőleadását sem gátoljuk. Erre látunk példát az alábbi képeken:
Másik lehetőség, ha a Piface-t nem HAT-ként alkalmazzuk, hanem a Pi megfelelő GPIO tüskéit összekötjük a panel csatlakozójának megfelelő pontjaival. Erre a feladatra jumper kábeleket használhatunk:
Azt, hogy melyik lábakat kell összekötnünk, azt a PifaceDigital kapcsolási rajzáról tudjuk leolvasni:
Összesen hét darab vezetékre lesz szükségünk, az összekötendő lábak az alábbi táblázatban láthatóak:
A három forráskód letölthető:
A cikkben használt PiFaceDigital panel megvásárolható a MálnaPC Webshopjában!