2 manieren om een knop toe te voegen aan uw Raspberry Pi-project
Advertentie
Het leren gebruiken van de GPIO-pinnen op uw Raspberry Pi opent een hele wereld aan mogelijkheden. De basisprincipes geleerd door middel van projecten voor beginners effenen de weg naar nuttige kennis van zowel doe-het-zelf elektronica als 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 aan te sturen. Onder de video zijn schriftelijke instructies beschikbaar.
Je zal nodig hebben
Zorg ervoor dat u de volgende componenten hebt om te beginnen:
- 1 x Raspberry Pi (alles is mogelijk, 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 gewoon dimmer)
- 1 x broodplank
- Sluit draden aan
Eenmaal verzameld, zou u componenten moeten hebben die er ongeveer zo uitzien:
U hebt ook een SD-kaart nodig met het Raspbian-besturingssysteem geïnstalleerd. De snelste manier om dit te doen is met de afbeelding NOOBS (New Out Of the Box Software). Instructies over hoe dit te doen zijn beschikbaar in deze video:
Het circuit instellen
Je gebruikt de GPIO-pinnen van de Pi om het circuit te maken, en als je er niet bekend mee bent, helpt onze gids voor Raspberry Pi GPIO-pinnen. Het circuit hier is bijna hetzelfde als in ons vorige Raspberry Pi LED-project, met de toevoeging van de knop die je vandaag zult 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.
- Eén poot van de weerstand hecht aan de negatieve poot van de LED en de andere poot wordt bevestigd aan de grondrail van de broodplank.
- Pin 16 (GPIO 23) wordt bevestigd aan de ene kant van de knop, de andere kant wordt bevestigd aan de grondrail van de broodplank.
Als het eenmaal is ingesteld, ziet het er als volgt uit:
Controleer uw circuit om te controleren of het correct is en schakel vervolgens uw Raspberry Pi in.
Methode 1: De RPi.GPIO-bibliotheek
Nadat de Pi is opgestart, ga je naar het menu en selecteer je Programming> 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 er zijn veel geweldige plekken 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.
import RPi.GPIO as GPIO GPIO.setmode(GPIO.BOARD)
Verklaar nu de variabelen voor de LED- en knoppinnummers.
ledPin = 12 buttonPin = 16
Merk op dat, omdat we de bordmodus hebben ingesteld op BOARD, we de pincodes gebruiken in plaats van de GPIO-nummers. Als dat verwarrend voor je is, kan een Raspberry Pi-pinout-grafiek het ophelderen.
De knop instellen
Het is tijd om de GPIO-pinnen in te stellen. Stel de LED-pin in op output en de knop pin 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 meetwaarde van de knop te krijgen. Omdat de knop naar de aardpen 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 voor invoer, leest deze die pin om de status te bepalen. In dit circuit moet u lezen of een pin HOOG of LAAG is om de LED te activeren wanneer de knop wordt ingedrukt. 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 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 maakt verbinding met aarde via de knop. De interne pull-up weerstand verbindt de GPIO-pin met de interne Pi-voeding. Deze stroom vloeit en de pen wordt veilig naar HOOG getrokken.
Wanneer u op de knop drukt, maakt de GPIO-pin rechtstreeks verbinding met de aardingspin en staat de knop laag.
Pull-down weerstanden zijn voor wanneer de schakelaar is aangesloten op de power pin. Deze keer bevestigt de interne weerstand de GPIO-pin op aarde en houdt LOW ingedrukt totdat u op de knop drukt.
Pull-up en Pull-down weerstandstheorie is op het eerste gezicht verwarrend, maar belangrijke kennis om te hebben bij het werken met microcontrollers. Maak je nu geen zorgen als je het niet helemaal begrijpt!
Laten we doorgaan 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 while True- lus voert de code erin continu uit totdat we het programma beëindigen. Telkens wanneer het in een lus wordt geplaatst, wordt de buttonState bijgewerkt door de invoer van de buttonPin te lezen . Terwijl de knop niet wordt ingedrukt, blijft deze HOOG .
Zodra de knop is ingedrukt, wordt knopStatus LAAG . Dit activeert de instructie if, omdat False hetzelfde is als LOW en de LED gaat branden. De instructie else schakelt de LED uit wanneer de buttonPin niet False is.
Sla uw script op en voer het uit
Sla uw script op door op Bestand> Opslaan als te klikken en een bestandsnaam te kiezen. U kunt de schets uitvoeren door op de groene knop Afspelen op de Thonny-werkbalk te klikken.
Druk nu op de knop en uw LED zou moeten branden! Druk op elk gewenst moment op de rode stopknop 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 nieuw kind in de buurt. De GPIO Zero Library is gemaakt door Raspberry Pi-communitymanager Ben Nuttall met de bedoeling om code eenvoudiger en gemakkelijker te lezen en te schrijven te maken.
Om de nieuwe bibliotheek te testen, opent u een nieuw Thonny-bestand en importeert u de bibliotheek.
from gpiozero import LED, Button from signal import pause
Je zult merken dat je niet de hele bibliotheek hebt geïmporteerd. Omdat u alleen een LED en een knop gebruikt, hebt u alleen die modules in het script nodig. We importeren ook Pause uit de signaalbibliotheek, een Python-bibliotheek voor gebeurtenisbeheer.
Het instellen van de pinnen is veel eenvoudiger met GPIO Zero:
led = LED(18) button = Button(23)
Omdat de GPIO Zero-bibliotheek modules voor de LED en de knop heeft, hoeft u geen in- en uitgangen in te stellen zoals voorheen. U zult merken dat hoewel de pinnen niet zijn veranderd, de nummers 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 pause()
De aanroep pause () stopt hier eenvoudigweg dat het script wordt afgesloten 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 hetzelfde resultaat uit 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 meer te weten te komen over de RPi.GPIO-bibliotheek, omdat de meeste Raspberry Pi-projecten voor beginners 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 verre van alles wat je met de Pi kunt doen. Onze onofficiële gids voor de Raspberry Pi Raspberry Pi: de onofficiële zelfstudie Raspberry Pi: de onofficiële zelfstudie Of je nu een huidige Pi-eigenaar bent die meer wilt leren of een potentiële eigenaar van dit apparaat met creditcardformaat, dit is geen gids je wilt missen. Lees meer zit boordevol creatieve ideeën en tutorials die je zelf kunt uitproberen! Voor een andere tutorial zoals deze, bekijk je hoe je een Wi-Fi verbonden knop maakt. Hoe maak je je eigen Wi-Fi Connected knop met ESP8266 Hoe maak je je eigen Wi-Fi Connected knop met ESP8266 In deze tutorial leer je hoe om een knop met Wi-Fi te maken met behulp van NodeMCU en IFTTT. Lees verder .
Ontdek meer over: DIY Project Tutorials, GPIO, Python, Raspberry Pi.