Raspberry pi stikkontaktkontroll. Raspberry Pi GPIO webkontroll. Havneadministrasjon med webiopi

Det skjedde slik at det første programmet som en person skriver når han lærer programmering, heter "Hello World!". Essensen av dette programmet er å sikre at den angitte enkle setningen vises på skjermen etter oppstart. Det tar vanligvis bare noen få linjer med kode for å gjøre dette.

I en verden av mikroelektronikk kan kontroll av en LED betraktes som en lignende oppgave. Nemlig periodisk slå av og på - blinkende. I denne opplæringen vil vi bare koble LED-en til Raspberry Pi og skrive et program inn python språk for å få den LED-lampen til å blinke.

1. Raspberry Pi General Purpose Pins (GPIO)

En av hovedfordelene med Raspberry Pi er tilstedeværelsen av pinner generelt formål(Generelt formål input/outputs). GPIO er en gruppe pinner som kan kontrolleres av et program. Dessuten kan denne kontrollen være ganske enkel, for eksempel å slå på / av LED. Eller veldig kompleks - datautveksling med perifere enheter ved hjelp av spesialiserte protokoller.

I termer digital elektronikk, til kontroll betyr å endre spenningsnivået ved utgangen. Alt vi kan gjøre med programvaren er med andre ord å koble ønsket pinne til enten strømpinnen (+3,3V) eller jord (Gnd). La oss skildre dette i et skjematisk diagram.

Kretsen har en motstand koblet til rett til jord - dette er belastningen vår. I stedet for en motstand kan det være en LED, et relé, en summer, etc. GPIO23-pinnen og bryteren rett bak symboliserer intern organisasjon hver generell utgang. Det fungerer som følger.

Hvis vi setter pin #23 til True i programmet, så vil Raspberry Pi koble denne pinnen til +3,3V strøm, og strøm vil flyte gjennom motstanden. Hvis vi sender false - False, vil kontrolleren koble pin nr. 23 til jord, og det vil være like potensialer fra begge ender av motstanden - strømmen vil ikke løpe noe sted. Det vil si at ved hjelp av programmet klikker vi så å si en usynlig bryter, så opp, så ned!

Når vi begynner å programmere for å blinke en LED, vil vi lære hvordan vi sender sant og usant til Raspberry Pis generelle pinner.

En LED er en enhet som er halvlederenhet, i stand til å sende ut lys når en elektrisk strøm føres gjennom den i foroverretningen (fra anoden til katoden). Nedenfor er et diagram over en typisk LED med linse.

For å slå på lysdioden riktig elektrisk krets, er det nødvendig å skille katoden fra anoden. Dette kan gjøres på to måter:

  • anoden til LED har en lengre leder;
  • fra katodesiden er LED-huset litt avskåret.

Og slik ser LED-ene ut "live".

Dette er vanlige enfargede lysdioder. Og det er to til, og til og med trefargede. Så, for eksempel, en tre-farget (RGB) LED ser slik ut:

Denne LED-en har fire ben samtidig. Den ene er katoden og de tre andre er anoder for tre forskjellige farger.

I moderne mikroelektronikk brukes miniatyr-LED for overflatemontering. Slike indikatorer er for eksempel tilgjengelige på Raspberry Pi for å informere brukeren om tilstanden til systemet.

3. Bytteordning

For å tenne LED-en må vi koble den til en av digitale utganger Raspberry Pi. La dette være konklusjon #23.

kretsskjema

Layout utseende

I kretsen, i tillegg til selve LED-en, er det en motstand. Hvorfor trengs det? Faktum er at hvis du kobler LED-en direkte til en 3,3 Volt spenningskilde (nemlig, dette er driftsspenningen til Raspberry Pi), så vil LED-en sikkert mislykkes!

Til riktig drift LED må strengt motstå driftsstrømmen og spenningen. For eksempel har en vanlig rød LED en driftsstrøm på 20 mA, ved en spenning på 1,8 til 2 Volt. Motstanden lar oss senke spenningen i kretsen og stille inn ønsket strøm. En slik motstand kalles også en strøminnstillingsmotstand.

I = U/R;

Strømmen som strømmer gjennom et element er lik forholdet mellom spenningen som påføres dette elementet og motstanden.

Vi uttrykker motstanden R fra denne formelen:

Som allerede nevnt, opererer Raspberry Pi med en spenning på 3,3 volt. Dette betyr at for at 2 volt skal forbli på LED, må vi fjerne de ekstra 1,3 volt et sted. La oss få motstanden til å spise dem!

Det viser seg at vi må velge motstanden til motstanden på en slik måte at den fjerner de ekstra 1,3 volt, ved en strøm på 20 mA. Bytt inn disse tallene i den resulterende formelen:

R \u003d 1,3V / 20mA \u003d 1,3V / 0,02OA \u003d 130/2 \u003d 65 Ohm

Således, i Raspberry Pi, har strøminnstillingsmotstanden for den røde LED-en en verdi på 65 ohm. Det er det vi trenger å installere i kretsen.

Hvis du ikke har en 65 ohm motstand for hånden, kan du bruke en hvilken som helst annen større verdi, for eksempel 100 ohm eller til og med 200 ohm. Det er bare det at LED-en vil lyse litt mindre sterkt.

4. Program

La oss nå begynne å kompilere et program som vil kontrollere på og av lysdioden i henhold til algoritmen vi trenger. La oss for eksempel slå på LED-en i 5 sekunder og deretter slå den av.

Det første vi må gjøre er å angi den generelle PIN-nummereringstypen. Det er to typer. Den første typen er socket-nummereringen og den andre typen er mikroprosessorens pin-nummerering. Figuren viser GPIO-kontakten.

Fra venstre til høyre begynner nummereringen av den første typen: 1,2. Hun er ikke signert, men går i rekkefølge: 3,4 - 5,6 - osv. På slutten av kontakten - 39,40.

Prosessornummerering (BCM) går over og under. I diagrammet vårt koblet vi LED-en til pinne #23 i henhold til BCM-nummereringen.

I programmet settes type nummerering ved hjelp av funksjonen settmodus:

GPIO.setmode(GPIO.BCM)

Nå må du stille inn driftsmodus for utgang nr. 23. Det er totalt to moduser: utgang (OUT) og input (IN). Vi ønsker å kontrollere LED, så vi trenger "output"-modus. Men hvis vi ønsket å lese et slags signal, for eksempel fra en sensor, bør vi velge "input" -modus.

GPIO.setup(23, GPIO.OUT)

For å anvende sannheten på utgang nr. 23 bruker vi funksjonen produksjon:

GPIO.output(23, True)

I tillegg til disse funksjonene trenger vi en pause sove. Denne funksjonen stopper kjøringen av programmet. Antall sekunder å pause angis som et argument.

Søvn(5)

Til slutt, for at GPIO- og søvnfunksjonene skal fungere, vil vi helt i begynnelsen av programmet koble til to biblioteker:

Fra RPi importer GPIO fra time import sleep

Så, hele programmet i sin helhet.

Fra RPi importer GPIO fra tidspunkt importer hvilemodus GPIO.setmode(GPIO.BCM) GPIO.setup(23, GPIO.OUT) GPIO.output(23, True) sleep(5) GPIO.output(23, False) GPIO.cleanup( )

5. Blinkende LED i syklus

La oss forbedre programmet på en slik måte at LED-en blinker kontinuerlig med en frekvens på 1 Hertz (det vil si en gang per sekund). For å gjøre dette, må vi legge til en loop-setning til programmet samtidig som.

Fra RPi importer GPIO fra tidspunkt importer hvilemodus GPIO.setmode(GPIO.BCM) GPIO.setup(23, GPIO.OUT) mens True: GPIO.output(23, True) sleep(0.5) GPIO.output(23, False) sleep (0.5) GPIO.cleanup()

Syklus samtidig som vil fungere så lenge betingelsen spesifisert i den er sann. For at syklusen skal fungere uten å stoppe, setter vi som en betingelse ekte.

Programmet som er satt sammen av oss har en ubehagelig feil. Starter vi henne, kommer hun inn endeløs syklus og vi kan ikke stoppe det vanlige midler. Og hvis vi stopper det unormalt, vil ikke funksjonen bli utført rydde opp, noe som er uønsket.

La oss legge til en annen konstruksjon til programmet, som vil tillate oss å avbryte løkken når som helst ved å bruke Ctrl + C-tastkombinasjonen. Programmet vil da avslutte normalt og utføre funksjonen rydde opp.

Fra RPi importer GPIO fra tidspunkt importer hvilemodus GPIO.setmode(GPIO.BCM) GPIO.setup(23, GPIO.OUT) prøv: mens True: GPIO.output(23, True) sleep(0.5) GPIO.output(23, False) ) sleep(0.5) bortsett fra KeyboardInterrupt: skriv ut "program stop" GPIO.cleanup()

Oppgaver

Til slutt, la oss leke litt med lysdiodene på Raspberry Pi.

  1. Sirene. Koble til to lysdioder og blink dem på samme måte som en politisirene - den første slukker, den andre lyser. La en LED stå på pin #23, den andre kan kobles til nabo #24.
  2. SOS. Generer et SOS-signal ved hjelp av morsekode. Blink raskt tre ganger - med en periode på 0,5 sekunder, deretter tre ganger med en periode på 1 sekund, til slutt tre ganger igjen raskt.

Når du kjøper en Raspberry Pi, kjøper du bare trykt kretskort som kommer selv uten strømforsyning og operativsystem. Denne artikkelen er ment å gi deg en ide om hvordan du konfigurerer Raspberry Pi slik at du kan begynne å bruke den.

Raspberry Pi er en minidatamaskin som har mange porter som kan brukes til å koble til ulike periferiutstyr. Du kan koble til en separat skjerm via HDMI-port og tastatur og mus via USB-kontakter, har Raspberry Pi også Ethernet-port, slik at du kan bruke internett i dine Raspberry Pi-prosjekter.

denne håndboken du vil gå gjennom en rekke trinn som lar deg koble din Raspberry Pi til din bærbare eller stasjonære PC, og eliminerer behovet for separate Raspberry Pi-enheter.

Hardware og software

  • 1x;
  • 1 x Ethernet-kabel;
  • 1 x bærbar eller stasjonær PC;
  • 1 x SD-kort ( minimumsstørrelse 4 GB);
  • 1 x Micro USB-kabel (for å drive Raspberry Pi).

Før vi fortsetter trenger vi programvare som må lastes ned. Nedenfor er en liste programvare og lenker hvor du kan laste den ned gratis:

  • Raspbian OS: når du kjøper en Raspberry Pi, har du muligheten (i noen butikker) til å kjøpe et operativsystem forhåndsinstallert på SD-kortet, eller bare laste ned zip-filen fra https://www.raspberrypi.org/downloads/ , som inneholder Raspbian OS-bildet, for å skrive det til SD-kortet ditt;
  • SDFormatter A: SD Card Association har veldig god programvare som kan brukes til å formatere SD-kortet ditt. Besøk https://www.sdcard.org/downloads/formatter_4/index.html og last ned SDFormatter for ditt operativsystem;
  • Win32DiskImager: For å brenne Raspbian OS til SD-kortet ditt, trenger du nyttig verktøy Win32DiskImager. Du kan laste den ned her;
  • Merk: Du må bestemme IP-adressen til Raspberry Pi når du kobler den til datamaskinen. Bare last ned dette programmet http://www.advanced-ip-scanner.com/ ;
  • PuTTy: PuTTy er SSH klient, som vil bli brukt til å koble til Raspberry Pi. Du kan laste den ned her http://www.putty.org/ ;
  • VNC: og den siste er VNC-serveren. Du kan laste den ned her https://www.realvnc.com/download/ .

Når du har lastet ned all denne programvaren, pakk ut og installer den.

Installasjon av operativsystem

  1. Sett SD-kortet inn i kortleseren og sjekk hvilken stasjonsbokstav som er tildelt.
  2. Åpne Win32DiskImager, du må kanskje kjøre den som administrator.
  3. Velg det utpakkede Raspbian OS-bildet.
  4. Velg bokstaven som er tildelt SD-kortet ditt fra rullegardinlisten over enheter. Pass på å velge riktig stasjonsbokstav slik at du ikke ødelegger data på noen annen stasjon.
  5. Klikk brenne(Skrive) og vent på fullføring.
  6. Lukk Win32DiskImager, fjern SD-kortet og sett det inn i Raspberry Pi.

Merk: Etter å ha brent operativsystemet, vil du legge merke til at det kun er noen få megabyte igjen på SD-kortet. Dette er på grunn av den opprettede partisjonen, resten av ledig plass skjult. Du vil kunne fikse dette når vi kobler til Raspberry Pi.

Delt Internett via Ethernet-port

Når SD-kortet er klart, sett det inn i Raspberry Pi. Koble til USB-strømkabelen. Og koble også Raspberry Pi og bærbar PC med Ethernet-kabel.

Hvis du kobler Raspberry Pi til en ruter med internettilgang, kan du hoppe over dette trinnet.

Kontrollerer IP-adressen som er tildelt Raspberry Pi

Det er enkelt, sørg for at Raspberry Pi er koblet til Ethernet-nettverk datamaskinen din (direkte eller via en ruter). Hvis alt fungerer som det skal, vil du se lysdiodene på tavlen blinke.


Koble til Raspberry Pi via PuTTy

Fint! Før vi fortsetter, la oss ta en titt på hva vi allerede har gjort så langt.

Raspberry Pi er ikke bare en minidatamaskin designet for å spille musikk fra den. Den kan også brukes i mer seriøs elektroteknikk. For å gjøre dette har den General Purpose Input/Output (GPIO) linjer, som vi skal se på i dag.



GPIO-ene er på en 2x13 overskrift hvor du kan finne SPI-grensesnitt, I2C, UART og 3,3V og 5V kraftledninger.



Åtte av disse pinnene kan brukes direkte som digital inngang eller utgang. Derfor kan de brukes til å kontrollere lysdioder, motordrivere og annet lignende enheter. Naturligvis kan knapper og brytere kobles til dem for å legge inn informasjon i Raspberry Pi.



Så hvordan klarer du deg GPIO-linjer på en Raspberry Pi?


Først må du installere RPi.GPIO Python Library. Det kan allerede være forhåndsinstallert på operativsystemdistribusjonen. Raspbian-systemer OS. For å teste dette, skriv inn:


sudo python


Skriv deretter inn i linjen:


importer RPi.GPIO som GPIO


Hvis det ikke er noen feil, er alt i orden. Men hvis det oppsto, må du ta følgende trinn.


Først laster du ned RPi GPIO-biblioteket:


wget http://pypi.python.org/packages/source/R/RPi.GPIO/RPi.GPIO-0.3.1a.tar.gz


Deretter trekker vi ut filene:


tar zxf RPi.GPIO-0.3.1a.tar.gz


Bytt deretter til den utpakkede katalogen:


cd RPi.GPIO-0.3.1a


Og installer biblioteket:


sudo python setup.py installer


Bruke RPi.GPIO Python Library


# importer bibliotek importer RPi.GPIO som GPIO # bruk Raspberry Pi-kontaktnummerering GPIO.setmode(GPIO.BOARD) # eller GPIO.setmode(GPIO.BCM) # konfigurer GPIO-pinner til å legge inn eller ut GPIO.setup(11, GPIO.IN ) GPIO.setup(13, GPIO.OUT) # få inngangsverdi fra pin 11 input_value = GPIO.input(11) # sett utgangsverdi til pin 13 GPIO.output(13, GPIO.HIGH) #GPIO.output(13, GPIO.LOW)

Forskjeller mellom GPIO.setmode(GPIO.BOARD) og GPIO.setmode(GPIO.BCM) er basert på PIN-nummereringssystemet. I det første tilfellet brukes nummereringen av P1-kontakten om bord på Raspberry Pi, og i det andre tilfellet, pin-nummereringen til Broadcom-systemet-på-en-brikke, som er kjernen i Raspberry Pi. Du bør være klar over at når det gjelder BCM, er pin-nummereringen mellom første og andre revisjon litt forskjellig, og når du bruker BOARD, spiller ikke revisjonen noen rolle, alt forblir det samme.


La oss nå koble lysdiodene og knappene til Raspberry Pi. Åtte GPIOer er tilgjengelige på kontakten.



Tilkoblinger:



Motstandsverdiene kan beregnes som følger. brukt i denne saken 5 mm LED-er trekker 20mA. Spenningen som tilføres fra Raspberry Pi er 3,3 V. Da vil motstanden være 3,3 V / 20mA = 165 ohm. Motstander på 1 KΩ ble brukt til knappene.




fra tid import søvn import RPi.GPIO som GPIO GPIO.setmode(GPIO.BOARD) GPIO.setup(16, GPIO.IN) GPIO.setup(18, GPIO.IN) GPIO.setup(11, GPIO.OUT) GPIO. setup(13, GPIO.OUT) GPIO.setup(15, GPIO.OUT) GPIO.output(11, GPIO.LOW) GPIO.output(13, GPIO.LOW) GPIO.output(15, GPIO.LOW) # tilstand - bestemmer om lysdioden skal være på eller av tilstand = 0 # inkrement - retning for tilstandsendring inc = 1 mens True: #-knappen trykket hvis (GPIO.input(16) == True): if (inkl == 1): tilstand = tilstand + 1; annet: tilstand = tilstand - 1; # maksimal tilstand nådd, gå tilbake (reduksjon) hvis (tilstand == 3): inc = 0 #minimumstilstand nådd, gå tilbake (økning) elif (tilstand == 0): inc = 1 if (tilstand == 1 ): GPIO.output(11, GPIO.HIGH) GPIO.output(13, GPIO.LOW) GPIO.output(15, GPIO.LOW) elif (tilstand == 2): GPIO.output(11, GPIO.HIGH) GPIO. output(13, GPIO.HIGH) GPIO.output(15, GPIO.LOW) elif (tilstand == 3): GPIO.output(11, GPIO.HIGH) GPIO.output(13, GPIO.HIGH) GPIO. output( 15, GPIO.HIGH) annet: GPIO.output(11, GPIO.LOW) GPIO.output(13, GPIO.LOW) GPIO.output(15, GPIO.LOW) print("trykket B1 ", tilstand) # tilbakestillingsknapp trykket hvis (GPIO.input(18) == True): state = 0 inc = 1 GPIO.output(11, GPIO.LOW) GPIO.output(13, GPIO.LOW) GPIO.output(15, GPIO. LOW) print("trykket B2", tilstand) sleep(0.2);

Så, som vi kan se, er det ganske enkelt å bruke GPIO på Raspberry Pi. Selv om det ikke er så mange av dem som Arduino, men i forbindelse med datakraft system-på-en-brikke, vil denne minidatamaskinen være nyttig i

Figur 1. Systemmaskinvareblokkdiagram

Å beskrive prosessen med å installere maskinvaren til systemet er tidkrevende, men det er ganske enkelt. Først av alt, koble strømforsyningen til vegguttaket ved hjelp av en skjøteledning, og kutte av uttaket på denne skjøteledningen. Avisoler ledningene og fest dem med skruer i strømforsyningsklemmene. Koble deretter Raspberry Pi til strømforsyningen ved å kutte av Type A-kontakten fra USB-kabel og koble ledningene til de tilsvarende terminalene på strømforsyningen, og sett inn kontakten mikro USB inn i RPi sin strømkontakt. Etter det skal begge endene av de to ledningene strippes fleksibel kabel og koble dem til de respektive terminalene merket GND og JDVcc på strømforsyningsenheten og reléenheten. Til slutt fjerner du jumperen som kobler pinnen merket JDVcc til pinnen merket Vcc. Hvis du ikke fjerner denne dumperen, vil RPi sine 3,3V-pinner få strøm med 5V, noe som med stor sannsynlighet vil skade datamaskinen din.

Nå som alle terminaler er slått på, bør du koble IN1-IN8-linjene til relémodulen til de tilsvarende pinnene på GPIO-kontakten ved hjelp av en fleksibel kabel som vist i figur 2. Koden presentert i denne artikkelen ble utviklet for tilfellet når IN1-IN7 pinnene koblet til GPIO1-GPIO7 pinnene. I tilfelle du bestemmer deg for å koble disse pinnene på en annen måte, må du endre koden din tilsvarende.

Pinouten til Raspberry Pi GPIO-headeren er vist i figur 2. Raspberry Pi I/O-portene er 3,3 V, og relémodulen opererer på 5 V. Imidlertid er reléene isolert fra Raspberry Pi GPIO-pinnene ved hjelp av optokoblere. Optokoblerne kan leveres med 3,3 V fra Vcc-pinnen. Vcc-pinnen til relémodulen kan drives av 3,3V fra Raspberry Pis GPIO-header. Pass på å fjerne jumperen som kortslutter Vcc- og JDVcc-pinnene til relémodulen. 5V må påføres JDVcc-pinnen for riktig drift relé. Den aktuelle relémodulen åpner kontaktene når den er aktiv. Det følger at du må jorde terminalene IN1-IN8 for å slå på releet.

Figur 2. Raspberry Pi GPIO Connector Pinout

Advarsel: Vær ekstra forsiktig når du kobler til systemmaskinvarekomponenter. Konsekvenser av nederlag elektrisk støt kan være fatal!

Klipp av restene av skjøtekablene med plugger og fest ledningene til de tilsvarende terminalene på relémodulen. Koble også ledningene til kabelen som deretter kobler systemet til veggkontakten til de tilsvarende terminalene på relémodulen. Hele maskinvaren til systemet kan plasseres i et pennal eller lignende beholder. Tenk på kabinettet på forhånd, slik at du ikke trenger å koble fra og koble ledningene til relémodulterminalene når du er ferdig med systemmaskinvaren. I tillegg satte jeg inn flere skrufestede kabelklemmer i de passende hullene i kassen for å begrense kabelbelastningen (Figur 3).

Figur 3. Montering av systemmaskinvaren

Programvaremiljø

Jeg begynte å lage programvaremiljøet mitt ved å installere et bilde av Raspbian-operativsystemet. Før du begynner å installere operativsystembildet, må du klargjøre en HDMI-aktivert skjerm, et tastatur og en mus med USB-kontakter, i tillegg til nettverkskabel for å koble til systemet via Ethernet-protokoll. Du kan også koble til systemet ved hjelp av wifi-adapter. Lag et oppstartbart SD-kort for første oppstart av systemet, følg instruksjonene på http://www.raspberrypi.org/documentation/installation/installing-image. Under første oppstart av systemet vil installasjonsprogrammet konfigurere operativsystemet og plassere dataene fra bildet på hele minnekortets tilgjengelige plass. Etter første oppstart skal du kunne logge på med standard brukerkontodetaljer (brukernavn "pi" og passord "raspberry").

Å oppgradere systemet er en fornuftig handling som bør tas umiddelbart etter en vellykket pålogging. Raspbian-operativsystembildet er basert på Debians distribusjonsprogramvarepakker og bruker aptitude-applikasjonen som programvarepakkebehandler. I tillegg trenger du programvarepakker som heter python , pip og git . Jeg vil også anbefale å installere Webmin for å forenkle systemadministrasjonsprosessen. Instruksjoner for installasjon av Webmin er tilgjengelig på http://www.webmin.com/deb.html (følg anbefalingene i "Bruke Webmin APT-depotet"):

sudo apt-get update && sudo apt-get dist-upgrade sudo apt-get install python python-pip git-git-core

Etter det må du sette opp en tilkobling ved hjelp av Wi-Fi-adapteren. du kan finne detaljerte instruksjoner på http://www.raspberrypi.org/documentation/configuration/wireless. Jeg anbefaler å bruke wid-curses-varianten. På dette stadiet du kan endre innstillingene Bringebærinnstillinger Pi ved å bruke kommandoen sudo raspi-config. Etter å ha skrevet inn denne kommandoen, vil du ha tilgang til et praktisk grafisk grensesnitt som lar deg stille inn verdiene til parametere som volum tilfeldig tilgangsminne delt med GPU, ytelsesparametere prosessor, bruksmodus GUI i ferd med å laste og andre.

Annen nyttig verktøy er et integrert utviklingsmiljø Cloud 9 IDE. Cloud 9 IDE lar deg redigere Raspberry Pi-nivåkoden gjennom en nettleser. Denne IDE vil også gi deg tilgang til grensesnittet kommandolinje i en nettleser. Du kan utvikle og kjøre hvilken som helst kode uten å forlate nettleseren. Colud 9 IDE IDE krever bestemt versjon NodeJS rammeverk. Bruk av en ikke-støttet versjon av rammeverket vil resultere i permanent krasjer ytelsen til Cloud 9-serveren, som kan gjøre enhver bruker motløs. Instruksjoner for installasjon av NodeJS-rammeverket på bringebær datamaskin Pi er oppført på http://weworkweplay.com/play/raspberry-pi-nodejs .

Programvare

Jeg bestemte meg for å lage brukergrensesnittet til systemet mitt ved å bruke HTML5, CSS3 og JavaScript-teknologier. Kombinasjonen av de tre nevnte teknologiene er kraftig verktøyå lage brukergrensesnitt. Språk JavaScript programmering lar deg bruke en enkel API for å samhandle med servere. I tillegg er det mange biblioteker for programmeringsspråket JavaScript, som JQuery, Bootstrap og andre, hvor du kan velge det som passer best. HTML5 gir en WebSocket API som lar en nettleser holde en tilkobling i live og kommunisere over den tilkoblingen. Denne omstendigheten gjør WebSocket API spesielt nyttig for implementering dynamiske applikasjoner og strømmeapplikasjoner som spill og chatter. Cascading bord css-stiler nyttig for styling av ulike elementer HTML-sider. Hvis de brukes riktig, lar de deg skape dynamisk brukergrensesnitt ved å endre stilene til sideelementer når visse hendelser inntreffer. Til dette prosjektet Jeg valgte jQuery-rammeverket for hendelseshåndtering, Bootstrap CSS for utformingen av grid-knappene og JavaScript-programmeringsspråket for implementering av kommunikasjonsmekanismer basert på WebSocket API.

Biblioteker

En serverapplikasjon som kjører på Raspberry Pi-nivå må administrere pin-statusen til Raspberry Pi GPIO-kontakten. Den må også gi et HTTP-grensesnitt for å sende GUI-data, og et WebSocket-grensesnitt for å sende kommando- og statusmeldinger. Klar til å installere serverapplikasjon med slik spesifikke funksjoner eksisterer rett og slett ikke, så jeg bestemte meg for å lage min egen implementering av serveren ved å bruke språket Python programmering. For å forenkle utviklingen av den beskrevne serverapplikasjonen ved bruk av Python-programmeringsspråket, er moduler tilgjengelige med implementeringer av metoder for å arbeide med Raspberry Pi GPIO-grensesnittet, for å lage HTTP-server og for å jobbe med WebSockets-grensesnittet. Siden alle de oppførte modulene er designet for å utføre oppgavene deres, måtte jeg utvikle en minimumsmengde kode.

Disse modulene er imidlertid ikke inkludert i Python-tolken og må installeres separat. Først av alt trenger du en modul for å kontrollere tilstanden til pinnene til Raspberry Pi GPIO-kontakten. Den enkleste måtenå endre pin-tilstanden til denne kontakten er å bruke RPi.GPIO-biblioteket, tilgjengelig på https://pypi.python.org/pypi/RPi.GPIO. Du kan installere den tilsvarende modulen med følgende kommando:

sudo pip installer RPi.GPIO

Arbeid med RPi.GPIO-modulen er ikke forbundet med noen vanskeligheter. Du kan finne brukseksempler denne modulen ved adressen. I det første trinnet i arbeidet med en modul, er det nødvendig å importere koden til prosjektkoden. Etter det må du velge driftsmodus. Enten GPIO.BOARD-konstanten eller GPIO.BCM-konstanten kan brukes som en driftsmodusidentifikator. Valget av driftsmodus fører til at BCM-brikken eller I/O-kontaktpinnene brukes når det refereres til pinnenummer i alle påfølgende kommandoer. Neste trinn er å spesifisere om pinnene fra den aktuelle kontakten skal brukes til inngang eller utgang. Nå kan du bruke pinnene til denne kontakten til det tiltenkte formålet. Til slutt må du kalle opprydding()-metoden for å tilbakestille tilstanden til GPIO-pinnene. Viser 1 show det enkleste eksempelet ved å bruke RPi.GPIO-modulen.

Liste 1. Bruke RPi.GPIO-modulen

Importer RPi.GPIO som GPIO # importerer modulkoden til prosjektkoden GPIO.setmode(GPIO.BOARD) # som indikerer at nummereringen brukes til å angi pinnene til kontakten GPIO.setup(0, GPIO.IN) # som indikerer at kanalen 0 vil bli brukt for inngang GPIO.setup(1, GPIO.OUT) # indikerer at kanal 1 vil bli brukt for utgang var1=GPIO.input(0) # les tilstanden til kanal 0 GPIO.output(1, GPIO .HIGH) # sett kanal 1 til logisk 1 GPIO.cleanup() # tilbakestill GPIO-pinner.

I denne artikkelen skal vi se på kontroll av inngang/utgang (GPIO) til Raspberry Pi-mikrodatamaskinen via webgrensesnittet. Dette gjør det mulig å administrere ulike enheter gjennom Internett.

Funksjoner ved dette prosjektet:

serverprogram kjører på Raspberry Pi for å lese GPIO-verdier

bruker MySQL databaser for å lagre GPIO-tilstand

- ved å bruke Apache2 webserver for å kontrollere GPIO via nettleser

Så det første du trenger å installere på din Raspberry Pi er:

Apache webserver

mysql server

– phpMyAdmin (det er en russisk versjon)

Fordi Siden Raspberry Pi-mikrodatamaskinen kjører på Linux-systemer, er Internett fullt av beskrivelser på russisk om hvordan du installerer alle disse pakkene. Derfor vil vi ikke fokusere på dette. Det er en god instruksjon for Raspberry Pi, men på engelske språk: les.

Full root-tilgang

For en komplett rot tilgang du må skrive inn kommandoen i terminalen sudo -i, som setter brukeren inn i en økt som root.

Hvis du allerede har aktivert root-kontoen, kan du hoppe videre, hvis ikke, så etter sudo -i-kommandoen må du angi et passord root-bruker, dette gjøres av kommandoen passwd rot. Skriv deretter inn passordet 2 ganger. Nå kan du lukke SSH-økten og logge på igjen som root.

Database oppsett

For å forenkle arbeidet, vil vi gjøre alle handlinger med MySQL fra phpMyAdmin-skallet.

Last ned prosjektfiler

Originalartikkel på engelsk (oversatt av Koltykov A.V. for cxem.net)