2 manieren om een knop toe te voegen aan uw Raspberry Pi-project
Het leren gebruiken van de GPIO-pinnen op je Raspberry Pi opent een hele reeks mogelijkheden. De basisprincipes die door beginnersprojecten zijn geleerd, maken de weg vrij voor nuttige kennis van zowel doe-het-zelf-elektronica als programmeren.
In deze zelfstudie ziet u twee manieren om een knop toe te voegen aan uw Raspberry Pi-project. De knop zal worden gebruikt om een LED te besturen. Schriftelijke instructies zijn beschikbaar onder de video.
Je zal nodig hebben
Zorg er om te beginnen voor dat je de volgende componenten hebt:
- 1 x Raspberry Pi (elke wil doen, model 3B wordt gebruikt in deze tutorial)
- 1 x drukknop
- 1 x LED
- 1 x 220 Ohm weerstand (hogere waarden zijn prima, uw led wordt alleen maar dimmer)
- 1 x breadboard
- Sluit de draden aan
Eenmaal verzameld, zou u componenten moeten hebben die er ongeveer zo uitzien:
U hebt ook een SD-kaart nodig waarop het Raspbian-besturingssysteem is geïnstalleerd. De snelste manier om dit te doen is met de NOOBS (New Out Of the Box Software) -afbeelding. 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 daar niet bekend mee bent, zal onze gids voor Raspberry Pi GPIO-pinnen helpen. Het circuit is hier bijna hetzelfde als in ons vorige Raspberry Pi LED-project, met de toevoeging van de knop die je vandaag gaat gebruiken.
Stel uw circuit in volgens dit diagram:
- De 5v en GND pinnen maken verbinding met de stroomrails van het breadboard.
- Pin 12 (GPIO 18) wordt aangesloten op de positieve poot van de LED.
- Eén poot van de weerstand hecht aan het negatieve been van de LED, en het andere been hecht aan de grondrail van het breadboard.
- Pen 16 (GPIO 23) hecht aan een kant van de knop, de andere kant hecht zich aan de grondrail van het breadboard.
Zodra het is ingesteld, ziet u hier hoe het eruit moet zien:
Controleer uw circuit om er zeker van te zijn dat het correct is en schakel vervolgens uw Raspberry Pi in.
Methode 1: De RPi.GPIO-bibliotheek
Zodra de Pi is opgestart, ga je naar het menu en selecteert u Programmeren> Thonny Python IDE. Een nieuw Python-script wordt geopend. Als je helemaal nieuw bent in Python, is het een geweldige taal voor beginners en zijn er veel geweldige plaatsen om meer over Python te leren nadat je klaar bent met deze tutorial!
Begin met het importeren van de RPi.GPIO-bibliotheek en het instellen van de bordmodus.
import RPi.GPIO als GPIO GPIO.setmode (GPIO.BOARD)
Verklaar nu de variabelen voor de LED- en knoppennummers.
ledPin = 12 buttonPin = 16
Merk op dat we de board-modus hebben ingesteld op BOORD we gebruiken de pincodes in plaats van de GPIO-nummers. Als dat voor u verwarrend is, kan een pin-out-grafiek van Raspberry Pi helpen dit op te lossen.
De knop instellen
Het is tijd om de GPIO-pinnen in te stellen. Stel de LED-pin in op uitvoer en de knoppen om met een pull-up-weerstand in te voeren
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 duidelijke meting te krijgen via de knop. Omdat de knop naar de grondpin gaat, hebben we een pull-up-weerstand nodig om de invoerpin HIGH vast te houden totdat je 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 instelt voor invoer, leest deze die pin om de status te bepalen. In dit circuit moet je lezen of een pin is HIGH of LAAG om de LED te activeren wanneer op de knop wordt gedrukt. Dit zou eenvoudig zijn als dat de enige staten zijn die een pin kan hebben, maar helaas is er een derde staat: DRIJVEND.
Een zwevende pen 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-pen kan via de knop worden aangesloten op aarde. De interne pull-upweerstand bevestigt de GPIO-pin aan de interne Pi-voeding. Deze stroom vloeit en de pen wordt veilig omhoog getrokken tot HOOG.
Wanneer u op de knop drukt, maakt de GPIO-pin rechtstreeks verbinding met de aardingspin en wordt de knop bijna leeg.
Pull-down-weerstanden zijn voor wanneer de schakelaar op de power pin is aangesloten. Deze keer hecht de interne weerstand de GPIO-pen aan aarde en houdt LOW ingedrukt totdat u op de knop drukt.
Pull-up en Pull-down weerstandstheorie is op het eerste gezicht verwarrend, maar het is een belangrijke kennis om te hebben bij het werken met microcontrollers. Voor nu, als je het niet helemaal begrijpt, maak je geen zorgen!
Laten we verder gaan waar we gebleven waren.
De programmalus
Stel vervolgens de programmalus in:
while True: buttonState = GPIO.input (buttonPin) if buttonState == False: GPIO.output (ledPin, GPIO.HIGH) else: GPIO.output (ledPin, GPIO.LOW)
De terwijl het waar is loop continu de code erin uitvoert totdat we het programma beëindigen. Elke keer dat het lus wordt bijgewerkt, wordt het buttonState door de invoer van de buttonpin. Zolang de knop niet wordt ingedrukt, blijft deze ingedrukt HIGH.
Nadat de knop is ingedrukt, buttonState wordt LAAG. Dit triggert de als verklaring, sinds vals is hetzelfde als LAAG, en de LED gaat branden. De anders statement schakelt de LED uit wanneer de ButtonPin niet False is.
Sla uw script op en voer het uit
Sla je script op door op te klikken Bestand> Opslaan als en het kiezen van een bestandsnaam. U kunt de schets uitvoeren door op de groene te klikken Spelen knop in de Thonny-werkbalk.
Druk nu op de knop en uw LED moet oplichten! Druk op de rode toets Hou op knop op elk gewenst moment om het programma te stoppen
Als u problemen ondervindt, controleert u uw code en circuitinstellingen zorgvuldig op fouten en probeert u het opnieuw.
Methode 2: GPIO Zero Library
De bibliotheek RPi.GPIO is fantastisch, maar er is een nieuw kind in de buurt. De GPIO Zero Library is gemaakt door de community manager Ben Nuttall van Raspberry Pi met de bedoeling om code eenvoudiger te maken en gemakkelijker te lezen en te schrijven.
Om de nieuwe bibliotheek uit te testen, opent u een nieuw Thonny-bestand en importeert u de bibliotheek.
van gpiozero importeren LED, knop van signaalimportpauze
Je zult merken dat je de hele bibliotheek niet hebt geïmporteerd. Omdat u alleen een LED en knop gebruikt, hebt u alleen die modules in het script nodig. We importeren ook Pauze van de signaalbibliotheek, een Python-bibliotheek voor evenementenbeheer.
Het instellen van de pinnen is veel eenvoudiger met GPIO Zero:
led = LED (18) knop = Button (23)
Omdat de GPIO Zero-bibliotheek modules heeft voor de LED en de knop, hoeft u niet zoals voorheen in te stellen voor inputs en outputs. Je zult zien dat hoewel de pinnen niet zijn veranderd, de nummers hier verschillen van 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 pause ()
De pauze() bel hier gewoon stopt het script van verlaten wanneer het de bodem bereikt. De gebeurtenissen met twee knoppen worden geactiveerd telkens wanneer de knop wordt ingedrukt en losgelaten. Sla op en voer je script uit en je ziet hetzelfde resultaat als hiervoor!
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 het gemakkelijkst te zijn. Het is nog steeds de moeite waard om te leren over de RPi.GPIO-bibliotheek, aangezien de meeste Raspberry Pi-projecten die beginner zijn, deze gebruiken. 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 allesbehalve alles wat je met de Pi kunt doen. Onze onofficiële gids voor de Raspberry Pi Raspberry Pi: de onofficiële tutorial Raspberry Pi: de onofficiële tutorial Of je nu een pi-eigenaar bent die meer wil leren of een potentiële eigenaar van dit apparaat voor creditcardformaat, dit is geen gids je wilt missen. Meer lezen zit boordevol creatieve ideeën en tutorials die u zelf kunt uitproberen! Zie voor een andere tutorial hoe je een met wifi verbonden knop maakt. Hoe maak je je eigen wifi-verbonden knop met ESP8266 Hoe maak je je eigen wifi-verbonden knop met ESP8266 In deze tutorial leer je hoe om een Wi-Fi-enabled knop te maken met behulp van NodeMCU en IFTTT. Lees verder .
Ontdek meer over: DIY Project Tutorials, GPIO, Python, Raspberry Pi.