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.

Bekötés

A panel kimenetei:

A nyolc narancssárga csatlakozó a panel kimeneti pontjai. Minden egyes kimenet mögött a következő áramkör áll:

Kimeneti áramkör

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.

Kimeneti relék

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:

Motorvezérlés bekötése relékimenetről

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:

Jumperek leírása

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:

Összeszerelés lengővezetékezéssel

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!