Met de GPIO-pinnen bibliotheek en een paar regels Python-code wordt de Raspberry Pi een universele schakelcentrale – in dit deel: LICHT AAN.
Licht aan met GPIO-pinnen
In principe kun je een led aansluiten op elk van de 28 schakelbare GPIO-pinnen, maar sommige hebben extra functies zoals een klokgenerator of modulator of maken deel uit van een bussysteem zoals SPI of I2C.
Bij ‘Raspberry Pi als schakelcentrale’ verderop hebben we die speciale functies aangegeven en de GPIO-pinnen met kleuren gemarkeerd, zodat je eventuele speciale functies makkelijk kunt herkennen.
Ontvang gratis meer workshops over Raspberry Pi en Python!
Schrijf je in voor de nieuwsbrief:
Groene GPIO-pinnen gebruiken
Om te voorkomen dat je een schakeling later moet aanpassen omdat je ook een bepaald bussysteem nodig hebt, kun je het beste een van de groene GPIO-pinnen zonder speciale extra functie gebruiken voor de eenvoudige schakeltaken zoals een led. In de volgende voorbeelden is dat pin 37.
De volgende beslissing die moet worden genomen is welke schakellogica je wilt gebruiken. Je kunt kiezen tussen active-high en active-low. Bij active-high levert de GPIO-schakelpin de voeding voor de led. Led en voorschakelweerstand worden dan geschakeld tussen pin 37 en massa.
- Als de pin op hoog niveau, oftewel 3,3 volt, wordt geschakeld, gaat de led branden.
- Bij active-low daarentegen zijn de led en de voorschakelweerstand met pin 1 of 17 verbonden en worden via die pinnen van spanning voorzien
Om de led te laten branden, moet je pin 37 op potentiaal low oftewel massa zetten. In het volgende voorbeeld hebben we gekozen voor active-high, dus sluit je de led plus weerstand aan tussen de pinnen 37 en 39 van de GPIO-poort.
Aansturen in Python
Voor de aansturing in Python volstaan enkele commando’s, die je rechtstreeks in de Python-interpreter kunt invoeren.
Start die als gebruiker pi met het commando python3 en vervolgens krijg je de Python-prompt, bestaande uit drie groter-dan-tekens.
Bij de eerste stap moet je de GPIO-bibliotheek van de Rasbperry Pi in je code integreren:
import RPi.GPIO as GPIO
Zoals beschreven in het kader ‘Raspberry Pi als schakelcentrale’ kun je het beste naar de pinnen verwijzen met hun pinnummer op het Pi-board. Dat stel je met het volgende commando in:
GPIO.setmode(GPIO.BOARD)
Pin 37 oftewel GPIO26 is geschikt voor het aansturen van een led en is dan ook een uitgang. Aangezien we besloten hebben active high te gebruiken en de led normaal niet mag oplichten, initialiseer je de pin met potentiaal low:
GPIO.setup(37, GPIO.OUT,
initial=GPIO.LOW)
Om de led aan te zetten, hoef je de pin alleen maar op potentiaal high te zetten:
GPIO.output(37, GPIO.HIGH)
Om hem uit te zetten, zet je de uitgang weer op low:
GPIO.output(37, GPIO.LOW)
Voordat je de Python-interpreter afsluit met Ctrl+D, moet je met
GPIO.cleanup()
nog ‘opruimen’ en de GPIO-aansluiting weer in zijn basistoestand terugzetten.
Raspberri Pi als schakelcentrale
Dankzij uitgebreide aanvullende bibliotheken ben je niet beperkt tot bijvoorbeeld het alleen maar laten knipperen van een led, maar kun je zelfs schakeltaken op andere computers uitvoeren in programma’s van derden, zoals OBS Studio. Dat verandert de Raspberry Pi in een universele netwerkafstandsbediening die je voor de perfecte presentatie individueel kunt aanpassen.
De Raspberry Pi dankt zijn succes in de hobbywereld aan zijn GPIO-aansluitingen. Je kunt er makkelijk een mini-lichtshow mee programmeren of een quiz organiseren en bij deelnemers een lichtje laten aangaan. Met de juiste Python-bibliotheek en onze instructies lukken zelfs complexe taken en bedient de Pi bij je volgende live-optreden de camera en microfoon.
In de inleiding Raspberry Pi GPIO pinnen: een overzicht van de aansluitingen wordt de lay-out van de GPIO-pinnen beschreven.
In deze serie komen de volgende onderwerpen aan bod:
- Licht aan (deze workshop)
- Potentiaal van de pin
- Toestand van een pin
- Bouncetime
- Event-lussen
- Voetschakelaar
- Asynchrone functies
Meer projecten voor de Raspberry Pi vind je bij Raspberry Pi projects
(Deze informatie is afkomstig uit het artikel van Mirko Dölle en Marco den Teuling, en verscheen eerder in c’t 4, 2022, p134)