6502 kikar på: IO kort till Raspberry Pi
Postat: 21 april 2013, 14:51:11
I en serie med artiklar så kommer jag att kika lite på olika spännande kort och kort beskriva dem och deras funktionalitet. Om Du har egna erfarenheter av korten så lägg gärna till dem här så kan fler ta del av informationen och avgöra om det passar i deras applikationer.
I den här artikeln så kikar jag lite närmare på två stycken IO kort till Raspberry Pi.
Korten jag kikar på idag är RasPiComm och PiFace. Två stycken enklare IO kort med lite olika fokus. PiFace PiFace är ett rent IO kort med 8 ingångar och 8 utgångar och då detta kort inte utnyttjar RPi'ns egna GPIO portar så blir detta 8 extra input och 8 extra output pinnar. Portarna skapas av en SPI-expander krets från Microchip (MCP23S17). Utgångarna drivs av en UN2803 krets och kan därför svälja upp till 500mA per kanal vilket gör att man lätt driver ett relä. En lysdiod per utgång gör det enkelt att se vilket state varje utgångspinne har. Ingångarna är enkla pull-upp baserade ingångar som kan kopplas till en kontakt eller knapp och som sedan kortsluter mot jord. De första fyra ingångarna är anslutna till tryckknappar på kortet vilket gör det enkelt att komma igång och labba med kortet.
Installation av mjukvara
Dessa instruktioner baseras på att Du använder dig av Raspian på din pi.
PiFace använder sig av SPI-interfacet som måste aktiveras innan Du kan använda det. Jag följde manualen och det fungerade bra.
Börja med att ta bort SPI drivern från svartlistan, gör så här:
Nu ska vi installera och konfigurera PiFace biblioteken och ändra rättigheterna på SPI interfacet. Utvecklarna av PiFace har varit vänliga nog att skriva ett skript som fixar allt detta åt oss. Detta är vad vi behöver göra för att köra det skriptet. Se till att din Pi har tillgång till internet innan Du börjar.
Nu är din Pi redo att styra i princip vad Du vill. Du kan testa kortet genom den trevliga appen piface-emulator som nu finns installerad. Starta X och skriv i en terminal "piface/scripts/piface-emulator". Emulatorn har möjlighet att styra alla aspekter av kortet. Testa att klicka på "Output pin 0" knappen i interfacet, Du kan nu både se och höra att reläet som är kopplat på port 0 går på. Installern installerade även ett Python API för att styra kortet. Jag testade snabbt att köra exemplen som finns i manualen.
och det fungerade naturligtvis glimrande.
Summering
Kortet är mycket lättanvänt och i princip vem som helst kan nog få igång det. Så om det är mer I/O pinnar Du är ute efter och kanske har behov av ett eller två relä'n så är detta kortet för Dig.
RasPiComm RasPiComm skiljer sig markant från PiFace då det är ett kommunikationsorienterat kort och har en batteriansluten realtidsklocka. Det har också en RS232 port som är ansluten till UART'en på Broadcom kretsen samt en extern UART för RS485 porten. Den externa UART'en styrs från SPI interfacet och är kapabelt att föra över data i upp till 230400 Baud. Både RS232 porten och RS485 porten har pluggbara kontaktdon med skruvanslutning vilket också gäller kontakten för extern 5 voltsmatning. RasPiComm skiljer sig också från PiFace i och med att det använder sig av Raspberry Pi'n egna GPIO anslutningar på IO headern. 5 stycken 5 volts toleranta ingångar finns det och två stycken open collector utgångar med LED indikering. Ingångarna är även anslutna till en 5 vägs joystick på kortet vilket återigen gör det riktigt enkelt att komma igång med att labba.
Utdraget till kontakter finns även I2C interfacet ich SPI interfacet vilket gör att man enkelt kan ansluta t.ex. en I2C display eller en SPI baserad IO expander bara för att nämna två enkla exempel.
Kortet har som redan nämnts även en batteriansluten realtidsklocka som efter installation håller systemtiden uppdaterad.
Installation av mjukvara
Jag valde att köra dom här testerna på samma SD kort som jag installerade PiFace kortets drivrutiner och mjukvara på och det var inga problem. Installationen är liknande den för PiFace men något annorlunda då detta kortet också använder sig av I2C. Först så måste vi se till att I2C modulerna är påslagna och laddas som dom skall. Först ska dom bort från svartlistan.
Verifiera att din realtidsklocka fungera genom att skriva "sudo hwclock -r", du ska då får en utskrift typ "Sun Apr 21 12:15:40 2013 -0.926214 seconds" då vet du att realtidsklockan fungerar som det ska. Du kan också testa att skriva "sudo raspicommdemo --setoutputs" för att tända båda lysdioderna samt "sudo raspicommdemo --unsetoutputs" för att släcka dem igen. Mjukvaran till RasPiComm är mer C orienterad då den har ett C API och ett C bibliotek som tar hand om kommunikationen mot kortet. I skrivande stund finns inga Python-bindings men det är jag säker på kommer så småningom. RS232 porten programmeras som vanligt med funktioner som "int fd = open("/dev/ttyAMA0", O_RDWR | O_NOCTTY | O_NDELAY);" medans RS485 porten stöds av den medföljande mjukvaran. För mer detaljerad information om mjukvaran och C biblioteket för RasPiComm så ta en titt på deras githubsida och surfa gärna in på deras supportforum, där finns också mycket information.
Summering
Ett mer kommunikationsorienterat kort som för närvarande kräver kunskap i C för att kunna programmeras och styras men riktigt nifty med realtidsklocka och en joystick på kortet.
I den här artikeln så kikar jag lite närmare på två stycken IO kort till Raspberry Pi.
Korten jag kikar på idag är RasPiComm och PiFace. Två stycken enklare IO kort med lite olika fokus. PiFace PiFace är ett rent IO kort med 8 ingångar och 8 utgångar och då detta kort inte utnyttjar RPi'ns egna GPIO portar så blir detta 8 extra input och 8 extra output pinnar. Portarna skapas av en SPI-expander krets från Microchip (MCP23S17). Utgångarna drivs av en UN2803 krets och kan därför svälja upp till 500mA per kanal vilket gör att man lätt driver ett relä. En lysdiod per utgång gör det enkelt att se vilket state varje utgångspinne har. Ingångarna är enkla pull-upp baserade ingångar som kan kopplas till en kontakt eller knapp och som sedan kortsluter mot jord. De första fyra ingångarna är anslutna till tryckknappar på kortet vilket gör det enkelt att komma igång och labba med kortet.
Installation av mjukvara
Dessa instruktioner baseras på att Du använder dig av Raspian på din pi.
PiFace använder sig av SPI-interfacet som måste aktiveras innan Du kan använda det. Jag följde manualen och det fungerade bra.
Börja med att ta bort SPI drivern från svartlistan, gör så här:
- Logga in på din pi
- Editera svartlistan så här sudo nano /etc/modprobe.d/raspi-blacklist.conf
- Sätt in ett kommentarsmärke framför "blacklist spi-bcm2708"
Nu ska vi installera och konfigurera PiFace biblioteken och ändra rättigheterna på SPI interfacet. Utvecklarna av PiFace har varit vänliga nog att skriva ett skript som fixar allt detta åt oss. Detta är vad vi behöver göra för att köra det skriptet. Se till att din Pi har tillgång till internet innan Du börjar.
- sudo apt-get update
- wget -O - http://pi.cs.man.ac.uk/download/install.txt | bash
Nu är din Pi redo att styra i princip vad Du vill. Du kan testa kortet genom den trevliga appen piface-emulator som nu finns installerad. Starta X och skriv i en terminal "piface/scripts/piface-emulator". Emulatorn har möjlighet att styra alla aspekter av kortet. Testa att klicka på "Output pin 0" knappen i interfacet, Du kan nu både se och höra att reläet som är kopplat på port 0 går på. Installern installerade även ett Python API för att styra kortet. Jag testade snabbt att köra exemplen som finns i manualen.
Kod: Markera allt
>>> from time import sleep
>>> import piface.pfio as pfio
>>> pfio.init()
>>> while(True):
... pfio.digital_write(0,1)
... sleep(1)
... pfio.digital_write(0,0)
... sleep(1)
Summering
Kortet är mycket lättanvänt och i princip vem som helst kan nog få igång det. Så om det är mer I/O pinnar Du är ute efter och kanske har behov av ett eller två relä'n så är detta kortet för Dig.
RasPiComm RasPiComm skiljer sig markant från PiFace då det är ett kommunikationsorienterat kort och har en batteriansluten realtidsklocka. Det har också en RS232 port som är ansluten till UART'en på Broadcom kretsen samt en extern UART för RS485 porten. Den externa UART'en styrs från SPI interfacet och är kapabelt att föra över data i upp till 230400 Baud. Både RS232 porten och RS485 porten har pluggbara kontaktdon med skruvanslutning vilket också gäller kontakten för extern 5 voltsmatning. RasPiComm skiljer sig också från PiFace i och med att det använder sig av Raspberry Pi'n egna GPIO anslutningar på IO headern. 5 stycken 5 volts toleranta ingångar finns det och två stycken open collector utgångar med LED indikering. Ingångarna är även anslutna till en 5 vägs joystick på kortet vilket återigen gör det riktigt enkelt att komma igång med att labba.
Utdraget till kontakter finns även I2C interfacet ich SPI interfacet vilket gör att man enkelt kan ansluta t.ex. en I2C display eller en SPI baserad IO expander bara för att nämna två enkla exempel.
Kortet har som redan nämnts även en batteriansluten realtidsklocka som efter installation håller systemtiden uppdaterad.
Installation av mjukvara
Jag valde att köra dom här testerna på samma SD kort som jag installerade PiFace kortets drivrutiner och mjukvara på och det var inga problem. Installationen är liknande den för PiFace men något annorlunda då detta kortet också använder sig av I2C. Först så måste vi se till att I2C modulerna är påslagna och laddas som dom skall. Först ska dom bort från svartlistan.
- Logga in på din pi
- Editera svartlistan så här sudo nano /etc/modprobe.d/raspi-blacklist.conf
- Sätt in ett kommentarsmärke framför "blacklist i2c-bcm2708"
- sudo modprobe i2c-dev i2c-bcm2708
- git clone https://github.com/amescon/raspicomm.git
- cd raspicomm
- sudo ./makeall.sh
Verifiera att din realtidsklocka fungera genom att skriva "sudo hwclock -r", du ska då får en utskrift typ "Sun Apr 21 12:15:40 2013 -0.926214 seconds" då vet du att realtidsklockan fungerar som det ska. Du kan också testa att skriva "sudo raspicommdemo --setoutputs" för att tända båda lysdioderna samt "sudo raspicommdemo --unsetoutputs" för att släcka dem igen. Mjukvaran till RasPiComm är mer C orienterad då den har ett C API och ett C bibliotek som tar hand om kommunikationen mot kortet. I skrivande stund finns inga Python-bindings men det är jag säker på kommer så småningom. RS232 porten programmeras som vanligt med funktioner som "int fd = open("/dev/ttyAMA0", O_RDWR | O_NOCTTY | O_NDELAY);" medans RS485 porten stöds av den medföljande mjukvaran. För mer detaljerad information om mjukvaran och C biblioteket för RasPiComm så ta en titt på deras githubsida och surfa gärna in på deras supportforum, där finns också mycket information.
Summering
Ett mer kommunikationsorienterat kort som för närvarande kräver kunskap i C för att kunna programmeras och styras men riktigt nifty med realtidsklocka och en joystick på kortet.