2 måter å legge til en knapp til Raspberry Pi-prosjektet ditt
Annonse
Å lære å bruke GPIO-pinnene på Raspberry Pi åpner en hel verden av muligheter. De grunnleggende prinsippene som læres gjennom nybegynnerprosjekter baner vei for nyttig kunnskap om både DIY-elektronikk og programmering.
Denne veiledningen viser deg to måter å legge til en knapp til Raspberry Pi-prosjektet ditt på. Knappen brukes til å kontrollere en LED. Skriftlige instruksjoner er tilgjengelige under videoen.
Du vil trenge
For å komme i gang, sørg for at du har følgende komponenter:
- 1 x Raspberry Pi (Alle vil gjøre, modell 3B brukes i denne opplæringen)
- 1 x trykknapp
- 1 x LED
- 1 x 220 Ohm motstand (Høyere verdier er fine, LED-en din blir bare svakere)
- 1 x brødbrett
- Koble til ledninger
Når du er samlet, bør du ha komponenter som ser ut slik:
Du trenger også et SD-kort med Raspbian-operativsystemet installert. Den raskeste måten å gjøre dette på er med NOOBS (New Out Of the Box Software) -bildet. Instruksjoner for hvordan du gjør dette er tilgjengelige i denne videoen:
Sette opp kretsløpet
Du bruker GPIO-pinnene til Pi for å lage kretsen, og hvis du ikke er kjent med dem, vil vår guide til Raspberry Pi GPIO-pinner hjelpe. Kretsen her er nesten den samme som i vårt forrige Raspberry Pi LED-prosjekt, med tillegg av knappen du bruker i dag.
Sett opp kretsen din i henhold til dette diagrammet:
- 5v- og GND- pinnene kobles til kraftskinnene på brødplaten.
- Pinne 12 (GPIO 18) kobles til den positive bena på LED.
- Det ene benet på motstanden festes til LEDs negative ben, og det andre benet festes til bakkeskinnen på brødplaten.
- Pinne 16 (GPIO 23) festes til den ene siden av knappen, den andre siden festes til bakkeskinnen på brødplaten.
Når den er satt opp, slik skal den se ut:
Sjekk kretsen din for å forsikre deg om at den er riktig, og slå deretter Raspberry Pi på.
Metode 1: RPi.GPIO-biblioteket
Når Pi har startet opp, gå til menyen og velg Programmering> Thonny Python IDE . Et nytt Python-skript åpnes. Hvis du er helt ny på Python, er det et flott språk for nybegynnere, og det er mange gode steder å lære mer om Python etter at du er ferdig med denne opplæringen!
Start med å importere RPi.GPIO-biblioteket, og angi brettmodus.
import RPi.GPIO as GPIO GPIO.setmode(GPIO.BOARD)
Nå erklærer variablene for LED- og knappestiftenumre.
ledPin = 12 buttonPin = 16
Merk at siden vi har tavlemodus satt til Tavle, bruker vi pinnetallene i stedet for GPIO-tallene. Hvis det er forvirrende for deg, kan et Raspberry Pi pinout-diagram bidra til å rydde opp.
Sette opp knappen
Det er på tide å sette opp GPIO-pinnene. Sett LED-pinnen slik at den sendes ut, og knappestiften for å legge inn en pull-up-motstand
GPIO.setup(ledPin, GPIO.OUT) GPIO.setup(buttonPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
Teksten etter GPIO.IN refererer til den interne opptrekksmotstanden til Raspberry Pi. Du må aktivere dette for å få en ren avlesning fra knappen. Siden knappen går til bakken, trenger vi en opptrekksmotstand for å holde inngangsstiften HØY til du trykker på den.
La oss se på opptrekks- og nedtrekksmotstander før vi fortsetter.
Pause: Trekk opp / Trekk ned motstander
Når du konfigurerer en GPIO-pinne til inndata, leser den den for å bestemme tilstanden. I denne kretsen må du lese om en pinne er HØY eller LAV for å utløse LED når du trykker på knappen. Dette ville være enkelt hvis det var de eneste statene en pin kan ha, men dessverre er det en tredje tilstand: FLOATING .
En flytende stift har en verdi mellom høy og lav, noe som får inngangen til å virke uforutsigbart. Pull-up / pull-down motstander løser dette.
Bildet ovenfor er et forenklet diagram av en knapp og en Raspberry Pi. GPIO-pinnen kobles til bakken gjennom knappen. Den interne opptrekksmotstanden fester GPIO-pinnen til den interne Pi-strømforsyningen. Denne strømmen flyter og tappen trekkes trygt opp til HØY.
Når du trykker på knappen, kobles GPIO-pinnen direkte til jordpinnen, og knappen leser lavt.
Nedtrekksmotstander er til når bryteren er koblet til strømnålen. Denne gangen fester den interne motstanden GPIO-pinnen til bakken, holder inne LAV til du trykker på knappen.
Pull-up og Pull-down motstandsteori er forvirrende ved første øyekast, men viktig kunnskap å ha når du jobber med mikrokontrollere. For nå, hvis du ikke helt forstår det, ikke bekymre deg!
La oss fortsette der vi slapp.
Programsløyfen
Deretter setter du opp programløkken:
while True: buttonState = GPIO.input(buttonPin) if buttonState == False: GPIO.output(ledPin, GPIO.HIGH) else: GPIO.output(ledPin, GPIO.LOW)
Mens True loop kjører kontinuerlig koden inni den til vi avslutter programmet. Hver gang den løkker oppdaterer den knappenState ved å lese innspillet fra knappenPinn . Mens knappen ikke trykkes, forblir den HØY .
Når knappen er trykket, blir buttonState LAV . Dette utløser if-setningen, ettersom False er den samme som LAV, og LED-en tennes. Den andre uttalelsen slår av lysdioden når knappens pin ikke er falsk.
Lagre og kjør skriptet
Lagre skriptet ditt ved å klikke på Fil> Lagre som og velge et filnavn. Du kan kjøre skissen ved å klikke på den grønne Play- knappen på Thonny-verktøylinjen.
Trykk nå på knappen, så skal LED-en din lyse! Trykk når som helst på den røde stoppknappen for å stoppe programmet
Hvis du har problemer, må du kontrollere koden og kretsoppsettet nøye for feil og prøve igjen.
Metode 2: GPIO Zero Library
RPi.GPIO-biblioteket er fantastisk, men det er en ny gutt på blokken. GPIO Zero Library ble opprettet av Raspberry Pi samfunnssjef Ben Nuttall med den hensikt å gjøre kode enklere og lettere å lese og skrive.
For å teste ut det nye biblioteket, åpner du en ny Thonny-fil og importerer biblioteket.
from gpiozero import LED, Button from signal import pause
Du vil merke at du ikke importerte hele biblioteket. Siden du bare bruker en LED og knapp, trenger du bare disse modulene i skriptet. Vi importerer også Pause fra signalbiblioteket, som er et Python-bibliotek for hendelsesledelse.
Det er mye enklere å installere pinnene med GPIO Zero:
led = LED(18) button = Button(23)
Siden GPIO Zero-biblioteket har moduler for LED og knapp, trenger du ikke å sette opp innganger og utganger som før. Du vil merke at selv om pinnene ikke har endret seg, er tallene her forskjellige fra oven. Det er fordi GPIO Zero bare bruker GPIO-pin-numrene (også kjent som Broadcom- eller BCM-numre).
Resten av manuset er bare tre linjer:
button.when_pressed = led.on button.when_released = led.off pause()
Pause () -samtalet her stopper ganske enkelt skriptet fra å gå ut når det når bunnen. Hendelsene med to knapper blir utløst når knappen trykkes og slippes. Lagre og kjør skriptet ditt, så ser du det samme resultatet som før!
To måter å legge til en knapp på Raspberry Pi
Av de to måtene å sette opp knappen virker GPIO Zero-metoden å være den enkleste. Det er fortsatt verdt å lære om RPi.GPIO-biblioteket, ettersom de fleste nybegynnere Raspberry Pi-prosjekter bruker det. Så enkelt som dette prosjektet er, kan kunnskapen brukes til en rekke ting.
Å bruke GPIO-pinnene er en flott måte å lære og finne opp dine egne enheter, men det er langt fra alt du kan gjøre med Pi. Vår uoffisielle guide til Raspberry Pi Raspberry Pi: Den uoffisielle opplæringen Raspberry Pi: Den uoffisielle opplæringen Enten du er en nåværende Pi-eier som vil lære mer eller potensiell eier av dette kredittkortstørrelsesapparatet, er dette ikke en guide du vil savne. Read More er full av kreative ideer og opplæringsprogrammer du kan prøve ut selv! For en annen opplæring som dette, sjekk hvordan du lager en Wi-Fi-tilkoblet knapp Hvordan lage din egen Wi-Fi-tilkoblede knapp med ESP8266 Hvordan lage din egen Wi-Fi-tilkoblede knapp med ESP8266 I denne opplæringen lærer du hvordan å lage en Wi-Fi-aktivert knapp ved å bruke NodeMCU og IFTTT. Les mer .
Utforsk mer om: DIY Project Tutorials, GPIO, Python, Raspberry Pi.