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 opplæringen viser deg to måter å legge til en knapp til Raspberry Pi-prosjektet ditt på. Knappen brukes til å styre 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, kan du bruke dem
guide til Raspberry Pi GPIO-pinner vil hjelpe. Kretsen her er nesten den samme som i vår forrige Raspberry Pi LED-prosjekt, med tillegg av knappen du bruker i dag.Sett opp kretsen din i henhold til dette diagrammet:
- De 5v og GND pinner kobles til kraftskinnene på brødbordet.
- Pinne 12 (GPIO 18) kobles til den positive bena på LED.
- En etappe av motstand 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 konfigurert, 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-bibliotek
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 det mange gode steder å lære mer om Python etter at du er ferdig med denne opplæringen!
Start med å importere RPi. GPIO-bibliotek, og innstilling av tavlemodus.
importer RPi. GPIO som 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 BORDE vi bruker pin-numrene 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 intern opptrekksmotstand av bringebær 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å pull-up og pull-down motstander 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 pin 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: FLYTENDE.
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.
Programløkken
Deretter setter du opp programløkken:
mens True: buttonState = GPIO.input (buttonPin) hvis buttonState == False: GPIO.output (ledPin, GPIO.HIGH) annet: GPIO.output (ledPin, GPIO.LOW)
De mens sant loop kjører kontinuerlig koden inni den til vi avslutter programmet. Hver gang den løkker oppdaterer den buttonState ved å lese innspillet fra buttonPin. Mens knappen ikke trykkes, holder den seg HØY.
Når knappen er trykket, buttonState blir til LAV. Dette utløser hvis uttalelse, siden Falsk er det samme som LAV, og LED lyser. De ellers uttalelse slår av LED når knappenPin er ikke usann.
Lagre og kjør skriptet
Lagre skriptet ditt ved å klikke Fil> Lagre som og velge et filnavn. Du kan kjøre skissen ved å klikke på det grønne Spille -knappen i Thonny-verktøylinjen.
Trykk nå på knappen, så skal LED-en din lyse! Trykk på det røde Stoppe når som helst 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-bibliotek er fantastisk, men det er en ny gutt i blokka. GPIO Zero Library var opprettet av Raspberry Pi samfunnssjef Ben Nuttall med den hensikt å gjøre koden enklere, og enklere å lese og skrive.
For å teste ut det nye biblioteket åpner du en ny Thonny-fil og importerer biblioteket.
fra gpiozero import LED, knapp. fra signalimportpause.
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 eventstyring.
Det er mye enklere å installere pinnene med GPIO Zero:
led = LED (18) knapp = knapp (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 ()
De pause() ring 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-bibliotek som de fleste nybegynnere Raspberry Pi-prosjekter bruk 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åre uoffisiell guide til Raspberry Pi Raspberry Pi: Den uoffisielle opplæringenEnten du er en nåværende Pi-eier som vil lære mer eller potensiell eier av denne enheten med kredittkortstørrelse, er dette ikke en guide du vil gå glipp av. Les mer er full av kreative ideer og opplæringsprogrammer du kan prøve ut selv! For en annen opplæring som dette, sjekk ut hvordan lage en Wi-Fi-tilkoblet knapp Slik lager du din egen Wi-Fi-tilkoblede knapp med ESP8266I denne opplæringen lærer du hvordan du oppretter en Wi-Fi-aktivert knapp ved å bruke NodeMCU og IFTTT. Les mer .
Ian Buckley er frilansjournalist, musiker, utøver og videoprodusent bosatt i Berlin, Tyskland. Når han ikke skriver eller på scenen, tisser han med DIY-elektronikk eller kode i håp om å bli en gal forsker.