I denne veiledningen vil jeg vise deg hvordan du kobler motorer til Raspberry Pi. Dette gjør at Raspberry Pi kan samhandle i den virkelige verden, noe som gjør det mulig å bygge en robot, slå på en fan på en varm dag eller til og med slippe en godbit for katten din eller hunden din mens du er borte.
Det vi planlegger å gjøre, er å koble en eller to motorer til Raspberry Pi med så få komponenter som mulig. Når vi har elektronikken satt sammen på brødbrettet, vil jeg vise deg hvordan du enkelt kan styre dem ved å bruke Python til å først gjøre motorens rotasjon, og deretter legge til litt kontroll for å endre motorretningen slik at vi kan gå bakover.
Denne veiledningen vil kreve et forsiktig øye med å fange eventuelle feil, og litt mot, spesielt hvis du er ny på GPIO-kontaktene. Jeg vil gjerne understreke at jeg ikke er ansvarlig for skader forårsaket av Raspberry Pi og / eller komponenter.
VIKTIG: Ikke koble til en motor, uansett hvor liten direkte til Raspberry Pi, det vil skade din Raspberry Pi.
Hovedprosessoren kan bare levere nok strøm til å telle en LED, omtrent 20mA. En motor vil ha minst 400mA strøm for å begynne å snu.
For å få en motor i gang, trenger du:
Hvis du ikke har sett nøye på din Raspberry Pi før, kan det være den beste tiden å se på. Det er 26 pinner gruppert i to rader med 13, og disse er kollektivt kalt Generell Inngang Utgangshoved eller GPIO for kort. Disse er en blanding av fire kraftpinner, fem jordpinner og 17 datapinner.
Noen av disse datapinnene har ekstra funksjoner som en i2c buss, SPI buss og UART serielle kontakter, som alle kan koble til annen maskinvare, slik at Raspberry Pi kan snakke med elementer som en Arduino, en Analog til digital omformer (ADC) eller tilleggskort som a PiGlow eller PiFace.
TIPS: Når du arbeider med GPIO-pinnene, må du alltid gjøre dette mens Pi er koblet fra. Som en ulykke ved å koble sammen (eller kutte) 2 pinner sammen kan det forårsake skade på Raspberry Pi.
Det er viktig å gjøre dette mens strømmen til Raspberry Pi er slått av eller frakoblet, da du vil unngå å kutte eventuelle kontakter ved en feil.
Det første du må gjøre er å koble opp strøm- og jordkablene. Som med de fleste elektronikkprosjekter vil alt som knytter sammen kreve felles grunnlag. Dette er vist med de svarte ledningene.
Bakken på Raspberry Pi er fysisk pin 6. Med henvisning til figur 1 er dette utarbeidet ved å starte øverst til venstre med pin 3V3, teller venstre til høyre så 5V er pin 2, GPIO 2 (merket 2) er pin 3 og så videre.
Lesing av pinnumre på integrert krets (IC) -chips kan enkelt gjøres ved å ha hakk eller punkt til venstre, så starter fra bunnen til venstre gir oss pin 1.
Figur 3. Pin 1 er nederst til venstreLegg nå tre ledninger fra GPIO pins til L293D.
Legg til motoren:
Det er ekstremt viktig at du dobbeltsjekker hver tilkobling før du legger til batteriene. Bare når du er glad for at alt er på plass, må du koble batteridrikkene til strømsporene på brødbrettet.
En av de flotte funksjonene i L293D er det at det kan håndtere to motorer uavhengig og hver motor kan kjøre i forskjellige hastigheter eller retninger. Ved hjelp av denne IC gjør det mulig å skape en tohjulet robot som er i stand til å snu, gå fremover og gå bakover lett.
Legge til en andre motor involverer bare tre ekstra ledninger og en annen motor.
Det er viktig å sjekke og dobbeltsjekke eventuelle ledninger før du legger til noen strømkilde til prosjektet ditt, ettersom noen av ledningene kan bli litt fiddly, det er lett å savne en tilkobling og sende 5V til 3.3V av Raspberry Pi.
Sjekk alltid ledningen og sjekk den igjen!
Hvis du ikke har satt opp et SD-kort til Pi før, vil det være verdt å forstå hvordan du lager en ved å lese Slik blar du et SD-kort for Raspberry Pi opplæring, først.
Med et nyopprettet Raspbian SD-kort på plass, kobler du Raspberry Pi som vanlig og starter opp.
Legg til batteriene, sørg for at du tar hensyn til de riktige skinnene (de lange stripene langs toppen og bunnen, hvis du har noen), da du bare vil at den svarte ledningen skal koble til bakken og den røde ledningen til positiv eller kilde kun av brikken.
Den neste jobben er å fortelle Raspberry Pi at en motor, eller to, har blitt koblet til. For å gjøre dette bruker jeg et språk som kalles Python. Den kommer installert på Raspbian som er en bonus. Hvis du bruker et annet operativsystem, for eksempel Arch eller PiDora, dobbeltsjekke om RPi.GPIO er tilgjengelig.
For å få motoren til å fungere, dobbeltklikk LXTerminal på skrivebordet ditt for å få opp et terminalvindu. Dette er hvor du skal skrive Python kode ved hjelp av et program som heter nano. nano er en tekstredigerer, ligner på Notisblokk eller TextEdit men for kommandoprompten vil jeg lære dine kommandoer som vi går sammen hvis du er ny på det.
For å slå på motoren i to sekunder, bruk følgende kode:
importere RPi.GPIO som GPIO fra tidspunktet for import importen GPIO.setmode (GPIO.BOARD) Motor1A = 16 Motor1B = 18 Motor1E = 22 GPIO.setup (Motor1A, GPIO.OUT) GPIO.setup (Motor1B, GPIO.OUT) GPIO.setup (Motor1E, GPIO.OUT) Skriv ut "Slå motor på" GPIO.output (Motor1A, GPIO.HIGH) GPIO.output (Motor1B, GPIO.LOW) GPIO.output (Motor1E, GPIO.HIGH) søvn (2) print "Stopp motor "GPIO.output (Motor1E, GPIO.LOW) GPIO.cleanup ()
De to første linjene forteller Python hva som trengs i programmet.
Den første linjen vil ha tilgang til en modul som kalles RPi.GPIO. Denne modulen håndterer alt det harde arbeidet som er involvert i å dreie GPIO pinner på og av på Raspberry Pi.
Den andre linjen bringer inn sove fra modulen tid for å gjøre det mulig å pause Skriptet gir deg tid til å utføre en bestemt handling, i dette tilfellet la en motor stå på i noen sekunder.
Funksjonen setMode forteller RPi.GPIO å bruke brettet nummerering på Raspberry Pi. Tallene 16, 18 og 22 vil vi bruke for å fortelle Python at de er tappene som er forbundet med motorene.
Når du bruker L293D Du kan gi den en retning, ved å slå den ene siden for å svinge i en retning, kalt pin A og omvendt er pin B. For å snu motoren på bruk en pin kalt Aktiver, merket E i testskriptet - dette er pin 22. Jeg vil dekke dette litt mer senere.
Til slutt, fortell Raspberry Pi Dette er alle utganger som er ferdig med GPIO.OUT.
Med skriptet satt opp, er Raspberry Pi klar for å slå motorer. Det vil slå på noen pinner, vent to sekunder og slå dem av igjen, vist i resten av skriptet.
Lagre og avslutte ved å trykke CTRL-X, langs bunnen spør en melding om å bekrefte endringene. trykk Y og Tast inn å bekrefte. Nå er du tilbake på ledeteksten for å kjøre skriptet og se motorens rotasjon til liv.
sudo python motor.py
Hvis motoren ikke snu, må du kontrollere ledningen eller batteriene. Feilsøking og finne ut hvorfor noe ikke fungerer, kan være irriterende, men er et nyttig skritt i å lære noe nytt!
Det er strålende å ha en motorspinn, men enda bedre å gjøre den sving bakover, så jeg skal vise deg hvordan du gjør det.
Ingenting må gjøres til ledninger, dette er bare Python nå. Dette oppnås ved å opprette et nytt skript, kaller det motorback.py. For å lage skriptet i nano, skriv inn kommandoen:
nano motorback.py
Skriv inn følgende kode:
importere RPi.GPIO som GPIO fra tidspunktet for import importen GPIO.setmode (GPIO.BOARD) Motor1A = 16 Motor1B = 18 Motor1E = 22 GPIO.setup (Motor1A, GPIO.OUT) GPIO.setup (Motor1B, GPIO.OUT) GPIO.setup (Motor1E, GPIO.OUT) Skriv ut "Going forward" GPIO.output (Motor1A, GPIO.HIGH) GPIO.output (Motor1B, GPIO.LOW) GPIO.output (Motor1E, GPIO.HIGH) søvn (2) print "Går bakover "GPIO.output (Motor1A, GPIO.LOW) GPIO.output (Motor1B, GPIO.HIGH) GPIO.output (Motor1E, GPIO.HIGH) søvn (2) skriv ut" Stopp nå "GPIO.output (Motor1E, GPIO.LOW) GPIO.cleanup ()
CTRL-X deretter Y etterfulgt av Tast inn å redde.
Skriptet ligner veldig på den forrige, men hvis du merker for bakover, har vi laget Motor1A lav og Motor1B høy.
Høy og lav er programmeringsnavn for på og av.
For å stoppe motoren slår du av, lav, Motor1E.
ENable er bryteren for å slå motoren på og av, uansett hva EN og B gjør.
Hvis du finner dette forvirrende, se på a Sannhetstabell for å se hva som skjer.
SannhetstabellDet er bare to stater som tillater motoren å snu, når Aktiver er på eller høy, og heller ikke EN eller B må være høy, men ikke begge deler.
For to motorer se på følgende skript. Alt som er annerledes er et par flere linjer for å sette opp den andre motoren.
importere RPi.GPIO som GPIO fra tidspunktet for import, legg inn GPIO.setmode (GPIO.BOARD) Motor1A = 16 Motor1B = 18 Motor1E = 22 Motor2A = 23 Motor2B = 21 Motor2E = 19 GPIO.setup (Motor1A, GPIO.OUT) GPIO.setup (Motor1A, GPIO.OUT) Motor1B, GPIO.OUT) GPIO.setup (Motor1E, GPIO.OUT) GPIO.setup (Motor2A, GPIO.OUT) GPIO.setup (Motor2B, GPIO.OUT) GPIO.setup (Motor2E, GPIO.OUT) Skriv ut "Går fremover "GPIO.output (Motor1A, GPIO.HIGH) GPIO.output (Motor1B, GPIO.LOW) GPIO.output (Motor1E, GPIO.HIGH) GPIO.output (Motor2A, GPIO.HIGH) GPIO.output (Motor2B, GPIO.LOW ) GPIO.output (Motor1E, GPIO.High) søvn (2) print "Går bakover" GPIO.output (Motor1A, GPIO.LOW) GPIO.output (Motor1B, GPIO.HIGH) GPIO.output (Motor1E, GPIO.HIGH) GPIO.output (Motor2A, GPIO.LOW) GPIO.output (Motor2B, GPIO.HIGH) GPIO.output (Motor2E, GPIO.HIGH) søvn (2) skriv ut "Stopp nå" GPIO.output (Motor1E, GPIO.LOW) GPIO .output (Motor2E, GPIO.LOW) GPIO.cleanup ()
I denne opplæringen har jeg vist deg grunnleggende om å koble motorer til Raspberry Pi. Det kan ta et dypt pust og kan gjøre den holdning hvis du er ny for å koble til noe helt nytt, men du vil snart finne ut at når du begynner å leke med GPIO-pinnene, er det vanskelig å stoppe.
Denne opplæringen åpner dørene for å gjøre noe som roboter med blinkende LED-lys og ultralydsensorer for å kunne fornemme omgivelsene.
Finn et chassis for å montere alt ved bruk av et USB-mobilladerbatteri for å gjøre Raspberry Pi fullt mobil.