Kom igång med Raspberry Pi och Linux, del 2
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.
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.
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.
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.
Relaterade artiklar
-
Avlyssna trafik på servern med Wireshark och TShark
Wireshark är ett ovärderligt verktyg för att felsöka nätverkskonfigurationer, applikationer, API:er, demoner och mycket annat. I kombination med
tshark
kan vi dessutom avlyssna trafiken på en server i realtid. -
Var försiktig med att curl:a skript som root
Att installera program i Linux genom att omdirigera utdata från Curl till skalet är snabbt och smidigt. Men det är ack så farligt om du inte känner till programmet eller dess ursprung.
-
Vidarebefordran av SSH-agenten
SSH agent forwarding, eller vidarebefordran av SSH-agenten, innebär att man kan vidarebefordra SSH-agenten till ett fjärrsystem. På så sätt behöver man inte kopiera sin privata SSH-nyckel till fjärrsystemet, eller skapa flera nycklar för olika system. Men det finns risker med det.
-
Jenkins som ett alternativ till Ansible Tower
Ansible Tower kommer med en stor prislapp, speciellt för ett mindre företag eller en privatperson. AWX å andra sidan är helt fritt, men kräver numera Kubernetes. För den som vill automatisera sina Ansible Playbooks går det dock bra att använda Jenkins som en ersättning för Tower och AWX.
-
Hämta data från API:er med cURL och jq
Med cURL och jq går det att extrahera data från API:er direkt från kommandoraden. Jq är en JSON-tolkare och beskrivs av utvecklarna som sed och awk för JSON.
Senaste nyheterna och inläggen
-
Avlyssna trafik på servern med Wireshark och TShark
Wireshark är ett ovärderligt verktyg för att felsöka nätverkskonfigurationer, applikationer, API:er, demoner och mycket annat. I kombination med
tshark
kan vi dessutom avlyssna trafiken på en server i realtid. -
Mysig stämning på sommarens första demoparty
I helgen var det Reunion 2024 i Kvidinge Folkets hus, sommarens första skånska demoparty. Partyt organiserades av Jesper “Skuggan” Klingvall. På plats fanns ett 30-tal besökare.
-
Sommarens skånska demopartyn
Årets sommar bjuder på två skånska demopartyn. Först ut är Reunion i Kvidinge den 28–30 juni. Därefter är det Pågadata i Örtofta den 9–11 augusti.
-
Riskerna med BankID som ingen pratar om
BankID är ett säkert och smidigt sätt att identifiera sig online. Men i takt med dess ökade popularitet och användning har det blivit en svag länk – en single point of failure – på mer än ett sätt.
-
Polisernas fängelsedomar står fast
Efter tre år är målet mot de två poliser som olovligen tog sig in i en berusad mans bostad i Landskrona och misshandlade honom klart. Högsta domstolen beslutade den sjätte mars att avvisa överklagan. Fängelsedomarna för poliserna står därmed fast.
Utvalda artiklar
-
Mysig stämning på sommarens första demoparty
I helgen var det Reunion 2024 i Kvidinge Folkets hus, sommarens första skånska demoparty. Partyt organiserades av Jesper “Skuggan” Klingvall. På plats fanns ett 30-tal besökare.
-
Datorparty i Landskrona
I helgen höll Syntax Society sitt årliga sommarparty. Platsen var en källarlokal i Landskrona där ett femtontal personer medverkade.
-
Det första Pågadata har ägt rum
I helgen ägde det första Pågadata rum – uppföljaren till Gubbdata. Platsen var Folkets Hus i Kvidinge. Organisatör av partyt var Johan “z-nexx” Osvaldsson med hjälp från Jesper “Skuggan” Klingvall. Partyt hade över 100 anmälda deltagare.
-
Även hovrätten fäller poliserna för att ha satt dit oskyldig
Hovrätten fastställer straffet för de två poliser som förra året dömdes till vardera ett års fängelse av Lunds tingsrätt för att ha misshandlat och satt dit en oskyldig man. De båda poliserna ska även betala skadestånd till mannen.
-
Retroloppis i Påarp
Idag var det retroloppis hos Andreas Nilsson i Påarp. På baksidan av huset fanns hundratals spel uppradade på långa bord. Trots friska vindar och sval temperatur var loppisen välbesökt.
CyberInfo Sverige är ett it- och medieföretag i nordvästra Skåne som tillhandahåller böcker, utbildningar, nyheter och konsulttjänster inom Linux, säkerhet och programmering.
CyberInfo Sverige är godkänd för F-skatt, är momsregistrerat och innehar
utgivningsbevis för webbplatsen www.cyberinfo.se.