Advertentie
Het leren gebruiken van de GPIO-pinnen op je Raspberry Pi opent een hele wereld aan mogelijkheden. De basisprincipes die door beginnersprojecten zijn geleerd, effenen de weg naar nuttige kennis van zowel doe-het-elektronica en programmeren.
Deze tutorial laat je twee manieren zien om een knop toe te voegen aan je Raspberry Pi-project. De knop wordt gebruikt om een LED te bedienen. Onder de video zijn schriftelijke instructies beschikbaar.
Je zal nodig hebben
Zorg ervoor dat u de volgende componenten hebt om aan de slag te gaan:
- 1 x Raspberry Pi (Any will do, model 3B wordt gebruikt in deze tutorial)
- 1 x drukknop
- 1 x LED
- 1 x 220 Ohm weerstand (hogere waarden zijn prima, je LED zal gewoon dimmen)
- 1 x broodplank
- Sluit draden aan
Eenmaal verzameld, zou u componenten moeten hebben die er ongeveer zo uitzien:
Je hebt ook een SD-kaart nodig waarop het Raspbian-besturingssysteem is geïnstalleerd. De snelste manier om dit te doen is met de NOOBS-afbeelding (New Out of the Box Software). Instructies over hoe dit te doen zijn beschikbaar in deze video:
Het circuit opzetten
Je zult de GPIO-pinnen van de Pi gebruiken om het circuit te maken, en als je ze niet kent, onze gids voor Raspberry Pi GPIO-pinnen zal helpen. Het circuit is hier bijna hetzelfde als in onze vorige Raspberry Pi LED-project, met de toevoeging van de knop die u vandaag gaat gebruiken.
Stel uw circuit in volgens dit diagram:
- De 5v en GND pinnen verbinden met de stroomrails van de breadboard.
- Pin 12 (GPIO 18) maakt verbinding met de positieve poot van de LED.
- Een been van de weerstand wordt bevestigd aan de negatieve poot van de LED en de andere poot wordt bevestigd aan de grondrail van de breadboard.
- Pin 16 (GPIO 23) wordt aan de ene kant van de knop bevestigd, de andere kant aan de grondrail van de breadboard.
Nadat het is ingesteld, ziet het er als volgt uit:
Controleer uw circuit om er zeker van te zijn dat het correct is en zet vervolgens uw Raspberry Pi aan.
Methode 1: de RPi. GPIO-bibliotheek
Zodra de Pi is opgestart, gaat u naar het menu en selecteert u Programmeren> Thonny Python IDE. Er wordt een nieuw Python-script geopend. Als je helemaal nieuw bent bij Python, is het een geweldige taal voor beginners en dat zijn er veel geweldige plaatsen om meer te leren over Python nadat je klaar bent met deze tutorial!
Begin met het importeren van de RPi. GPIO-bibliotheek en het instellen van de bordmodus.
importeer RPi. GPIO als GPIO GPIO.setmode (GPIO.BOARD)
Verklaar nu de variabelen voor de LED- en knoppennummers.
ledPin = 12. buttonPin = 16.
Merk op dat aangezien we de bordmodus hebben ingesteld op BORD we gebruiken de pincodes in plaats van de GPIO-nummers. Als dat voor u verwarrend is, kan een Raspberry Pi-pinout-diagram helpen dit op te helderen.
De knop instellen
Het is tijd om de GPIO-pinnen in te stellen. Stel de LED-pin in op output en de knoppin op input met een pull-up-weerstand
GPIO.setup (ledPin, GPIO.OUT) GPIO.setup (buttonPin, GPIO.IN, pull_up_down = GPIO.PUD_UP)
De tekst na GPIO.IN verwijst naar de interne pull-up weerstand van de Raspberry Pi. U moet dit inschakelen om een schone meting van de knop te krijgen. Omdat de knop naar de aardingspin gaat, hebben we een pull-up-weerstand nodig om de invoerpen HOOG te houden totdat u erop drukt.
Laten we, voordat we verder gaan, kijken naar pull-up en pull-down weerstanden.
Onderbreking: Weerstanden omhoog / omlaag trekken
Wanneer u een GPIO-pin configureert om in te voeren, leest deze die pin om de status te bepalen. In dit circuit moet je lezen of een pin is HOOG of LAAG om de LED te activeren wanneer de knop wordt ingedrukt. Dit zou eenvoudig zijn als dat de enige staten waren die een pin kan hebben, maar helaas is er een derde staat: DRIJVEND.
Een zwevende pin heeft een waarde tussen hoog en laag, waardoor de invoer onvoorspelbaar werkt. Pull-up / pull-down-weerstanden lossen dit op.
De bovenstaande afbeelding is een vereenvoudigd diagram van een knop en een Raspberry Pi. De GPIO-pin wordt via de knop met aarde verbonden. De interne pull-up-weerstand bevestigt de GPIO-pin aan de interne Pi-voeding. Deze stroom vloeit en de pin wordt veilig omhoog getrokken tot HOOG.
Wanneer u op de knop drukt, maakt de GPIO-pin rechtstreeks verbinding met de grondpin en de knop leest laag.
Pull-down weerstanden zijn voor wanneer de schakelaar is aangesloten op de voedingspin. Deze keer verbindt de interne weerstand de GPIO-pin met aarde en houdt LOW ingedrukt totdat u op de knop drukt.
De pull-up- en pull-down-weerstandstheorie is op het eerste gezicht verwarrend, maar belangrijke kennis om te hebben bij het werken met microcontrollers. Voor nu, als je het niet helemaal begrijpt, maak je geen zorgen!
Laten we doorgaan waar we gebleven waren.
De programmalus
Stel vervolgens de programmalus in:
terwijl True: buttonState = GPIO.input (buttonPin) als buttonState == False: GPIO.output (ledPin, GPIO.HIGH) anders: GPIO.output (ledPin, GPIO.LOW)
De terwijl waar loop voert voortdurend de code erin uit totdat we het programma beëindigen. Elke keer dat het een lus maakt, wordt het bijgewerkt buttonState door het lezen van de input van de knoppin. Terwijl de knop niet wordt ingedrukt, blijft hij HOOG.
Zodra de knop is ingedrukt, buttonState wordt LAAG. Dit veroorzaakt de als verklaring, sinds Niet waar is hetzelfde als LAAG, en de LED gaat branden. De anders statement schakelt de LED uit wanneer de buttonPin niet False is.
Bewaar en voer uw script uit
Sla uw script op door op te klikken Bestand> Opslaan als en het kiezen van een bestandsnaam. U kunt de schets uitvoeren door op de green te klikken Speel knop in de Thonny-werkbalk.
Druk nu op de knop en je LED moet oplichten! Druk op de rode Hou op knop op elk moment om het programma te stoppen
Als u problemen ondervindt, controleer dan uw code en circuitinstellingen grondig op fouten en probeer het opnieuw.
Methode 2: GPIO Zero Library
De RPi. GPIO-bibliotheek is fantastisch, maar er is een nieuwe jongen in de buurt. De GPIO Zero Library was gemaakt door Ben Nuttall, de communitymanager van Raspberry Pi met de bedoeling code eenvoudiger en leesbaarder te maken en te schrijven.
Om de nieuwe bibliotheek te testen, opent u een nieuw Thonny-bestand en importeert u de bibliotheek.
van gpiozero import LED, knop. van signaalimport pauze.
Je merkt dat je niet de hele bibliotheek hebt geïmporteerd. Omdat je alleen een LED en knop gebruikt, heb je alleen die modules in het script nodig. We importeren ook Pauze uit de signaalbibliotheek, een Python-bibliotheek voor gebeurtenisbeheer.
Het instellen van de pinnen is veel eenvoudiger met GPIO Zero:
led = led (18) knop = knop (23)
Omdat de GPIO Zero-bibliotheek modules heeft voor de LED en de knop, hoef je geen inputs en outputs in te stellen zoals voorheen. U zult merken dat hoewel de pinnen niet zijn gewijzigd, de cijfers hier anders zijn dan hierboven. Dat komt omdat GPIO Zero alleen de GPIO-pincodes gebruikt (ook bekend als Broadcom- of BCM-nummers).
De rest van het script bestaat uit slechts drie regels:
button.when_pressed = led.on. button.when_released = led.off pauze ()
De pauze() call here stopt gewoon het script om te stoppen wanneer het de bodem bereikt. De gebeurtenissen met twee knoppen worden geactiveerd wanneer de knop wordt ingedrukt en losgelaten. Sla uw script op en voer het uit en u zult hetzelfde resultaat zien als voorheen!
Twee manieren om een knop toe te voegen aan Raspberry Pi
Van de twee manieren om de knop in te stellen, lijkt de GPIO Zero-methode de gemakkelijkste. Het is nog steeds de moeite waard om over de RPi te leren. GPIO-bibliotheek als de meeste beginnende Raspberry Pi-projecten gebruik het. Hoe eenvoudig dit project ook is, de kennis kan voor een aantal dingen worden gebruikt.
Het gebruik van de GPIO-pinnen is een geweldige manier om je eigen apparaten te leren en uit te vinden, maar het is verre van alles wat je met de Pi kunt doen. Onze onofficiële gids voor de Raspberry Pi Raspberry Pi: The Unofficial TutorialOf je nu een huidige Pi-eigenaar bent die meer wil leren of een potentiële eigenaar van dit apparaat op creditcardformaat, dit is geen gids die je wilt missen. Lees verder zit boordevol creatieve ideeën en tutorials die je zelf kunt uitproberen! Bekijk voor een andere tutorial als deze hoe u een met Wi-Fi verbonden knop maakt Hoe u uw eigen met Wi-Fi verbonden knop maakt met ESP8266In deze tutorial leer je hoe je een Wi-Fi-geactiveerde knop maakt met NodeMCU en IFTTT. Lees verder .
Ian Buckley is freelance journalist, muzikant, artiest en videoproducent en woont in Berlijn, Duitsland. Als hij niet schrijft of niet op het podium staat, sleutelt hij aan doe-het-elektronica of code in de hoop een gekke wetenschapper te worden.