Raspberry pi stikkontaktkontroll. Nettkontroll av Raspberry Pi GPIO. Installere Raspbian-operativsystemet

Forord

Emnet er uuttømmelig, og dette notatet er ikke en veiledning til handling, men et forsøk på ikke å glemme at jeg allerede har prøvd det.

Av de tre variantene av Raspberry Pi-datamaskinen A, B og B+ klarte jeg å bli kjent med de to siste. Model B har vært i salg siden februar 2012 og B+ siden juli 2014. Det er ingen forskjell i kameraytelse. De er utstyrt med en ARM11 Broadcom BCM2835-prosessor med en klokkehastighet på 700 MHz og en 512MB RAM-modul.

Forskjeller i antall USB-porter og plassering og type kontakter. Model B har separate lyd- og videoinnganger og et SD-kortspor, mens D+ har en kombinert lyd- og videokontakt, som på mange kameraer, og et micro SD-kortspor. En slags beskyttelse og stabilisering i strømforsyningen eksisterer bare hvis du leverer 5 V til mikro-USB-kontakten, og denne delen er implementert i disse modellene på forskjellige måter. Hvis du leverer strøm til GPIO-kontakten, må du selv sørge for kvaliteten på strømmen. Suksess Arduino-prosjekt bevist at for mange oppgaver er lykke ikke i produktivitet og at det er nødvendig å bruke datamaskiner med ytelsen som er nødvendig for å løse oppgaven. Estimater viser at CPU-ytelsen til Raspberry Pi er sammenlignbar med 300 MHz Pentium II-prøven fra det fjerne 1997. Imidlertid er Broadcom VideoCore IV 250 MHz GPU fra det 21. århundre og gir 1080p videoutgang med 30 bilder per sekund med H.264, MPEG-4 AVC maskinvaredekoding.

Raspberry Pi-modeller B og B + (venstre)

Modell B i et proprietært etui.

Selv om kroppen har spor for kabelen som fører til kameraet, er den til liten nytte for å sette opp fotografering. Huset til kamera og datamaskin skal lages i henhold til oppgaven. For eksempel for et utendørskamera med romslige batterier og langsiktig autonom drift, laget jeg følgende design.

Den ikke navngitte 802:11n-adapteren fungerte rett ut av esken, men mistet stadig nettverket. To ytre forskjellige og forskjellige adapterfirmaer ble kjøpt, men ved nærmere undersøkelse viste de seg å være på samme brikke: REALTEK RTL8188ETV. Å bygge driverne fra kilden resulterte i ødelagte drivere for Raspberry Pi. Imidlertid var det allerede kompilerte binærfiler på nettverket på www.fars-robotics.net / og alt fungerte stabilt med dem. Imidlertid har denne banen en dødelig fiende - sudo apt-get upgrade. Den neste systemoppdateringen, som også påvirket kameraet og derfor var berettiget, gjorde at adaptere ble ute av drift og ingen oppdateringer dukket opp på nettstedet ovenfor. Søket viste at jeg ikke er den første som oppdaterer, og løsningen er allerede funnet og til og med driverbinærene for den siste versjonen er lagt ut.

USB-Bluetooth-adapteren (den første på bildet) kan brukes til å kontrollere kameraet, men tilkoblingen må etableres før du starter programmet, og derfor viste det seg å være mer praktisk å bruke com-Bluetooth-adapteren, siden seriell port er fra og i Afrika serieporten og uansett om programmet er tilkoblet vil ikke banne. I dette tilfellet kreves ingenting fra operativsystemet for å pare enhetene, hvis adapteren er slått på, kan en tilkobling opprettes med den.

Ved å koble en digital mottaker av et IR-signal (for eksempel TSOP1736) til GPIO, kan du bruke resultatene av LIRC-prosjektet til å styre kameraet fra fjernkontrollen.

På bildet nedenfor er fotodetektoren satt inn i et utvidelseskort, som i dette tilfellet kun er nødvendig for enkel tilkobling.

Det finnes mange operativsystemer for å jobbe med en datamaskin. For eksempel klarte jeg å installere Slackware ARM uten problemer, men det viste seg å være et enormt grunnsystem som fortsatt måtte tilpasses for å fungere med kameraet. Derfor, til tross for all min kjærlighet til denne distribusjonen, slo jeg meg på det mest massive og følgelig det mest tilpassede og dokumenterte systemet - Raspbian (Debian Wheezy). Den støtter kameraet ut av esken, men første gang du slår det på, må du gi tilgang til det ved å ringe sudo raspi-config. Operativsystemet installeres ved å kopiere dd-kommandoen til minnekortet og her legger jeg merke til at systemet viste seg å være veldig kresne med kortene. Mitt forsøk på å bruke gamle 4 GB-kort endte i de fleste tilfeller i feil, enten ble det ikke registrert, eller så startet ikke systemet fra disse kortene.

Mest full liste ressurs, etter min mening, er plassert på elinux.org/RPi_Hub. Og følgelig delen dedikert til kameraet: elinux.org/Rpi_Camera_Module.

Fra synspunktet om å konstruere systemene deres annerledes enn de til masseproduserte, er den største interessen de enorme mulighetene for fjernkontroll av kameraet. Dette og kablet nettverk, og Wi-Fi, og Bluetooth, og en IR-fjernkontroll, og digitale innganger, som lar deg polle både de enkleste knappene og organisere dataoverføring ved hjelp av en rekke serieprotokoller.

Du kan koble til nettverket både via tvunnet parkabel via Ethernet og via Wi-Fi. Du kan koble til en ruter, eller du kan direkte. Med en direkte tilkobling via Wi-Fi gjør vi telefonen om til en ruter, og i tilfelle av Ethernet, hvis nettverket ikke er forhåndskonfigurert, sett IP-en til den lokale datamaskinen og heve nettverket med kommandoen:

Bash-4.2 # ifconfig eth0 192.168.0.214 opp

Og slå den av med kommandoen:

Bash-4.2 # ifconfig eth0 ned

Når det gjelder en nettverkstilkobling, er den enkleste måten å få tilgang til Raspberry Pi og følgelig til kameraet å skrive inn kommandoen på kommandolinjen: ssh -l pi 192.168.0.198 hvor 192.168.0.198 er adressen til Raspberry Pi og skriv inn passordet raspberry

Bash-4.1 $ ssh -l pi 192.168.0.198 [e-postbeskyttet]"s passord: Linux raspberrypi 3.12.22+ # 691 PREEMPT Wed Jun 18 18:29:58 BST 2014 armv6l Siste pålogging: Lør 27. september 16:49:37 2014 fra 192.168.0.215 [e-postbeskyttet] ~ $

En permanent IP-adresse kan tildeles ved å redigere filen etc / network / interfaces, lik den nedenfor. De. kommentere linjen med dhcp og legg til innstillingene som tilsvarer ditt lokale nettverk.

Auto lo iface lo inet loopback #iface eth0 inet dhcp iface eth0 inet statisk adresse 192.168.0.199 nettmaske 255.255.255.0 nettverk 192.168.0.0 kringkasting 192.168.0.255 gateway 192.168.0.255 gateway 192.168.plulan wuppa 16-02, etc. /wpa_supplicant.conf #iface standard inet dhcp iface standard inet statisk adresse 192.168.0.198 nettmaske 255.255.255.0 nettverk 192.168.0.0 kringkasting 192.168.0.255 gateway 1.116.

På en Android-telefon må du installere en slags SSH-klient. Jeg har den installert. Dette er en generell løsning som i stil og funksjonalitet ligner på å jobbe fra en stor datamaskin. Det finnes også mange programmer som er skreddersydd spesielt for å fungere med Raspberry Pi. Jeg prøvde å jobbe med og. Selv om den første allerede har forhåndsinnstillinger for å jobbe med kameraet, likte jeg alternativet med å kompilere min egen liste over kommandoer, som tilbys i den andre, mer.

Nå har vi muligheten til å få direkte tilgang til kameraet og for eksempel tvinge det til å ta bilder når du trykker Enter:

[e-postbeskyttet]~ $ raspistill -o foto% 03d.jpg -k -v -t 999999
raspistill Camera App v1.3.6 Bredde 2592, Høyde 1944, kvalitet 85, filnavn foto% 03d.jpg Tidsforsinkelse 999999, Rå nei Miniatyrbilde aktivert Ja, bredde 64, høyde 48, kvalitet 35 Link til siste ramme aktivert Nei Forhåndsvisning av full oppløsning Nei metode: Ta opp ved tastetrykk Forhåndsvisning Ja, Fullskjerm Ja Forhåndsvisningsvindu 0,0,1024,768 Opasitet 255 Skarphet 0, Kontrast 0, Lysstyrke 50 Metning 0, ISO 0, Videostabilisering Nei, Eksponeringskompensasjon 0 Eksponeringsmodus "auto", AWB Modus "auto", Bildeeffekt "ingen" Målemodus "gjennomsnittlig", Fargeeffekt aktivert Nei med U = 128, V = 128 Rotasjon 0, hflip Nei, vflip Nei ROI x 0,000000, y 0,000000, w 1,000000 h 1,00000 t Kamera komponent utført Koderkomponent ferdig Starter komponenttilkoblingsstadiet Kobler kameraets forhåndsvisningsport til videogjengivelse. Koble kameraets stillbildeport til koderinngangsport Trykk Enter for å ta bilder, X og deretter ENTER for å avslutte

Raspistill-programmet gir tilgang til nesten alle kameraets muligheter.

Bildeparameterkommandoer - ?, --help: Denne hjelpeinformasjonen -w, --width: Angi bildebredde -h, --height: Angi bildehøyde -q, --quality: Angi jpeg-kvalitet<0 to 100>-r, --raw: Legg til rå bayer-data til jpeg-metadata -o, --output: Utdatafilnavn (for å skrive til stdout, bruk "-o -"). Hvis ikke spesifisert, lagres ingen fil -l, --latest: Koble siste komplette bilde til filnavn -v, --verbose: Send ut detaljert informasjon under kjøring -t, --timeout: Tid (i ms) før bildet tas og slås av (hvis ikke spesifisert, satt til 5s) -th, --thumb: Angi thumbnail parametere ( x: y: kvalitet) eller ingen -d, --demo: Kjør en demomodus (gå gjennom rekke kameraalternativer, ingen opptak) -e, --encoding: Koding som skal brukes for utdatafil (jpg, bmp, gif, png) -x, --exif: EXIF-tag for å bruke på opptak (format som "nøkkel = verdi") eller ingen -tl, --timelapse: Timelapse-modus. Tar et bilde hver ms -fp, --fullpreview: Kjør forhåndsvisningen med stillbildeopptaksoppløsningen (kan redusere forhåndsvisningsfps) -k, --tastetrykk: Vent mellom opptakene for en ENTER, X og deretter ENTER for å avslutte -s, --signal: Vent mellom fanger for en SIGUSR1 fra en annen prosess -g, --gl: Tegn forhåndsvisning til tekstur i stedet for å bruke videogjengivelseskomponent -gc, --glcapture: Ta opp GL-rammebufferen i stedet for kamerabildet Forhåndsvisningsparameterkommandoer -p, - forhåndsvisning : Forhåndsvis vinduets innstillinger<"x,y,w,h">-f, --fullskjerm: Fullskjerms forhåndsvisningsmodus -op, --opacity: Forhåndsvisningsvinduets opasitet (0-255) -n, --nopreview: Ikke vis et forhåndsvisningsvindu Bildeparameterkommandoer -sh, --skarphet: Angi bilde skarphet (-100 til 100) -co, --contrast: Still inn bildekontrast (-100 til 100) -br, --brightness: Still inn bildelysstyrke (0 til 100) -sa, --saturation: Still inn bildemetning (- 100 til 100) -ISO, --ISO: Still inn fangst ISO -vs, --vstab: Slå på videostabilisering -ev, --ev: Still inn EV-kompensasjon -ex, --eksponering: Still inn eksponeringsmodus (se merknader) - awb, --awb: Angi AWB-modus (se merknader) -ifx, --imxfx: Angi bildeeffekt (se merknader) -cfx, --colfx: Angi fargeeffekt (U: V) -mm, --måling: Sett målemodus (se merknader) -rot, --rotation: Sett bilderotasjon (0-359) -hf, --hflip: Sett horisontal flip -vf, --vflip: Sett vertikal flip -roi, --roi: Sett region av interesse (x, y, w, d som normaliserte koordinater) -ss, --shutter: Still inn lukkerhastighet i mikrosekunder Eksponeringsmodusalternativer: auto, natt, nattforhåndsvisning, bakgrunnslys, spotlight, sport, sn ow, strand, veldig lang, fast fps, antishake, fyrverkeri AWB-modusalternativer: av, auto, sol, sky, skygge, wolfram, fluorescerende, glødelampe, blits, horisont Alternativer for bildeeffektmodus: ingen, negativ, solarisering, skisse, denoise, preging , oljemaling, luke, gpen, pastell, akvarell, film, uskarphet, metning, fargebytte, utvasking, posterise, fargepunkt, fargebalanse, tegneserie Målemodusalternativer: gjennomsnitt, punkt, bakgrunnsbelyst, matrise Forhåndsvisningsparameterkommandoer -gs, --glscene: GL scene kvadrat, tekanne, speil, yuv, sobel -gw, --glwin: GL-vindusinnstillinger<"x,y,w,h">

Hvis du trenger å få et levende bilde fra et kamera på en ekstern datamaskin, må du bruke raspivid-programmet. Det er to alternativer her.

Den første bruker netcat. Kjør først på den lokale datamaskinen:

Nc -l -p 5001 | mplayer -fps 31 -cache 1024 -

Og så på Raspberry Pi:

Raspivid -t 999999 -w 640 -h 480 -fps 10 -o - | nc -v 192.168.0.24 5001

Hvor 192.168.0.24 er IP-adressen til den lokale datamaskinen.

Det andre alternativet bruker VLC. Jeg klarte ikke å gjenta denne bragden da jeg skrev denne artikkelen. Jeg fulgte instruksjonene som ble skissert. Årsaken, som det viste seg, var oppgraderingen til versjon 3.12.28+. Det løses ved å installere VLC på nytt.

Det vil selvsagt være en forsinkelse, og det vil variere ganske mye avhengig av innstillingene til kontrollcomputeren.

For å gjøre det enklere å jobbe med kommandolinjen, kan du lage et visst grafisk grensesnitt. Det kan kjøres både på en ekstern datamaskin, og hvis du installerer VNC, kan du få ekstern tilgang til skrivebordet og følgelig kjøre det på Raspberry Pi. Det finnes ferdige løsninger: Pi Vision og RaspiCam Remote. En annen vanlig måte å kontrollere kameraet på er python, som det er et spesielt picamera-bibliotek for. For meg er hovedsaken gjentakbarheten av resultatene, dvs. fra programmet trenger jeg først og fremst muligheten til å stille inn lukkerhastighet og følsomhet. Siden jeg ikke umiddelbart kom over en ferdig løsning, skrev jeg min egen. (Pi Sight-alternativet passet ikke meg.) Jeg har tenkt å vurdere programmet mer detaljert i en egen artikkel, men foreløpig, for de som vil grave, siterer jeg kildekoden for Python 2.7.3 og picamera 1.8.

For å få tilgang til Raspberry Pi-mapper over nettverket, kan du skrive inn følgende adresse i Dolphin:

Fisk: // [e-postbeskyttet]: 22 / hjem / pi /

For å få tilgang til skrivebordet fra en ekstern datamaskin, installerte jeg på en Raspberry Pi som kjører Raspbian OS:

Sudo apt-get install tightvncserver

Hvis det er et ønske om å bruke utklippstavlen med den lokale maskinen i fremtiden gjennom F8-menyen, sett i tillegg:

Sudo apt-get install gsfonts-x11 xfonts-75dpi xfonts-100dpi autocutsel

Og i filen /home/pi/.vnc/xstartup legger du til linjen autocutsel -fork etter linjen xsetroot -solid grey.

Slå på vncserver:

[e-postbeskyttet]~ $ vncserver: 1 -geometry 800x480 Nytt "X" skrivebord er raspberrypi: 1 Starter applikasjoner spesifisert i /home/pi/.vnc/xstartup Loggfilen er /home/pi/.vnc/raspberrypi:1.log

Å få tilgang med stasjonær datamaskin og en bærbar Slackware, installerte jeg tightvnc-pakken.

Vi starter vncviewer, i vinduet som vises, skriv inn, i mitt tilfelle, adressen 192.168.0.198:1, deretter passordet og få:

Nå starter vi kamerakontrollprogrammet. Ved kontroll fra en ekstern datamaskin som bruker dette programmet, er forhåndsvisning kun mulig på en skjerm koblet direkte til Raspberry Pi.

Det er mange applikasjoner for Android. Remote Ripple, VNC Viewer, DesktopVNC virket relativt akseptable for meg. I mitt tilfelle, for å koble til, måtte jeg angi adressen og porten 5901 og, når jeg kobler til, angi passordet som er spesifisert for vnc-serveren. Et vanlig problem med denne måten å kontrollere kameraet på er museemulering, som på liten skjerm telefonen er vanskelig å ringe komfortabelt. På den lille skjermen på telefonen, for meg, var kanskje den mest praktiske VNC Viewer med konstant plassering av museknappene nederst på skjermen.

Hvis vi ignorerer individuelle preferanser for brukervennligheten til grensesnittet, så for nettverkstilkoblinger nok programmer er allerede skrevet til å implementere noen form for skyting. Når du jobber med en tightvnc-bærbar, etter min mening, lar den deg ganske komfortabelt jobbe med et kamerakontrollprogram som kjører på en Raspberry Pi. Hvis du trenger et levende bilde på det, er det kanskje verdt å skrive et slags grensesnitt til kommandoene som sendes via SSH for å gjøre det enklere å bytte mellom streaming video-modus for visning og modusen for å ta bilder. I dette tilfellet ser jeg ingen spesielle fordeler med å bruke python, og du kan begrense deg til å kalle raspistill og raspivid.

7. Kjennskap til programmeringsverktøyene som er installert på Raspberry Pi

For å lære programmering i Raspbian OS, er Python, Scratch, Node-RED, SonicPi og Wolfram Mathematica-pakker forhåndsinstallert. Det er for å gjøre studiet av programmering og fysisk databehandling så tilgjengelig og praktisk for alle som mulig at Raspberry Pi-prosjektet ble opprettet for flere år siden! Så hva er de forhåndsinstallerte utviklingsverktøyene på RasPi med tre ord?

Det er ikke nødvendig å introdusere Python - det er det mest populære programmeringsspråket i universitetet og det vitenskapelige miljøet. Et bibliotek er skrevet og forhåndsinstallert for arbeid med sensorer via GPIO for Python. Generelt sett kan du gjennom pip-verktøyet legge til tusenvis av Python-biblioteker til bokstavelig talt alle de praktiske problemene med fysisk databehandling og vitenskapelig databehandling.
Bortsett fra Python språk versjon 2 og 3 med IDLE utviklingsmiljø, en spesiell versjon av den populære Minecraft-spill Pi- og Python-biblioteker for spillkontroll. (Se og introduksjon)
Node-RED - visuell redaktør fra IBM med åpen kildekodeå lage "Internet of Things", som tillater, praktisk talt uten programmering, ved å koble sammen ferdige moduler for å "sette sammen" ganske komplekse applikasjoner for systemer som "smart hjem". (Se innledningen og).
Skrapespråk - verktøysett visuell programmering lar barn lage animasjoner og spill ved hjelp av Dra og slipp-metoden. (Se og introduksjon)
SonicPis unike språk lar deg programmere musikken din. (Se introduksjonen.)
Wolfram og Mathematica-pakker er de fleste komplett system for moderne teknisk databehandling i verden. Hun vil være uerstattelig assistent for teknisk databehandling for både skoleelever og universitetsstudenter. Selv om det er et betalt produkt for Windows, kommer Raspbian OS med en fullt funksjonell gratisversjon.
(Se og introduksjon)
I tillegg kommer Raspbian OS med Node.js, Perl og Ruby forhåndsinstallert som standard.
For praktisk arbeid med koden på Raspberry Pi er forhåndsinstallert med en av beste redaktører med syntaksutheving og Geany utviklingsmiljø.

8. Gjenoppretting Bringebær fungerer Pi etter krasj


Det kan oppstå en situasjon der inkompatibilitet av nyinstallert maskinvare eller programvare vil forårsake en feil ved systemoppstart. For eksempel, selv om det er et Open GL-element i Raspberry Pi 3-innstillingene, som praksis har vist, vil aktivering av dette alternativet føre til en systemoppstartsfeil.
Som praksis har vist, har Raspberry Pi flere alternativer for å gjenopprette fra en oppstartsfeil.

1) Rull tilbake til siste sikkerhetskopi av microSD-kort ved å bruke Win32DiskImager.
Lag hyppige bilder av den stabile versjonen av systemet med Win32DiskImager-programmet, og du kan være sikker på at i tilfelle feil, vil systemet gjenopprettes i løpet av få minutter.

2) Redigere konfigurasjonsfilen config.txt fra et microSD-kort på en datamaskin ved hjelp av en kortleser.
For eksempel, i tilfelle en krasj med Open GL, kommenter den siste linjen "dtoverlay = vc4-kms-v3d" i config.txt-filen med #-symbolet, og systemet vil starte normalt.

3) Koble til Raspberry Pi eksternt over nettverket via en SSH-terminal.
I mange tilfeller, for eksempel, i tilfelle av samme oppstartsfeil ved oppstart av Open GL, etter å ha lastet systemkjernen, klarer SSH-serveren å starte og fortsetter å jobbe i bakgrunnen. Du kan logge på Raspberry Pi-konsollen via en SSH-terminal, redigere konfigurasjonsfilene (boot / config.txt), eller kjøre raspi-config og deaktivere de feilende alternativene.

4) Rengjøring av systemet.

Fjern pakkebufferen:
sudo apt-get clean
Fjern foreldreløse pakker:
sudo apt-get autoremove
Oppdater pakkelisten:
sudo apt-get oppdatering
Fiks avhengighetene:
sudo apt-get -f install
Installer pakken på nytt hvis pakkeinstallasjonen ble avbrutt
sudo apt-get install --reinstall package_name

9. Fjernkontroll Raspberry Pi (SSH / VNC)



Som ethvert Unix-system kan Raspberry Pi fjernstyres på flere måter.
Det enkleste er å kontrollere det i konsollen ved hjelp av SSH-protokollen. For å gjøre dette mulig, må du gå til Raspberry Pi-innstillingene (sudo raspi-config), velge menyelementet "Interfacing options", i neste vindu, velge "SSH"-elementet og bekrefte inkluderingen SSH server ved oppstart. Det anbefales å umiddelbart endre standardpassordet til "pi"-brukeren fra "bringebær" til noe annet som inneholder minst 8 tegn i den engelske layouten.
Deretter kan du laste ned den gratis PuTTY SSH-klienten på en annen datamaskin, kjøre den og skrive inn på linjen " Vertsnavn(eller IP-adresse) "den lokale IP-adressen til Raspberry Pi. Konsollen vil be om pålogging, etterfulgt av et passord. Hvis alt er skrevet inn riktig, vil Raspberry Pi-hilsenen og en grønn markør vises. Du kan installere og avinstallere programmer gjennom SSH-terminalen. , kopier, flytt og slett filer, utfør konsollkommandoer for systemet og skript (BASH, Python, Perl ...), arbeid med Raspberry Pi-konfigurasjonsfiler. Med et ord, gjør alle de forskjellige operasjonene tilgjengelig i konsollen til Unix-systemer Mange ting er mer praktisk å gjøre i konsollredigeringsprogrammer som MC-filbehandleren, som også fungerer via en SSH-terminal.
I tillegg til terminaltilgang til konsollen, har Raspberry Pi innebygget full kontroll i et grafisk grensesnitt. For dette er en gratis versjon av VNC-serveren forhåndsinstallert på Raspberry Pi. Du kan aktivere autorun på samme sted der vi tidligere aktiverte SSH-serveren. Det er nødvendig å velge neste menyelement "Iinterfacing options" - "VNC" og bekrefte inkluderingen av serveren. For full tilgang til Raspberry Pi, må du laste ned den gratis VNC-viewer, starte den, og akkurat som i tilfellet med SSH, angi den lokale IP-adressen til Raspberry Pi. Etter å ha gått gjennom autorisasjonsprosedyren, vil du bli ført til Raspberry Pi, som om du var foran en skjerm koblet til den, trykk på tastaturet og klikk med musen. VNC-klienten er bare litt tregere enn selve Raspberry Pi. Menyer åpnes bare med nesten samme hastighet grafiske filer når de åpnes, tegnes de ikke umiddelbart, med en liten forsinkelse på en brøkdel av et sekund.
Når du fjernkobler til Raspberry Pi via SSH og VNC, er det kun nødvendig at enheten kobles til det lokale nettverket og strømforsyningen. Tastaturet, musen og skjermen er kanskje ikke koblet til Raspberry Pi. Dette er praktisk i tilfelle av å konfigurere "bringebær" som en webserver, eller en IoT-server (server for å administrere sensorer til et "smart hjem").

Forresten, som standard er dimensjonene til den virtuelle skjermen i VNC for små - bare 640x480 piksler. Her er mitt lille "hack" for å stille inn en komfortabel skjermoppløsning (1024x768) når du fjernkobler via VNC:

La oss åpne Raspberry Pi-konfigurasjonsfilen for redigering:
sudo nano /boot/config.txt
La oss fjerne kommentarer (fjern #-symbolet til venstre) og korrigere følgende linjer litt:
hdmi_force_hotplug = 1
hdmi_gruppe = 2
hdmi_mode = 16

10. Installere LAMP Internet Development Kit

Siden ikke bare jeg tror at Internett er fremtiden, bør en programvarepakke installeres på datamaskinen til en ung programmerer som gir en mulighet til å lære det grunnleggende om Internett-programmering, lage og administrere nettsteder. Den generelt aksepterte standarden for Internett-utviklermiljøet i Linux er et sett med programmer som består av Apache-nettserveren, MySQL DBMS og språket PHP programmering(LAMPE). For å lette databaseadministrasjonen, anbefales det også å installere PHPMyAdmin-programvaren (alle programmer distribueres gratis). Etter trinnvise instruksjoner fra Raspberry Pi offsite, ble LAMP og det mest populære (CMS) Wordpress installert på Malinka og konfigurert til å fungere på en halvtime. Jeg gir deg trinnvise instruksjoner med forklaringer slik at denne prosessen ikke tar deg lengre tid enn min.


1. Installere Apache2-serveren (<1 мин)
sudo apt-get install apache2 -y
Sjekker at Apache fungerer
lenker 2 http://192.168.0.100
Vis nettstedsmappe
cd / var / www / html
ls -al

2. Installer PHP 5 (1 min)
sudo apt-get install php5 libapache2-mod-php5 -y
sudo-tjenesten apache2 omstart
Test sideoppretting
sudo rm index.html
sudo nano index.php

Sjekker at PHP fungerer
lenker 2 http://192.168.0.100

3. Installere mysql 5 (3 min)
sudo apt-get install mysql-server php5-mysql -y
sudo-tjenesten apache2 omstart

Tildele rettigheter til Apache-brukeren
sudo chown -R www-data:.

Oppretting av MySQL-database
mysql -uroot -ppassword
mysql> lage database wordpress;

Aktiverer Apache mod omskriving
sudo a2enmod omskrive

Aktiverer muligheten til å spesifisere innstillinger i .htaccess
sudo nano /etc/apache2/sites-available/000-default.c onf

La oss legge til følgende kode

< VirtualHost *:80 >
< Directory "/var/www/html" >
Tillat Overstyr alle
< /Directory >

4. Installer PHPMyAdmin(3 min)
sudo apt-get install phpmyadmin

5. Installere Wordpress

Last ned Wordpress

cd / var / www / html /

Pakker ut Wordpress

sudo tar xzf wordpress-4.7.2-ru_RU.tar.gz

sudo mv wordpress / *.

sudo rm -rf wordpress-4.7.2-ru_RU.tar.gz

Installere og konfigurere Wordpress
Vi går inn i nettleseren på din nåværende adresse, for eksempel http://192.168.0.100, eller på http: // localhost.
I de aktuelle feltene, spesifiser navn, adresse (localhost), brukernavn og passord til brukeren av databasen du opprettet tidligere, nettstedsnavn, brukernavn og passord til nettstedadministratoren (ikke bruk enkle navn som "root" og "admin ", kom opp med et passord på minst 8 tegn, som inneholder tall og bokstaver i forskjellige tilfeller), samt e-posten din.
Om noen få sekunder etter bekreftelse av datainntastingen vil Wordpress være installert og klar til å fungere! Bunter med nødvendige plugins, som cyr3lat, wp-edit, hyper-cache, wp-db-backup, etc., kan installeres senere ved ganske enkelt å skrive inn navnene deres i søkeskjemaet på Plugins-siden i Wordpress Administrator-konsollen.
Raspberry Pi er nå klar til å være en internettutviklers hjemmenettserver.

11. Kjennskap til Python

Objektorientert tolket språk Python programmering dukket opp på slutten av 80-tallet og begynnelsen av 90-tallet i sentrum for matematikk og informatikk i Nederland takket være innsatsen til Guido van Rossum.
Opprinnelig var språket fokusert på å forbedre utviklerens produktivitet og kodelesbarhet.
Python er preget av en minimalistisk syntaks med høy funksjonalitet, støtter alle store programmeringsparadigmer, støtter dynamisk skriving, automatisk kontroll minne, unntakshåndtering, multithreading, modularitet.
For tiden brukes Python aktivt som et universelt miljø for vitenskapelig databehandling. I mange populære programmer 3D-grafikk som Blender, Python-språket brukes til å utvide standardfunksjonene til programmer.
Python brukes av mange store selskaper som Dropbox, Google, Facebook, Instagram.
Et trekk ved syntaksen til Python-språket er tildelingen av kodeblokker ved hjelp av innrykk, derfor er det ingen start-/sluttparenteser og krøllete klammeparenteser i Python. Python mangler også eksplisitte linjeavslutninger som ";" som i Perl.
En av attraksjonene til Python er det rike biblioteket med standardmoduler. I tillegg til standard bibliotek det er et stort utvalg av applikasjonsbiblioteker for Python på en rekke områder. For Python er det laget rammeverk for utvikling av webapplikasjoner, den mest populære er Django.
tkinter-biblioteket kommer med Python for å bygge GUI-programmer på tvers av plattformer. Også for Python er det utvidelser for alle store GUI-biblioteker.
Det er Python-utvidelser for spillskaping (Pygame), multimedia, 3D-modellering, grafikkbehandling, grafer, astronomisk databehandling (Astropy).
Installasjon og oppdatering av pakker for Python gjøres gjennom grensesnittet PyPI (Python Package Index). Moduler påkalles i begynnelsen av programmer med importkommandoen.
Python var opprinnelig ment å være det primære programmeringsspråket på Raspberry Pi. Det er ingen tilfeldighet at devboard har en symbolsk slutt "Pi" i navnet.
Å jobbe med eksterne sensorer Raspberry Pi-plugins for Python er skrevet og forhåndsinstallert i Rasbian, flere biblioteker som RPi.GPIO.
Sammen med Python kommer Raspberry Pi med et standard IDLE-applikasjonsutviklings- og testgrensesnitt og praktisk redaktør Geany.
Det er tonnevis av opplæringsprogrammer på Internett for å komme i gang med Python-språket og ferdige eksemplerå lage IoT-applikasjoner på Raspberry Pi, forståelig selv for grunnskoleelever.
Man bør huske på at de fleste eksemplene på Internett er skrevet for Python 2.x, som ikke er kompatibel med 3.X. Derfor er begge versjonene av Python forhåndsinstallert på Raspberry Pi. I tillegg, sammen med Python 3.X, leveres et program (skript) "2to3", som konverterer koden fra versjon 2.x til 3.X.

Til slutt, etter å ha lest et par nettguider og én smart bok i løpet av helgen i elektronisk format på engelsk skrev jeg et lite program som beregner frekvensen av de mest populære ordene på en side med en spesifisert URL og senere "boltet" et visuelt grensesnitt til det basert på Tkinter-biblioteket. Jeg har aldri laget en GUI-applikasjon så enkel, rask og hyggelig ...

(For en introduksjon til det grunnleggende om Python-språket, se og)

12. Arbeider med Python og GPIO, blinkende LED

Etter å ha blitt kjent med det grunnleggende om syntaks og grunnleggende sett kommandoer i Python-språket, er et avgjørende skritt på veien til fysisk databehandling å løse et tilsynelatende enkelt problem: "blink en LED."
Det var fra dette trinnet at mange skolebarn, studenter og voksne "nerder" rundt om i verden begynte sin vei innen IoT-programmering.
For å gjøre dette trengte jeg først og fremst å kjøpe flere radiokomponenter: flere par motstander fra 100 til 300 Ohm (som foreslått i håndbøkene) og flere lysdioder i forskjellige farger (jeg tok rød, blå og hvit). I løpet av letingen etter en passende radiobil, viste det seg at kun ett spesifikt punkt selger radiokomponenter i byen min. Kostnaden for delene viste seg å være lav (3-5 rubler per stykke).
Ved montering av en enkel krets bestående av en LED og en motstand fant jeg ut at 40-pins kabelen til mitt kretskort (breadboard) ikke er merket med en rød stripe langs kanten, men består av flerfargede kabler. På Internett fant jeg ikke noe koblingsskjema for en slik kabel til breadboard og Raspberry Pi 3. Jeg måtte åpne GPIO-kretsen og ringe kabelpinnene med en digital tester for å finne ut hvordan jeg skulle koble den til.
Det viste seg også at "kammen" for å koble kabelen til breadboard ikke har kraner for utgang til breadboard kraftledningen, så jeg måtte koble jorden på kammen til minus på breadboardet.
Etter å ha satt sammen kretsen på en slik måte at den lange kontakten (+) til LED-en ble koblet til 21 GPIO-porter, og den korte kontakten gjennom en 100 Ohm motstand til jord (-), startet jeg Raspberry Pi 3 og koblet til den via VNC.
Jeg opprettet flashpi.py LED-blinkprogrammet i IDLE3, beskrevet på nettstedet http://edurobots.ru/, og lagret det i / home / pi-mappen."
Lanserte programmet med F5 i IDLE3 (du kan også kjøre programmet med kommandoen "sudo python3 flashpi.py" i LXTerminal) og ... lysdioden lyste ikke.
Etter å ha sjekket alle kontaktene og riktigheten av kretsenheten, innså jeg at poenget ikke er i maskinvaren, men i programvaredelen av systemet. Fra et eksempel i en av e-bøkene på Raspberry Pi 3, viste det seg at i stedet for kommandoen
GPIO.setmode (GPIO.BOARD), må du initialisere portene med kommandoen GPIO.setmode (GPIO.BCM). Etter å ha redigert koden og startet programmet, etter å ha trykket på Enter-tasten, lyste endelig LED-en med et sterkt lys!
Ved å trykke på Enter-tasten igjen slo LED-en av. Ved å trykke på en hvilken som helst annen tast forlot programmet og avsluttet arbeidet med GPIO-portene på riktig måte.
Her er koden til arbeidsprogrammet (vi erstatter "__" med mellomrom - dette er de nødvendige innrykk i Python):

Fra loopen, avsluttende arbeid med GPIO

Aldri i mitt liv har jeg vært så fornøyd med en brennende LED! Og jeg har ikke vært så glad på lenge! Som jeg håper, før eller siden gjorde 10 millioner Raspberry Pi-kjøpere det, jeg blinket LED-en! Dessuten "blinket" han programmatisk!

Konklusjon - avskjedsord til ung kybernetikk

Håper min lange, men spennende 3 måneders reise fra beslutningen om å kjøpe et enkelt brett Bringebær datamaskin Pi 3 gikk ikke forgjeves før programvaren "blinker LED".
Han introduserte meg for den nye verdenen av Unix og fysisk databehandling, og utarbeidet samtidig en steg-for-steg-guide for alle som vil inn i den (primært for skolelærere og elever på videregående skole) og skapte en plattform for videre mestring fysisk databehandling, webprogrammering og systemadministrasjon ... Basert på at Raspberry Pi 3 koster litt mer enn 2 tr. ble til mulig opprettelse hjemmenettserver og multimediasenter, interessante løsninger for automatisering av rutineoppgaver og mer komplekse IoT-systemer, inkludert løsninger for «Smart Home»-konseptet.
For meg personlig, i en alder av 43, var det et underholdende og givende eventyr å mestre det for meg ukjente Python-programmeringsspråket og et nytt operativsystem som ikke ligner på de som er utbredt i vårt land.
Jeg planla opprinnelig å presentere en Raspberry Pi 3-datamaskin, konfigurert og testet i drift, sammen med et breadboard, radiokomponenter og et sett med 16 sensorer til datteren min til bursdagen hennes, som skal brukes som en pedagogisk PC og et lovende forskningsverktøy i informatikksirkelen til den lokale gymnaset. Jeg ble enig med en informatikklærer om å gi hjelp til anskaffelse og implementering av en Raspberry Pi i informatikktimer utenom faget blant interesserte barn og olympiader. Jeg håper, i likhet med meg, Raspberry Pi vil gi datteren min og barna i gymsalen en kraftig drivkraft i deres studier og utvikling, åpne for nye muligheter for å endre seg selv og verden rundt oss til det bedre ved hjelp av moderne teknologi.

Introdusert i 1998, er HTCPCP / 1.0 hypertekst kaffemaskinkontrollprotokollen nå ufortjent glemt. For å gjenopplive ideene som er lagt inn av skaperne, implementerer vi en kaffetrakter kontrollert av en Raspberry Pi.

Mange kaffeelskere drømmer om å ha varm kaffe som venter på at de skal våkne. Drømmer ble lagt over samtaler om "smart hjem", kontrollere, sensorer, og så beordret jeg et Raspberry Pi (RPi)-brett "å spille" - generelt ble skjebnen bestemt. Hvis det i 1998 virkelig så morsomt ut å administrere en kaffetrakter via nettet, er det i dag fullt mulig å gjøre det selv. Med samme leketøy som RPi blir gleden dobbel. På bakgrunn av dens bakgrunn ser det ut til at Arduino Mega 2560, som samler støv i en boks, ved et uhell har falt inn i fremtiden fra verden av 8-bits prosessorer på 80-90-tallet som en sjeldenhet, som av en eller annen grunn skjermer Wi-Fi for. og sensorer er skrudd.

Men tilbake til kjøkkenet for kaffe. Vi slår på kaffetrakteren ved hjelp av et relé, reléet styres fra RPi, tilgang til RPi fra nettleseren via Wi-Fi. Våkn opp rett fra sengen ved å bruke nettleseren på telefonen. Og vi ser hvordan det brygges gjennom et webkamera. Eller vi oppdager bevegelse, og kaffen begynner å brygge i det øyeblikket vi kommer inn på kjøkkenet eller slår på lyset. En ekte geek kan slå på kaffetrakteren fra sengen via SSH, en ekte lat person kan ganske enkelt gå inn på kjøkkenet, en enkel bruker som meg kan bruke en nettleser.

VALG AV KAFFE

Det kreves lite av kaffetrakteren. Type - drypp: og prisen er mye mindre, og kaffe, for min smak, er mykere enn espresso. Og viktigst av alt - et minimum av elektronikk. Alle kontroller bør bestå av én mekanisk bryter slik at du kan slå på kaffetrakteren ved å sette den på strøm. Hjemme er en kaffetrakter med stort volum ubrukelig, høy effekt er heller ikke nødvendig: lavere strøm - mindre krav til kontrollkomponentene. Selv om det er umulig å fullautomatisere bryggeprosessen i kaffetraktere av denne typen, og du må fylle den med vann og malt kaffe hver kveld.

Valget av kaffetraktere med lite volum og kraft er ikke stort, de fleste av forslagene er større enn en liter, men nesten umiddelbart likte jeg Moulinex BCA 1.L1 Little Solea. Effekt 640 W, kaffekanne 0,6 l.

Vri det hele sammen

I den første revisjonen av RPi-kort er det mislykkede sikringer (fig. 2), på grunn av at nesten alle USB-tilbehør må kobles til via en USB-hub med ekstra mat... I senere revisjoner ble dette problemet løst, men på grunn av at strømforsyningen ikke er høy, kan det fortsatt være behov for en USB-hub.

De to skjermene jeg testet hadde svarte kanter rundt kantene på skjermen med standardinnstillingene. Dette er korrigert av, i mitt tilfelle ble det løst ved å slå det av i konfigurasjonsmenyen.

Operativsystem

Hovedoperativsystemet for øyeblikket er Raspbian, basert på Debian, med støtte for en flytende punkt-koprosessor. På nedlastingssiden kan du laste ned ikke bare det (krever Raspbian "wheezy"), men flere andre også basert på Linux, sammen med nødvendige verktøy.

Bildet av kortet må lastes ned til en disk, pakkes ut, og hvis alt gjøres under Windows, må det lastes opp ved hjelp av Win32DiskImager-verktøyet (lenken er på nedlastingssiden) til et SD-kort, hvis størrelse må være minst 2 GB. Ikke alle SD-kort vil fungere - det er en liste over kompatible kort og annet utstyr, men selv bruk av kort fra denne listen garanterer ikke at et bestemt kort ikke er falskt. Hvis RPi ikke starter opp fra bildet som nettopp er lastet opp til kortet, er det første du må prøve å bytte SD-kortet.

Etter å ha installert SD-kortet i RPi, slått det på og startet opp (standard brukernavn er pi, passordet er bringebær), vises den første konfigurasjonsmenyen, der det er nødvendig å utvide filsystem med 2 GB bilde på hele SD-kortet og aktiver SSH. I tillegg er det verdt å angi tastaturoppsett, språk, tidssone og endre standardpassordet.

Det er bedre å eksperimentere med overklokking separat, umiddelbart etter at du har endret det, sjekk stabiliteten til RPi. Men det er verdt å prøve det, da økningen i arbeidshastigheten er merkbar visuelt. Du kan alltid gå tilbake til konfigurasjonsmenyen med kommandoen:

$ sudo raspi-config

Etter å ha fullført det første oppsettet, start på nytt:

$ sudo omstart

Neste steg er å oppdatere pakkene – utviklingen for RPi er veldig aktiv, og store oppdateringer slippes veldig ofte.

$ sudo apt-get update $ sudo apt-get upgrade

Ethernet og Wi-Fi oppsett

D-Link DWA-140 B2 Wi-Fi-kortet jeg hadde var på listen over kompatibelt utstyr. Jeg koblet til, sjekket at den ble identifisert:

$ lsusb<..>Buss 001 Enhet 006: ID 07d1: 3c0a D-Link System DWA-140 RangeBooster N Adapter (rev. B2) $ iwconfig lono trådløse utvidelser. eth0 ingen trådløse utvidelser. wlan0 IEEE 802.11bgn ESSID: av / hvilken som helst Modus: Administrert tilgangspunkt: Ikke-tilknyttet Tx-Power = 20 dBm Prøv lang grense på nytt: 7 RTS thr: av Fragment thr: av Strømstyring: på

Wi-Fi kan konfigureres i henhold til dokumentasjonen.

SSH og VNC

Å starte en SSH-server er tillatt i den innledende konfigurasjonsmenyen. For tilgang fra en Windows-maskin kan du bruke Putty, fra en Android-telefon - Irssi ConnectBot. Men her allerede smaken og fargen ...

Hvis SSH ikke er nok og du trenger tilgang til RPi-skrivebordet (for eksempel for å se bildene tatt av Motion uten å kopiere dem til din lokale maskin), kan du få det gjennom vncviewer fra TightVNC, og for tilgang fra Android ved å bruke androidVNC. For å gjøre dette, må du installere VNC ved å bruke bit.ly og bit.ly-retningslinjene.

WEKKAMERA OG BEVEGELSE

Logitech HD Webcam C525 brukes som webkamera i min versjon. Når du kjøper et nytt webkamera, er det verdt å sjekke listen over RPI-kompatibelt utstyr, noe kan kreve en drevet USB-hub. Det er også verdt å sjekke ut Motion-kompatibilitet under koblingene Working Devices og Non Working Devices. Hvis kameraet ikke er på "Arbeidsenheter"-listen, betyr det ikke at det ikke vil fungere, men det er definitivt ikke verdt å kjøpe et kamera fra den andre listen.

$ lsusb<..>Buss 001 Enhet 007: ID 046d: 0826 Logitech, Inc.

Du kan sjekke kameraet ved å prøve å ta et skjermbilde fra kameraet:

$ sudo apt-get install uvccapture $ uvccapture -S80 -B80 -C80 -G80 -x800 -y600

Snap.jpg-filen skal vises i gjeldende katalog (selv om det var feilmeldinger), som kan åpnes på RPi med ved hjelp av bilde Seer. Motion er en applikasjon for å overvåke et signal fra et kamera, som lar deg fastslå at en betydelig del av bildet har endret seg (det vil si for å bestemme bevegelsen i rammen), og i dette tilfellet lagre bildene og kjøre eksternt programmer. Prosjektets hjemmeside.

$ sudo apt-get install motion

Slik aktiverer du automatisk avspilling av bevegelse:

$ sudo nano / etc / default / motion # satt til "yes" for å aktivere motion daemon start_motion_daemon = yes

Tillat tilgang til Motion-nettgrensesnittet fra eksterne verter:

$ sudo nano /etc/motion/motion.conf webcam_localhost av control_localhost av

Denne filen lagrer også innstillingene for bevegelsesdeteksjon, starten og slutten av opptak fra kameraet, og starten på et eksternt program når bevegelse oppdages.

$ sudo nano /etc/motion/motion.conf # Kommando som skal utføres når en bevegelsesramme oppdages (standard: ingen) on_event_start sudo / home / pi / motion-det

/ home / pi / motion-det - skript som vil bli utført når bevegelse oppdages. Han vil trenge rotrettigheterå administrere havner. Legg til brukerbevegelse (bevegelse) til sudoers-listen:

$ sudo visudo

ved å legge til følgende linje på slutten av filen:

Motion ALL = (ALL) NOPASSWD: ALL

Start med informasjonsutgang til konsollen:

$ sudo bevegelse -n

Når Motion kjører, kan innstillingene endres fra nettleseren på: //: 8080

Den faktiske IP-adressen til RPi må erstattes. Du kan se bildet fra kameraet på //: 8081

V Firefox oppdatering bildene fungerer kanskje ikke som de skal. Alt er OK i Chrome. Nettlesere som er forhåndsinstallert på RPi kan ikke vise det i det hele tatt. En konfigurasjonsmodus er gitt for å sette opp bevegelsesdeteksjon.

$ sudo bevegelse -s

I denne modusen, når du ser på kamerabildet, vil selve bevegelsesdeteksjonen vises i forskjellige farger, og det vil være mulig å justere deteksjonsparametrene på innstillingssiden.

Bilder fra kameraet lagres i katalogen / tmp / motion, standardformatet for individuelle bilder er jpg, for klipp - swf. Formatet kan endres i konfigurasjonsfil... Og du kan deaktivere lagring av filer som dette:

Output_normal off ffmpeg_cap_new off

GPIO-PORTER - FUNKSJONER OG KONTROLLER

RPi har innebygde I/O-porter. De kalles GPIO, General Purpose Input / Output, det vil si I/O-porter generelt formål... Strengt tatt er det mulig å koble en executive-enhet til en enkel PC uten problemer, men ikke ha en PC på kjøkkenet? Derfor er den rimelige og miniatyr RPi bra - den kan enkelt plasseres ved siden av den utøvende enheten.

GPIO-porter opererer på 3,3 V-nivåer. Imidlertid gir RPi ikke portbeskyttelse, og en utilsiktet 5V-kortslutning på dem kan være dødelig.

Porter pinout og eksempler på tilgang til dem fra forskjellige språk programmering er gitt her: bit.ly/StAJXA.

Det er to hovedversjoner av brettene, revisjon 1 og 2, med litt forskjellige kablings- og porttilordninger. For å finne ut hvilken versjon, må du skrive inn kommandoen cat / proc / cpuinfo og finne maskinvareversjonskoden i tabellen: Det er mer informasjon om forskjellene mellom revisjon 1 og 2.

Strøm +5 V og 3,3 V, jord (GND) og GPIO 4-porten, som vi skal bruke videre, er plassert på samme pinner i begge versjonene. RPi-utviklere har gjentatte ganger lagt merke til faren ved å brenne en port eller hele RPi hvis porten ikke er riktig tilkoblet. For å forhindre at dette skjer, anbefales det å beskytte porten mot feilhandlinger. Havnesikringsordninger (og i tillegg eksempler på tilkobling av ulike periferiutstyr) kan sees.

Havnetilgang

Den enkleste måten å kontrollere porten på er fra kommandolinjen. I dette tilfellet kan tilstanden til porten kontrolleres med et voltmeter. Alle handlinger gjøres under roten.

$ sudo -i

Komme i gang med porten:

$ echo "4"> / sys / class / gpio / eksport

Driftsmodus - utgang:

$ echo "out">

Utdataverdier:

$ echo "1"> / sys / class / gpio / gpio4 / verdi $ echo "0"> / sys / class / gpio / gpio4 / verdi

Driftsmodus - inngang:

$ echo "in"> / sys / klasse / gpio / gpio4 / retning

$ cat / sys / class / gpio / gpio4 / verdi

Fullfør arbeidet med porten:

$ echo "4"> / sys / class / gpio / unexport

La oss forberede et skript for å kontrollere den angitte porten, som vi vil bruke senere:

$ sudo nano switch_gpio

#! / bin / bash PORT_NUM = $ 1 hvis [$ 2. == "på." ]; deretter NEW_VALUE = 1 annet hvis [$ 2. == "av." ]; deretter NEW_VALUE = 0 ellers ekko "Bruk: $ 0 PORT_NUM på | av" exit fi fi # Konfigurer GPIO-porten til å sende ut hvis [! -e / sys / class / gpio / gpio $ PORT_NUM] deretter ekko $ PORT_NUM> / sys / class / gpio / eksport fi # Les gammel tilstand OLD_VALUE = $ (cat / sys / class / gpio / gpio $ PORT_NUM / verdi) hvis [$ OLD_VALUE == 1]; deretter OLD_VALUE_TEXT = "på" ellers OLD_VALUE_TEXT = "av" fi ekko "ut"> / sys / klasse / gpio / gpio $ PORT_NUM / retningsekko -ne "Skifter GPIO" $ PORT_NUM "fra" $ OLD_VALUE_TEXT "til" $ 2 " .. "ekko $ NEW_VALUE> / sys / klasse / gpio / gpio $ PORT_NUM / verdi ekko" ferdig. "

Fremføringsrettigheter:

$ chmod + x switch_gpio

Og sjekk:

$ switch_gpio 4 på $ switch_gpio 4 av

RELÉMODUL

Reléforbindelsen implementeres i henhold til skjemaet fra denne artikkelen. I normal posisjon, når utgangen fra GPIO-porten er logisk null og null potensial, er transistoren av og ingen spenning påføres belastningen. Hvis en logisk enhet påføres GPIO, vil 3,3 V gjennom motstanden åpne transistoren, strøm vil flyte gjennom den og reléet vil fungere. Dioden er designet for å fjerne negative overspenninger når reléet er frakoblet.

Et annet relé (på det litt senere) og en transistor med en diode er involvert - de som var for hånden, nærme egenskaper. Motstand R1 (1 kOhm), diode type KD522 (1N4148), transistor H547. Artikkelen inneholder anbefalinger om hvordan du velger analoger. I tillegg er det verdt å sjekke utgangsstrømmen til porten når reléet er på.

Belastningen koblet til kretsen er 640 W. Dette betyr at ved en spenning på 220 V vil strømmen være 640 W / 220 V = 2,9 A. Et annet krav til reléet er at to ledninger lukkes og åpnes på en gang og belastningen er helt spenningsløs. Et alternativ som passer for disse kravene er TRIL-5VDC-SD-2CM-R-reléet, kontrollert fra 5 V og i stand til å bytte opptil 8 A AC 250 V.

Du kan starte installasjonen på kontakten brødbrett... Selvfølgelig er det ikke egnet for seriøse oppgaver, men slike små ordninger på det kan raskt settes sammen og feilsøkes. Først driver vi den fra en separat +5 V-kilde, kontrollerer alt uten å koble til RPi, erstatter tilkoblingen til porten med en motstand og en +5 V-knapp, måler alle strømmene og installer en kontakt for å koble til RPi hovedkort. Det er kategorisk umulig å koble 220 V til et slikt brett, så du må fortsatt ta et loddebolt i hendene og overføre det til et kretskort.

For å koble til hovedkortet RPi, kan du sette sammen en sløyfe fra et par kontakter og en flat kabel, koble til det et mellomkort, der de nødvendige portene og strømmen til løkkene allerede er rutet til perifere enheter, inntil bare en , ikke 26-leder, men 4-leder plum. Den er koblet til et kretskort, hvor nøyaktig det samme er satt sammen som i den første versjonen, ved å legge til rekkeklemmer for 220 V. Vi lodder rekkeklemmene på reléet med en ledning med et tverrsnitt på 0,75, kontroller nøye kretsens ytelse med en tester ved å klikke på reléet. I tillegg kan du fortynne bakken. Deretter kobler vi ledningene til terminalene, også med et tverrsnitt på 0,75, hvorav den ene er plassert en plugg, på den andre - en stikkontakt på ledningen.


Så forsiktig og forsiktig: 220 V, 50 Hz er en spenning, med uforsiktig arbeid som konsekvensene kan bli mye mer tragiske enn en utbrent RPi. Vi kontrollerer visuelt loddingen på relékortet, kontrollerer påliteligheten av å feste 220 V-ledningene til terminalblokkene. Vi fikser brettet, eller rettere sagt installerer det i et lukket etui for ikke å røre ved et uhell åpne kontakter energisert. Vi tar oss god tid og sjekker konsekvent med en tester ved hvert trinn. Koble relékortet fra RPi-hovedkortet, plugg inn 220V-pluggen Ingen røyk. Koble fra strømnettet, koble til RPi-hovedkortet, slå det på igjen ved 220. Det er ingen røyk igjen, RPi er i live. Vi klikker på reléet, vi ser 220 på uttaket. Vi slår av reléet og 220, kobler bordlampen til stikkontakten, leverer 220, klikker på reléet. Hurra!


Ris. 5. Den andre versjonen av relémodulen, loddet på det trykte brødbrettet
med mellomliggende breakout board

Vi trekker pusten og har installert relébrettet i saken på permanent basis, vi prøver den allerede i den endelige versjonen, med en kaffetrakter som lass.

HAVNESTYRING VIA WEBIOPI

Den enkleste måten å nå GPIO-porter over nettet er å installere WebIOPi. Dette er en applikasjon som lar deg visuelt angi retningen til porten (I / O), se dens tilstand ved inngang og angi verdien ved utgangen.

Installasjonen er beskrevet i detalj.

$ sudo apt-get install apache2 php5

For å fungere bruker WebIOPi omskrivingsmodulen og konfigurasjonsoverstyring (.htaccess):

$ sudo a2enmod omskriv $ sudo nano / etc / apache2 / sites-enabled / 000-default

I kapittel endre linjen "AllowOverride None" til "AllowOverride All":

Alternativer Indekser FølgSymLinks MultiViews AllowOverride All Bestill tillat, nekt tillat fra alle

Legg til Apache-bruker (www-data) til sudoers-listen:

$ sudo visudo

Ved å legge til følgende linje på slutten av filen:

Www-data ALLE = (ALLE) NOPASSWD: ALLE

Start Apache på nytt:

$ sudo /etc/init.d/apache2 start på nytt

$ wget //webiopi.googlecode.com/files/WebIOPi-0.3.tar.gz $ tar xvzf WebIOPi-0.3.tar.gz

Flytt filer til riktig katalog:

$ sudo mv webiopi / var / www

Hovedgrensesnittet er tilgjengelig på: // localhost / webiopi.

Hvis du åpner en side direkte fra RPi, så må du gjøre dette i Chromium eller Midori, verken NetSurf eller Dillo, det fungerer ikke på grunn av mangel på JavaScript-støtte i dem.

VI LINKER ALT SAMMEN

For å kontrollere porten fra en nettleser via nettet, er WebIOPi-nettgrensesnittet ganske nok; hvis du ønsker det, kan du tilpasse det til dine behov. For å slå på releet når bevegelse oppdages, legg til starten av bevegelse på et spesifisert tidspunkt om morgenen, for eksempel kl. 8:00, i / etc / crontab:

0 8 * * * echo $ (dato) ":" $ (service motion start) >> /var/log/motion_start.log

Crontab / etc / crontab

La oss lage et skript som kjører fra Motion:

$ nano / home / pi / motion_det

#! / bin / bash / home / pi / switch_gpio 4 på service motion stop sleep 1800 / home / pi / switch_gpio 4 av

Fremføringsrettigheter:

Chmod + x / home / pi / motion_det

Nå klokken åtte om morgenen vil Motion bli lansert, som vil begynne å oppdage bevegelse. Når bevegelse oppdages, vil motion_det-skriptet kjøre, som vil gi en logisk enhet til GPIO 4-porten, tilføre spenning til reléet og slå på kaffetrakteren, stoppe Motion, vente 30 minutter og sende en logisk null til samme port. , koble fra lasten.

KONKLUSJON

De fleste komponentene ble kjøpt fra Chip & Dip (inkludert etuier, kabelgjennomføringer, kort, adaptere og så videre). Dette er en butikk med et godt valg, hvor du kan gå, se og ta på, men ikke billig, det er en merkbart mer budsjettmessig. De som ikke vil vente lenge på RPi-levering, kan allerede kjøpe det, for eksempel på Terraelectronica, men ikke i det hele tatt for $ 25.

For ikke å forstyrre mørket på vintermorgen, i stedet for et kamera (eller i tillegg til det), kan du koble til en IR-bevegelsessensor. Du kan finne ut hvordan du bruker en automatisk brygget espressomaskin og ikke trenger å bekymre deg for å legge til kaffe neste morgen om kvelden. Du kan koble til et relé via ZygBee, legge til andre utøvende enheter, for eksempel en lampe på soverommet. Du kan implementere kontroll via SMS ved å koble til et 3G-modem, eller med vanlig telefon via DTMF ved å heve Asterisk eller Freeswitch. Og du kan skrive en applikasjon for Android og iPhone / iPad.

Det er mange alternativer, og med bruken av RPi har muligheten til å eksperimentere på grensen mellom programmering og den fysiske verden utvidet seg dramatisk. Ja, og, selvfølgelig, neste 1. april, må du tenke på full støtte for RFC 2324-standarden.

I dag skal vi lære å styre på og av relé ved bruk av bringebær pi 2, for eksempel vil vi slå kontakten av og på, å styre lampe eller andre elektriske apparater. jeg brukte relé SRD-05VDC-SL-C.
1) Vi kobler sammen ham til bringebær pi og til 220V-linjen. Jeg koblet bare til ett relé, men jeg har to på brettet.

Jeg vil overføre bildet av GPIO-kontaktene til Raspberry pi 2 her

GPIO raspberry pi 2

På bildet nedenfor koblingsskjema for reléet til raspberry pi 2 og 220 V-linjen.

Diagram for tilkobling av et relé til en raspberry pi 2 og en 220 V linje
(bildet er klikkbart)

La meg forklare det igjen.
Relékretsen er koblet på den ene siden med GPIO bringebærporter pi 2, og på den andre med 220 V-kontakt. Det er 4 pinner på relékortet - GND, IN1, IN2, VCC.
a) GND på reléet må kobles til GND på raspberry pi.
b) IN1 og IN2 er bare to releer. Jeg koblet IN1 til GPIO17 (pinne 11), og IN2 til GPIO25 (pinne 22). De er bare gratis, du kan ha gratis andre GPIO-kontakter.
c) koble 5v til VCC-pinnen på reléet på raspberry pi 2. Jeg bestemte meg for å bruke pin #2 på bringebæret.
Det er også tre kontakter på brettet nær hver stafett. Fra 220V-linjen tok jeg en ledning til NO1-kontakten på relé 1. Jeg kobler COM1-kontakten på relé 1 til en av stikkontaktene. Jeg mater umiddelbart 220 V til den andre kontakten til stikkontakten, det vil si at den går direkte, og omgår reléet og bringebæret. Hvis du kobler ikke til NO1, men til NC1, så vil strømmen tilføres konstant, uttaket vil levere strøm selv uten bringebær, så jeg bruker rett og slett ikke NC1.
Med en fysisk tilknytning synes jeg det er klart. Vær forsiktig. Du gjør alt på egen risiko og risiko.

La oss gå videre til programvaredelen.
2) vi skriver 2 enkleste skript:
sudo nano /script/gpio/relay01-01-down.sh

#! / bin / bash

echo 17> / sys / class / gpio / eksport
ekko ut>
echo 1> / sys / class / gpio / gpio17 / verdi

og det andre manuset:
sudo nano /script/gpio/relay01-01-up.sh
innholdet skal være slik:
#! / bin / bash

echo 17> / sys / class / gpio / eksport
ekko ut> / sys / klasse / gpio / gpio17 / retning
echo 0> / sys / class / gpio / gpio17 / verdi

3) gjør dem kjørbare:
sudo chmod + x /script/gpio/relay01-01-down.sh
sudo chmod + x /script/gpio/relay01-01-up.sh

Generelt kan du allerede leke ved å koble lampen til stikkontakten, kjøre hvert skript ett etter ett, det vil slå på lampen og deretter slå den av
sudo /script/gpio/relay01-01-up.sh
sudo /script/gpio/relay01-01-down.sh

4) Men det er mer interessant å lage relékontrollknappene i webgrensesnittet. Nettserveren har allerede blitt hevet, så i roten (som standard er dette / var / www / katalogen), skriv koden med knapper til index.php-filen. Du kan kode.
På samme sted, ved roten av webserveren, oppretter du en style.css-fil med innholdet du kan.

Vi går til webserveren http: // ip-address-raspberru-pi / og du skal se to knapper (de fungerer ikke ennå).

5) legg til tillatelser for www-data som følger:
sudo visudo
legg til der:
www-data ALLE = (ALLE) NOPASSWD: ALLE

6) prøver å trykke på knapper i nettgrensesnittet. De skal allerede jobbe og klikke på hjulet.
Byggeresultat:

I denne artikkelen skal vi se på å kontrollere I/O (GPIO) til Raspberry Pi-mikrodatamaskinen via nettgrensesnittet. Dette gjør det mulig å kontrollere ulike enheter via Internett.

Funksjoner ved dette prosjektet:

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

- bruk MySQL-databaser data for lagring av GPIO-tilstand

- ved å bruke Apache2 webserver for å kontrollere GPIO gjennom nettleseren

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

Apache webserver

MySQL-server

- phpMyAdmin (det er en russisk versjon)

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

Full root-tilgang

For å få full root-tilgang, må du skrive inn kommandoen i terminalen sudo -i som bringer brukeren til økten 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 for root-brukeren, dette gjøres med 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 alle handlinger med MySQL gjøres fra phpMyAdmin-skallet.

Last ned prosjektfiler

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