Har du läst del 1 av denna artikelserie kan tillräckligt mycket Linux för att kunna navigera i filsystemet, förstå dig på rättigheterna och sudo, redigera textfiler, göra filer körbara samt hitta mer hjälp om kommandon och systemet. Nu är det dags att gå vidare och titta på Raspberry Pi:en och vad det är som gör den så praktisk.

Det som gör Raspberry Pi:en så intressant är GPIO-portarna. På dessa kan vi koppla in alltifrån temperaturprobar, fuktmätare, handkontroller med mera. Vi kan också styra andra saker, så som lysdioder, motorer, reläer med mera. Här nedanför ser du en bild på GPIO-portarna samt en enkel ritning över vad de olika portarna har för funktion. Bilden och ritningen är på en Raspberry Pi rev. B+. De nyare Raspberry Pi har fler GPIO-portar, men principerna är ändå detsamma.

Bild på GPIO-portarna

Ritning över GPIO-portarna

Som du ser på ritning här ovan så har vissa av portarna namn som GPIO2, GPIO17, GPIO18 och så vidare. Dessa namnen kan man använda när man programmerar mot GPIO-portarna i Python. Då använder man sig av inställningen BCM. Vill man istället hänvisa till de fysiska portarna, det vill säga port nummer 1, är också port nummer 1 i Python, så ska man istället använda sig av inställningen BOARD i Python. Mer om detta lite senare, just nu behöver vi bara veta att det finns två olika sätt att namnge GPIO-portarna.

Konfigurera din Pi

Det enklaste sättet att konfigurera sin Pi på är via verktyget raspi-config. Du måste starta detta med sudo raspi-config för att göra inställningar som påverkar hela systemet. I raspi-config kan du göra det mesta, så som att aktivera kameramodulen, aktivera stödet för 1-Wire, överklocka din Pi och så vidare. Det finns också ett grafiskt verktyg som i mångt och mycket påminner om raspi-config och nås via menysystemet i GUI:t, under Setup.

GPIO-portarna och Python

Här kommer en kort introduktion till GPIO-portarna och några enkla exempel på vad man kan göra med dem. Vi börjar med ett enkelt exempel med en lysdiod som vi kan tända och släcka via Python. Börja med att installera GPIO-biblioteken för Python 3 till din Pi med sudo apt-get install python3-rpi.gpio. Nu ska vi börja att koppla upp vårt första experiment med Pi:en och vår lysdiod. En experimentplatta, eller kopplingsplatta som det också kallas, är att rekommendera. Börja med att koppla upp labben enligt ritningen nedan.

Lysdiod till Pi:en

Som du ser på ritning här ovan så har vi kopplat lysdiodens anod, alltså dess positiva sida (sidan med det längre benet) till port 11 på vår Raspberry Pi. Detta ska vi använda i vårt program som vi nu ska skapa. Koppla därefter en resistor på 220 Ohm till andra bener på lysdioden. Koppla sedan ihop resistorn med med port 25 på Pi:en (jord/minus). Programmet vi nu kommer att göra kommer tända och släcka lysdioden, om och om igen, med en sekunds mellanrum. Min labb ser ut som på bilden nedan.

ANNONS FÖR VÅRA EGNA BÖCKER Demonerna på internet

Laboration

Om du inte redan gjort det behöver du först installera Python 3-biblioteken för Raspberry Pi:en. Gör detta med sudo apt-get install python3-rpi.gpio. Skapa därefter följande lilla program med valfri texteditor och spara filen som blinkled.py.

#!/usr/bin/env python3
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
GPIO.setup(11, GPIO.OUT)

while True:
    try:
        GPIO.output(11, True)
        time.sleep(1)
        GPIO.output(11, False)
        time.sleep(1)
    except:
        GPIO.output(11, False)
        GPIO.cleanup()
        quit()

Ändra därefter rättigheterna på filen så att du kan köra den. Gör detta med chmod +x blinkled.py. Kör därefter programmet med ./blinkled.py och se hur (förhoppningsvis) lysdioden blinkar. För att avbryta programmet trycker på CTRL-C, alltså håll in CTRL och tryck samtidigt på C.

Vad gör då programmet? Vi tar och går igenom hela programmet här, rad för rad. Den första raden talar om för skalet att vi vill köra detta programmet med Python 3. De följande två raderna importerar två moduler som vi behöver, först modulen för Raspberry Pi:ens GPIO-portar och sedan tids-modulen time. Därefter gör vi en del inställningar för GPIO-portarna i vårt program. Först talar vi om att vi vill använda oss av BOARD för att namnge portarna på Pi:en, det vill säga vi namnger dem efter dess fysiska position på kortet. Därefter stänger vi av alla varningar med setwarnings(False). Och sist men inte minst så talar vi om att vi kommer att använda oss av port 11 i output-läge. Nu är GPIO-porten redo och vi kan börja på själva programmet.

Hela programmet läggs i en while True-slinga som gör att programmet kommer att köras om och om igen, i all oändlighet tills någon avbryter det. Därefter lägger vi själva tänd/släck-funktionen i en try-sats. Detta gör vi för att om vi avbryter programmet när lysdioden är tänd, så ska except-satsen släcka lysdioden och städa upp efter sig, och till slut avsluta programmet. Detta gör man för att inte lysdioden ska förbli tänd efter att programmet har avslutats. Men om vi återgår till tända och släcka lysdioden. Först tänds lysdioden med GPIO.output(11, True), sedan pausas körningen i en sekund med time.sleep(1), för att sedan släcka lysdioden igen med GPIO.output(11, False). Efter detta pausas programmet igen i en sekund med time.sleep(1). Därefter börjar det om från början igen med att tända lysioden. Så fortsätter programmet så tills vi väljer att avbryta det på något sätt, till exempel med CTRL-C.

Summering

Nu har vi kommer en bra bit på vägen, både med Raspberry Pi:en, Linux och Python. Vi har lärt oss navigera i Linux, redigera textfiler och förstå rättigheter. Vi har lärt oss hur Pi:en fungerar med dess GPIO-portar och sist men inte minst har vi lärt oss hur vi styr GPIO-portarna med Python. Nu är det bara fantasin som sätter gränser för vad vi kan bygga.


Nyhetsbrev
Nyhetsuppdateringar från tidningen direkt till din inkorg, helt kostnadsfritt. Avsluta när du vill.

Kommentarer

Kommentarsfältet är modererat. Det innebär att alla kommentarer granskas av ansvarig utgivare före publicering.

Du väljer själv om du vill ange ditt riktiga namn, en pseudonym eller vara helt anonym. Ingen registrering behövs.