2 måter å legge til en knapp på din Raspberry Pi-prosjekt

2 måter å legge til en knapp på din Raspberry Pi-prosjekt / DIY

Lære å bruke GPIO-pinnene på Raspberry Pi åpner opp en hel verden av muligheter. De grunnleggende prinsippene som læres gjennom nybegynnerprosjekter bane vei mot nyttig kunnskap om både DIY-elektronikk og programmering.

Denne opplæringen viser deg to måter å legge til en knapp på Raspberry Pi-prosjektet. Knappen vil bli brukt til å styre en LED. Skriftlige instruksjoner er tilgjengelig under videoen.

Du vil trenge

For å komme i gang, må du kontrollere at du har følgende komponenter:

  • 1 x Raspberry Pi (Noen 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, lysdioden din vil bare være lysere)
  • 1 x brødbrett
  • Koble til ledninger

Når du har samlet deg, bør du ha komponenter som ser noe ut som dette:

Du trenger også et SD-kort med Raspbian-operativsystemet installert. Den raskeste måten å gjøre dette på er med NOOBS-bildet (New Out Of the Box Software). Instruksjoner om hvordan du gjør dette er tilgjengelig i denne videoen:

Sette opp kretsen

Du vil bruke GPIO-pinnene til Pi til å lage kretsen, og hvis du ikke er kjent med dem, vil vår guide til Raspberry Pi GPIO-pinner hjelpe. Kredsløpet her er nesten det samme som i vårt tidligere Raspberry Pi LED-prosjekt, med tillegg av knappen du skal bruke i dag.

Sett opp kretsen din i henhold til dette diagrammet:

  • De 5v og GND pinner kobles til spenne på brødbrettet.
  • Pin 12 (GPIO 18) kobles til lyspærens positive ben.
  • Ett ben av motstand Festes til LED-lampens negative ben, og det andre benet festes til bakken på bakbrettet.
  • Pin 16 (GPIO 23) Festes til den ene siden av knappen, den andre siden festes til bakken på bakbrettet.

Når det er satt opp, så er det slik det skal se ut:

Sjekk over kretsen for å forsikre deg om at den er riktig, og slå deretter opp Raspberry Pi.

Metode 1: RPi.GPIO-biblioteket

Når Pi har startet, gå til menyen og velg Programmering> Thonny Python IDE. Et nytt Python-skript åpnes. Hvis du er helt ny til Python, er det et godt språk for nybegynnere, og det er mange flotte steder å lære mer om Python etter at du er ferdig med denne opplæringen!

Begynn med å importere RPi.GPIO-biblioteket, og sett inn styrmodus.

importer RPi.GPIO som GPIO GPIO.setmode (GPIO.BOARD) 

Nå erklærer variablene for LED- og knappens pinnumre.

ledPin = 12 knappPin = 16 

Legg merke til at siden vi har styremodus satt til BORDE Vi bruker pinnumrene i stedet for GPIO-tallene. Hvis det er forvirrende for deg, kan et Raspberry Pi pinout diagram hjelpe deg med å rydde opp.

Sette opp knappen

Det er på tide å sette opp GPIO-pinnene. Sett LED-pinnen til utgang, og knappen pinner for å legge inn en opptrekksmotstand

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 Raspberry Pi. Du må aktivere dette for å få en ren lesning fra knappen. Siden knappen går til bakken, trenger vi en opptrekksmotstand for å holde inngangspinnen HØY til du trykker på den.

Før vi fortsetter, la oss se på opptrekks- og nedtrekksmotstander.

Inngrep: Trekk opp / trekk ned motstandene

Når du konfigurerer en GPIO-pin for å skrive inn, leser den den pin for å bestemme dens tilstand. I denne kretsen må du lese om en pin er HØY eller LAV for å utløse LED-lampen når knappen trykkes. Dette ville være enkelt hvis det var de eneste statene en pin kan ha, men dessverre er det en tredje stat: FLYTENDE.

En flytende pin har en verdi mellom høy og lav, noe som gjør at inngangen skal virke uforutsigbart. Opptrekk / nedtrekksmotstander løser dette.

Ovenstående bilde er et forenklet diagram over en knapp og en Raspberry Pi. GPIO-pin kobles til jord gjennom knappen. Den interne opptrekksmotoren fester GPIO-pin til den interne Pi-strømforsyningen. Denne strømmen flyter og tappen er trygt trukket opp til HØY.

Når du trykker på knappen, kobler GPIO-pinnen direkte til bakken, og knappen står lav.

Nedtrekksmotstander er for når bryteren er koblet til strømnettet. Denne gangen festes den interne motoren til GPIO-plenen til bakken, og holder i LOW til du trykker på knappen.

Pull-up og Pull-down motstandsteori er forvirrende ved første øyekast, men viktig kunnskap å ha når man arbeider med mikrokontroller. For nå, hvis du ikke forstår det, ikke bekymre deg!

La oss fortsette hvor vi sluttet.

Programløkken

Deretter setter du opp programsløyfen:

mens True: buttonState = GPIO.input (buttonPin) hvis buttonState == False: GPIO.output (ledPin, GPIO.HIGH) ellers: GPIO.output (ledPin, GPIO.LOW) 

De mens det er sant loop løper kontinuerlig koden inni den til vi avslutter programmet. Hver gang det slår det oppdateres buttonState ved å lese innspillet fra buttonPin. Mens knappen ikke trykkes, forblir den HØY.

Når du trykker på knappen, buttonState blir LAV. Dette utløser hvis uttalelse, siden Falsk er det samme som LAV, og lysdioden lyser. De ellers setningen slår av lysdioden når knappepinnen ikke er falsk.

Lagre og kjøre ditt script

Lagre skriptet ditt ved å klikke Fil> Lagre som og velge et filnavn. Du kan kjøre skissen ved å klikke på den grønne Spille knappen i Thonny-verktøylinjen.

Trykk nå på knappen, og din LED skal lyse! Trykk på den røde Stoppe knappen når som helst for å stoppe programmet

Hvis du har problemer, kontroller du koden og kretsoppsettet grundig for feil og prøv igjen.

Metode 2: GPIO Zero Library

Biblioteket RPi.GPIO er fantastisk, men det er et nytt barn på blokken. GPIO Zero Library ble opprettet av Raspberry Pi community manager Ben Nuttall med den hensikt å gjøre kode enklere og lettere å lese og skrive.

For å teste ut det nye biblioteket, åpne en ny Thonny-fil, og importer biblioteket.

fra gpiozero import LED, Knapp fra signal import pause 

Du merker at du ikke importerte hele biblioteket. Siden du bare bruker en LED og knapp, trenger du bare de modulene i skriptet. Vi importerer også Pause fra signalbiblioteket, som er et Python-bibliotek for arrangementshåndtering.

Å sette opp pinnene er mye enklere med GPIO Zero:

ledet = LED (18) knapp = knapp (23) 

Siden GPIO Zero-biblioteket har moduler for LED og knapp, trenger du ikke å sette inn innganger og utganger som før. Du vil legge merke til at selv om tappene ikke har endret seg, er tallene her forskjellige fra ovenfor. Det skyldes at GPIO Zero bare bruker GPIO-pinnumrene (også kjent som Broadcom- eller BCM-tall).

Resten av skriptet er bare tre linjer:

button.when_pressed = led.on button.when_released = led.off pause () 

De pause() ring her stopper bare skriptet fra å gå når det når bunnen. Begivenhetene med to knapper blir utløst når knappen trykkes og slippes ut. Lagre og kjør skriptet ditt, og du vil se det samme resultatet som før!

To måter å legge til en knapp til Raspberry Pi

Ut av de to måtene å sette opp knappen, synes GPIO Zero-metoden å være den enkleste. Det er fortsatt verdt å lære om RPi.GPIO biblioteket som 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 fin måte å lære og finne ut på 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 Uansett om du er en nåværende Pi-eier som ønsker å lære mer eller en potensiell eier av denne kredittkortstørrelsesenheten, er dette ikke en guide du vil gå glipp av. Les mer er fulle av kreative ideer og opplæringsprogrammer du kan prøve deg selv! For en annen opplæring som dette, sjekk ut 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 å opprette en Wi-Fi-aktivert knapp ved hjelp av NodeMCU og IFTTT. Les mer .

Utforsk mer om: DIY Project Tutorials, GPIO, Python, Raspberry Pi.