Slim huisbesturingssysteem op basis van Raspberry Pi. Toegang op afstand tot sensoren met behulp van Raspberry Pi en WebIOPi Framework

Voorwoord

Het onderwerp is onuitputtelijk en deze notitie is geen leidraad voor actie, maar een poging om niet te vergeten wat ik al heb geprobeerd.

Van de drie Raspberry Pi computeropties A, B en B+ heb ik met de laatste twee kennis kunnen maken. Model B is sinds februari 2012 te koop, en B+ sinds juli 2014. Qua camerabediening zijn er geen verschillen tussen deze modellen. Ze zijn uitgerust met een ARM11 Broadcom BCM2835-processor geklokt op 700 MHz en een module RAM 512 MB.

Verschillen in het aantal USB-poorten en in de locatie en het type connectoren. Model B heeft aparte audio- en video-ingangen en een slot voor SD-kaarten, en D+ heeft een gecombineerde connector voor audio en video, zoals op veel camera's, en een slot voor micro SD-geheugenkaarten. Er bestaat alleen een vorm van bescherming en stroomstabilisatie als er 5 V wordt geleverd aan de micro-USB-connector, en dit onderdeel is in deze modellen anders geïmplementeerd. Als u de GPIO-connector van stroom voorziet, moet u zelf voor de kwaliteit van de stroom zorgen. Succes Arduino-project heeft bewezen dat voor veel taken productiviteit geen geluk is en dat het noodzakelijk is om computers te gebruiken met de productiviteit die nodig is om de taak op te lossen. Uit schattingen blijkt dat de prestaties van de centrale processor van de Raspberry Pi vergelijkbaar zijn met die van de 300 MHz Pentium II uit 1997. De 250 MHz Broadcom VideoCore IV GPU is echter helemaal uit de 21e eeuw en biedt 1080p video-uitvoer met 30 frames per seconde en hardwaredecodering van H.264, MPEG-4 AVC.

Raspberry Pi-computers modellen B en B+ (links)

Model B in een eigen koffer.

Hoewel de behuizing sleuven heeft voor een kabel die naar de camera leidt, heeft deze weinig nut bij het maken van opname-opstellingen. De behuizing voor de camera en computer moet in overeenstemming met de taak worden gemaakt. Bijvoorbeeld voor een buitencamera met ruime batterijen en met een lange batterijduur heb ik het volgende ontwerp gemaakt.

De naamloze 802:11n-adapter werkte out-of-the-box, maar bleef het netwerk verliezen. We kochten twee uiterlijk verschillende adapters van verschillende merken, maar bij nader onderzoek bleken ze op dezelfde chip te zitten: REALTEK RTL8188ETV. Het bouwen van stuurprogramma's uit de bron produceerde niet-functionele stuurprogramma's voor de Raspberry Pi. Er werden echter al gecompileerde binaire bestanden gevonden op het netwerk op de site www.fars-robotics.net / en daarmee werkte alles stabiel. Dit pad heeft echter een doodsvijand: sudo apt-get-upgrade. De volgende systeemupdate, die ook gevolgen had voor de camera en dus gerechtvaardigd was, zorgde ervoor dat de adapters niet meer werkten en verschenen niet op de bovengenoemde updatesite.

Uit een zoekopdracht bleek dat ik niet de eerste ben die een update uitvoert, en er is al een oplossing gevonden en er zijn zelfs driver-binaire bestanden voor de nieuwste versie gepost.

De USB-Bluetooth-adapter (eerst op de foto) kan worden gebruikt om de camera te bedienen, maar de verbinding moet tot stand worden gebracht voordat het programma wordt gestart, en daarom bleek het handiger om de com-Bluetooth-adapter te gebruiken, aangezien de seriële poort is van en in Afrika de seriële poort en ongeacht of het programma is aangesloten, zal het niet zweren. Om apparaten te koppelen is in dit geval niets van het besturingssysteem vereist; er wordt stroom aan de adapter geleverd, waarna er een verbinding mee tot stand kan worden gebracht. Door een digitale IR-signaalontvanger (bijvoorbeeld TSOP1736) op GPIO aan te sluiten, kunt u de resultaten van het LIRC-project gebruiken om de camerabediening vanaf de afstandsbediening te organiseren.

afstandsbediening

Op de onderstaande foto is de fotodetector in een uitbreidingskaart geplaatst, die in dit geval alleen nodig is voor eenvoudige aansluiting.

Er zijn veel besturingssystemen voor het gebruik van een computer. Zo kon ik Slackware ARM zonder problemen installeren, maar het bleek een gigantisch basissysteem dat nog aangepast moest worden om met de camera te kunnen werken. Daarom heb ik, ondanks al mijn liefde voor deze distributie, gekozen voor het meest wijdverspreide en bijgevolg het meest aangepaste en gedocumenteerde systeem: Raspbian (Debian Wheezy). Het ondersteunt de camera standaard, maar wanneer u hem voor de eerste keer inschakelt, moet u er toegang toe verlenen door sudo raspi-config aan te roepen. Het besturingssysteem wordt geïnstalleerd door de opdracht dd naar een geheugenkaart te kopiëren, en hier merk ik op dat het systeem erg kieskeurig bleek te zijn over kaarten. Mijn poging om oude 4 GB-kaarten te gebruiken eindigde in de meeste gevallen op een mislukking: de opname werd niet gemaakt of het systeem startte niet met deze kaarten. bronnen bevinden zich naar mijn mening op elinux.org/RPi_Hub. En dienovereenkomstig een sectie gewijd aan de camera: elinux.org/Rpi_Camera_Module.

Vanuit het oogpunt van het bouwen van je eigen systemen die verschillen van commercieel geproduceerde systemen, gaat de grootste belangstelling uit naar de enorme mogelijkheden van afstandsbediening van de camera. Dit en bedraad netwerk, en Wi-Fi, en Bluetooth, en IR-afstandsbediening, en digitale ingangen waarmee u zowel de eenvoudigste knoppen kunt pollen als de gegevensoverdracht kunt organiseren via een verscheidenheid aan seriële protocollen.

U kunt verbinding maken met het netwerk via een twisted-pair-kabel via Ethernet of via Wi-Fi. U kunt verbinding maken met de router, of rechtstreeks. Wanneer we rechtstreeks verbinding maken via Wi-Fi, veranderen we de telefoon in een router, en in het geval van Ethernet, als het netwerk niet vooraf is geconfigureerd, kunt u het IP-adres van de lokale computer instellen en het netwerk instellen met de opdracht:

Bash-4.2# ifconfig eth0 192.168.0.214 omhoog

En schakel het uit met het commando:

Bash-4.2# ifconfig eth0 uitgeschakeld

In het geval van een netwerkverbinding is de eenvoudigste manier om toegang te krijgen tot de Raspberry Pi en dienovereenkomstig de camera, het commando op de commandoregel te typen: ssh -l pi 192.168.0.198 waarbij 192.168.0.198 het Raspberry Pi-adres is en in te voeren het frambozenwachtwoord

Bash-4.1$ ssh -l pi 192.168.0.198 [e-mailadres beveiligd]"s wachtwoord: Linux raspberrypi 3.12.22+ #691 PREEMPT wo 18 juni 18:29:58 BST 2014 armv6l Laatste login: za 27 september 16:49:37 2014 vanaf 192.168.0.215 pi@raspberrypi ~ $

Een permanent IP-adres kan worden toegewezen door het bestand etc/network/interfaces te bewerken, ongeveer als volgt. Die. geef commentaar op de regel met DHCP en voeg instellingen toe die overeenkomen met uw lokale netwerk.

Auto lo iface lo inet loopback #iface eth0 inet dhcp iface eth0 inet statisch adres 192.168.0.199 netmasker 255.255.255.0 netwerk 192.168.0.0 uitzending 192.168.0.255 gateway 192.168.0.1 allow-hotplug wlan0 iface wlan0 inet handmatig wpa -roam / etc/wpa_supplicant /wpa_supplicant.conf #iface standaard inet dhcp iface standaard inet statisch adres 192.168.0.198 netmasker 255.255.255.0 netwerk 192.168.0.0 uitzending 192.168.0.255 gateway 192.168.0.1

U moet een soort SSH-client op uw Android-telefoon installeren. Ik heb . Dit algemene oplossing qua stijl en mogelijkheden vergelijkbaar met werken vanaf een grote computer. Er zijn ook veel programma's die speciaal zijn ontworpen voor het werken met Raspberry Pi. Ik heb geprobeerd met en te werken. Hoewel de eerste al presets heeft voor het werken met de camera, geef ik de voorkeur aan de mogelijkheid om te componeren eigen lijst

Nu hebben we de mogelijkheid om rechtstreeks toegang te krijgen tot de camera en deze bijvoorbeeld foto's te laten maken als we op Enter drukken:

Pi@raspberrypi ~ $ raspistill -o foto%03d.jpg -k -v -t 999999
raspistill Camera App v1.3.6 Breedte 2592, Hoogte 1944, kwaliteit 85, bestandsnaam foto%03d.jpg Tijdsvertraging 999999, Raw nee Miniatuur ingeschakeld Ja, breedte 64, hoogte 48, kwaliteit 35 Link naar nieuwste frame ingeschakeld nee Voorbeeld met volledige resolutie Nee Vastleggen methode: Vastleggen bij toetsaanslag Voorbeeld Ja, Volledig scherm Ja Voorbeeldvenster 0,0,1024,768 Dekking 255 Scherpte 0, Contrast 0, Helderheid 50 Verzadiging 0, ISO 0, Videostabilisatie Nee, Belichtingscompensatie 0 Belichtingsmodus "auto", AWB-modus "auto", Beeldeffect "geen" Meetmodus "gemiddeld", kleureffect ingeschakeld Nee met U = 128, V = 128 Rotatie 0, hflip Nee, vflip Nee ROI x 0,000000, y 0,000000, w 1,000000 uur 1,000000 Cameracomponent voltooid Encodercomponent voltooid Startcomponentverbindingsfase Cameravoorbeeld aansluiten poort naar videoweergave. De poort van camerafoto's aansluiten op de ingangspoort van de encoder. Druk op Enter om vast te leggen, X en vervolgens op ENTER om af te sluiten

Het raspistill-programma biedt toegang tot vrijwel alle cameramogelijkheden.

Opdrachten voor afbeeldingsparameters -?, --help: Deze helpinformatie -w, --width: Stel de afbeeldingsbreedte in -h, --height: Stel de afbeeldingshoogte in -q, --quality: Stel de jpeg-kwaliteit in<0 to 100>-r, --raw: onbewerkte Bayer-gegevens toevoegen aan jpeg-metagegevens -o, --output: uitvoerbestandsnaam (om naar stdout te schrijven, gebruik "-o -"). Indien niet gespecificeerd, wordt er geen bestand opgeslagen -l, --latest: Koppel de laatste volledige afbeelding aan de bestandsnaam -v, --verbose: Voer uitgebreide informatie uit tijdens run -t, --timeout: Tijd (in ms) voordat de foto wordt gemaakt en wordt afgesloten (indien niet gespecificeerd, ingesteld op 5s) -th, --thumb: Miniatuurparameters instellen ( x:y:quality) of geen -d, --demo: Voer een demomodus uit (door een reeks camera-opties bladeren, geen opname) -e, --encoding: Codering om te gebruiken voor uitvoerbestand (jpg, bmp, gif, png) -x, --exif: EXIF-tag die moet worden toegepast op opnames (formaat als "sleutel=waarde") of geen -tl, --timelapse: Timelapse-modus. Maakt elke keer een foto ms -fp, --fullpreview: Voer de preview uit met de resolutie voor stilstaande beelden (kan de preview-fps verminderen) -k, --keypress: Wacht tussen de opnames op ENTER, X en dan ENTER om af te sluiten -s, --signal: Wacht tussen opnames voor een SIGUSR1 uit een ander proces -g, --gl: teken een voorbeeld naar textuur in plaats van de video-rendercomponent te gebruiken -gc, --glcapture: leg de GL-framebuffer vast in plaats van het camerabeeld Voorbeeldparameteropdrachten -p, -- preview: Voorbeeldvensterinstellingen<"x,y,w,h">-f, --fullscreen: voorbeeldmodus op volledig scherm -op, --opacity: dekking van voorbeeldvenster (0-255) -n, --nopreview: geen voorbeeldvenster weergeven Afbeeldingsparameteropdrachten -sh, --sharpness: afbeelding instellen scherpte (-100 tot 100) -co, --contrast: beeldcontrast instellen (-100 tot 100) -br, --brightness: beeldhelderheid instellen (0 tot 100) -sa, --saturation: beeldverzadiging instellen (- 100 tot 100) -ISO, --ISO: Vastleg-ISO instellen -vs, --vstab: Videostabilisatie inschakelen -ev, --ev: EV-compensatie instellen -ex, --exposure: Belichtingsmodus instellen (zie opmerkingen) - awb, --awb: AWB-modus instellen (zie opmerkingen) -ifx, --imxfx: Beeldeffect instellen (zie opmerkingen) -cfx, --colfx: Kleureffect instellen (U:V) -mm, --metering: instellen meetmodus (zie opmerkingen) -rot, --rotation: beeldrotatie instellen (0-359) -hf, --hflip: horizontale spiegeling instellen -vf, --vflip: verticale spiegeling instellen -roi, --roi: regio instellen van belang (x,y,w,d als genormaliseerde coördinaten) -ss, --shutter: sluitertijd instellen in microseconden Opties voor belichtingsmodus: automatisch, nacht, nachtvoorbeeld, tegenlicht, spotlight, sport, sneeuw, strand, zeer lang, vaste fps, antishake,vuurwerk Opties voor AWB-modus: uit,auto,zon,wolk,schaduw,wolfraam,fluorescerend,gloeilamp,flitser,horizon Opties voor beeldeffectmodus: geen,negatief,solariseren,schets,denoise,reliëf,olieverf, arcering,gpen,pastel , aquarel, film, vervaging, verzadiging, kleurenwissel, vervaagd, posteriseren, kleurpunt, kleurbalans, tekenfilm Opties voor meetmodus: gemiddeld, spot, tegenlicht, matrix Voorbeeldparameteropdrachten -gs, --glscene: GL scène vierkant, theepot, spiegel, yuv ,sobel -gw, --glwin: GL-vensterinstellingen<"x,y,w,h">

Als u op een externe computer moet komen live-beeld van de camera, dan moet je het raspivid-programma gebruiken. Er zijn hier twee mogelijke opties.

De eerste gebruikt netcat. Eerst draaien we op de lokale computer:

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

En dan op de Raspberry Pi:

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

Waarbij 192.168.0.24 het IP-adres van de lokale computer is.

De tweede optie is het gebruik van VLC. Bij het schrijven van dit artikel kon ik deze prestatie niet herhalen. Ik heb de beschreven instructies gevolgd. De reden bleek de update naar versie 3.12.28+ te zijn. Opgelost door VLC opnieuw te installeren.

Uiteraard zal er sprake zijn van een vertraging, en deze zal nogal variëren afhankelijk van de instellingen van de besturingscomputer.

Om het werken met de opdrachtregel eenvoudiger te maken, kunt u een grafische interface maken. Het kan op een externe computer worden uitgevoerd, of als u VNC installeert, kunt u externe toegang tot het bureaublad krijgen en het dienovereenkomstig op de Raspberry Pi uitvoeren. Er zijn kant-en-klare oplossingen: Pi Vision en RaspiCam Remote. Een andere standaard manier om de camera te besturen is Python, waarvoor een speciale bibliotheek picamera bestaat. Voor mij is het belangrijkste de herhaalbaarheid van de resultaten, d.w.z. Allereerst heb ik de mogelijkheid nodig om de sluitertijd en gevoeligheid vanuit het programma in te stellen. Sinds kant-en-klare oplossing

Ik kwam het niet meteen tegen, dus schreef ik er zelf een. (De Pi Sight-optie beviel mij niet.) Ik ben van plan het programma in een apart artikel in meer detail te bekijken, maar voor nu, voor degenen die zich erin willen verdiepen, geef ik de broncode voor Python 2.7.3 en picamera 1.8.

Om via het netwerk toegang te krijgen tot de Raspberry Pi-mappen, typt u het volgende adres in Dolphin: [e-mailadres beveiligd] Vis://

:22/home/pi/

Om toegang te krijgen tot het bureaublad vanaf een externe computer, heb ik het geïnstalleerd op een Raspberry Pi met Raspbian OS:

Sudo apt-get install tightvncserver

Als u het klembord in de toekomst via het F8-menu met de lokale machine wilt gebruiken, installeer dan bovendien:

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

En in het bestand /home/pi/.vnc/xstartup voegen we de regel autocutsel -fork toe na de regel xsetroot -solid grey.

Schakel vncserver in:

Pi@raspberrypi ~ $ vncserver:1 -geometrie 800x480 Nieuwe "X" desktop is raspberrypi:1 Het starten van applicaties gespecificeerd in /home/pi/.vnc/xstartup Logbestand is /home/pi/.vnc/raspberrypi:1.log

Voor toegang vanaf een desktop en laptop met Slackware heb ik het tightvnc-pakket geïnstalleerd.

We starten vncviewer, voer in het venster dat verschijnt in mijn geval het adres 192.168.0.198:1 in, vervolgens het wachtwoord en we krijgen:

Nu starten we het camerabesturingsprogramma. Bij besturing vanaf een externe computer met behulp van dit programma is een voorbeeld alleen mogelijk op een monitor die rechtstreeks op de Raspberry Pi is aangesloten. Er zijn veel applicaties voor Android. Remote Ripple, VNC Viewer en DesktopVNC leken mij relatief acceptabel. Om verbinding te maken, moest ik het adres en poort 5901 instellen en bij het verbinden het wachtwoord invoeren dat voor vncserver was opgegeven. Een veelvoorkomend probleem bij deze methode van camerabesturing is muisemulatie klein scherm Het is moeilijk om comfortabel te telefoneren. Op het kleine scherm van de telefoon was voor mij misschien wel het handigst met permanente plaatsing van muisknoppen onderaan het scherm.

Als we individuele voorkeuren voor het gemak van de interface negeren, zijn er al genoeg programma's geschreven voor netwerkverbindingen om elk type opname te implementeren. Als je met een laptop werkt, kun je met tightvnc naar mijn mening redelijk comfortabel werken met een camerabesturingsprogramma dat op een Raspberry Pi draait. Als je er een livebeeld op nodig hebt, is het misschien de moeite waard om een ​​soort interface te schrijven voor de opdrachten die via SSH worden verzonden, zodat je gemakkelijk kunt schakelen tussen de streaming videomodus voor weergave en de foto-opnamemodus. In dit geval zie ik geen bijzondere voordelen in het gebruik van Python en kun je je beperken tot het aanroepen van raspistill en raspivid.

Vandaag zullen we leren beheren aan- en uitzetten relais door te gebruiken framboos pi 2, dat zullen wij bijvoorbeeld doen zet het stopcontact aan en uit, beheren lamp of ander elektrisch apparaat. Ik gebruikte relais SRD-05VDC-SL-C.
1) Verbinden hem aan frambozen pi en naar de 220V-lijn. Ik heb maar één relais aangesloten, maar ik heb er twee op het bord.

Ik zal hier een foto van de connectoren toevoegen. GPIO-framboos pi 2

GPIO framboos pi 2

In de onderstaande afbeelding relaisaansluitschema naar Raspberry Pi 2 en 220 V-lijn.

Relaisaansluitschema naar Raspberry Pi 2 en 220 V-lijn
(afbeelding klikbaar)

Laat me het nog eens uitleggen.
Volgens het relaiscircuit is het aan de ene kant verbonden met de GPIO-poorten van de Raspberry Pi 2 en aan de andere kant met een 220 V-aansluiting. Er zijn 4 pinnen op het relaisbord: GND, IN1, IN2, VCC.
a) GND op het relais moet worden aangesloten op GND op de Raspberry Pi.
b) IN1 en IN2 zijn slechts twee relais. Ik heb IN1 aangesloten op GPIO17 (pin 11) en IN2 op GPIO25 (pin 22). Ik heb ze gewoon vrij, misschien heb je nog andere GPIO-connectoren vrij.
c) sluit 5V aan op de VCC-pin op het relais op de Raspberry Pi 2. Ik besloot pin nr. 2 op de Raspberry te gebruiken.
Er zijn ook drie contacten op het bord bij elk relais. Van de 220V-lijn heb ik een draad aangesloten op contact NO1 op relais 1. Contact COM1 op relais 1 sluit ik aan op een van de stopcontactconnectoren. Ik geef onmiddellijk 220 V aan het tweede contact van het stopcontact, dat wil zeggen dat het direct gaat, waarbij ik het relais en de framboos omzeil. Als je niet op NO1 aansluit, maar op NC1, dan wordt er constant stroom geleverd, het stopcontact levert ook zonder framboos stroom, dus ik gebruik NC1 gewoon niet.
MET fysieke verbinding Ik denk dat het duidelijk is. Wees voorzichtig. Je doet alles op eigen risico en risico.

Laten we verder gaan met het softwaregedeelte.
2) schrijf 2 eenvoudige scripts:
sudo nano /script/gpio/relay01-01-down.sh

#!/bin/bash

echo 17 > /sys/class/gpio/export
echo uit >
echo 1 > /sys/class/gpio/gpio17/value

en het tweede script:
sudo nano /script/gpio/relay01-01-up.sh
de inhoud zou er zo uit moeten zien:
#!/bin/bash

echo 17 > /sys/class/gpio/export
echo uit > /sys/class/gpio/gpio17/direction
echo 0 > /sys/class/gpio/gpio17/value

3) maak ze uitvoerbaar:
sudo chmod +x /script/gpio/relay01-01-down.sh
sudo chmod +x /script/gpio/relay01-01-up.sh

Over het algemeen kun je al spelen door een lamp op het stopcontact aan te sluiten, elk script om de beurt uit te voeren, deze schakelt de lamp aan en uit
sudo /script/gpio/relay01-01-up.sh
sudo /script/gpio/relay01-01-down.sh

4) Maar het is interessanter om relaisbedieningsknoppen in de webinterface te maken. De webserver is al geïnstalleerd, dus in de root (standaard is dit de map /var/www/) schrijven we de code met knoppen in het index.php-bestand. De code is mogelijk.
Daar maken we in de root van de webserver een style.css-bestand met inhoud die .

We gaan naar de webserver http://ip-address-raspberru-pi/ en zouden twee knoppen moeten zien (ze werken nog niet).

5) voeg als volgt rechten voor www-data toe:
sudo visudo
voeg daar toe:
www-data ALL=(ALL) NOPASSWD: ALLEN

6) probeer knoppen in de webinterface in te drukken. Ze zouden al moeten werken en op de stick moeten klikken.
Bouw resultaat:

Het hypertext kofHTCPCP/1.0, dat in 1998 verscheen, is nu ten onrechte vergeten. Om de ideeën die de makers erin hebben gestopt nieuw leven in te blazen, zullen we een koffiezetapparaat implementeren dat wordt bestuurd door een Raspberry Pi.

Veel koffieliefhebbers dromen ervan dat er hete koffie op hen wacht als ze wakker worden. De dromen werden over elkaar heen gelegd door gesprekken over een "smart home", controllers, sensoren, en toen bestelde ik ook een Raspberry Pi (RPi) -bord "om mee te spelen" - over het algemeen was het lot ervan beslist. Leek het in 1998 bedienen van een koffiezetapparaat via internet nog heel leuk, tegenwoordig is het heel goed mogelijk om het zelf te doen. Met speelgoed als RPi wordt de vreugde dubbel. Tegen zijn achtergrond lijkt de Arduino Mega 2560 die stof verzamelt in een doos een zeldzaamheid die per ongeluk in de toekomst terecht is gekomen uit de wereld van 8-bits processors uit de jaren 80 en 90, waar om de een of andere reden Wi-Fi, schilden en sensoren in zaten. bijgevoegd.

Maar laten we teruggaan naar de keuken voor koffie. We zetten het koffiezetapparaat aan met behulp van een relais, we besturen het relais met RPi, toegang tot RPi vanuit de browser via Wi-Fi. Wakker worden, direct uit bed via de browser op je telefoon. En via een webcam kijken we hoe het brouwt. Of we detecteren beweging en de koffie begint te zetten zodra we de keuken binnenkomen of het licht aandoen. Een echte nerd kan het koffiezetapparaat vanuit bed aanzetten via SSH, een echt lui persoon - door simpelweg naar de keuken te gaan, en een eenvoudige gebruiker zoals ik - via een browser.

EEN KOFFIEZETAPPARAAT KIEZEN

Van het koffiezetapparaat heb je weinig nodig. Type - druppelen: de prijs is veel lager en de koffie is naar mijn smaak zachter dan espresso. En nog belangrijker: een minimum aan elektronica. De gehele bediening moet uit één enkele mechanische schakelaar bestaan, zodat het koffiezetapparaat eenvoudig kan worden ingeschakeld door er stroom op te zetten. Thuis is er geen behoefte aan een koffiezetapparaat met een groot volume; er is ook geen hoog vermogen nodig: een lagere stroom betekent minder belasting van de bedieningselementen van het onderdeel. Hoewel het bij dit soort koffiezetapparaten onmogelijk is om het bereidingsproces volledig te automatiseren en je deze elke avond moet bijvullen met water en gemalen koffie.

De keuze aan koffiezetapparaten met een klein volume en vermogen is klein, de meeste aanbiedingen hebben een capaciteit van meer dan een liter, maar vrijwel onmiddellijk vond ik de Moulinex BCA 1.L1 Little Solea leuk. Vermogen 640 W, koffiekan 0,6 l.

Wij verdraaien alles door elkaar

De eerste revisie van RPi-borden heeft slechte zekeringen (Fig. 2), waardoor bijna alle USB-randapparatuur moet worden aangesloten via een USB-hub met extra voeding. Dit probleem is in latere revisies opgelost, maar vanwege de lage stroomvoorziening heeft u mogelijk nog steeds een USB-hub nodig.

De twee monitoren die ik probeerde hadden bij de standaardinstellingen een zwarte rand rond de randen van het scherm. Dit kan worden gecorrigeerd door de instellingen van de overscanmodus; in mijn geval werd dit opgelost door dit uit te schakelen in het configuratiemenu.

besturingssysteem

Het belangrijkste besturingssysteem op dit moment is Raspbian, gebaseerd op Debian, met ondersteuning voor een hardwarecoprocessor voor drijvende-kommabewerkingen. Op de downloadpagina kun je het niet alleen downloaden (je hebt Raspbian "wheezy" nodig), maar ook verschillende andere, ook gebaseerd op Linux, samen met de nodige hulpprogramma's.

De kaartafbeelding moet naar schijf worden gedownload, uitgepakt en vervolgens, als alles onder Windows wordt gedaan, worden geüpload met het hulpprogramma Win32DiskImager (link staat op de downloadpagina) naar een SD-kaart, waarvan de grootte minimaal 2 GB moet zijn. Niet elke SD-kaart zal werken - er is een lijst met compatibele kaarten en andere apparatuur, maar zelfs het gebruik van kaarten uit deze lijst garandeert niet dat een bepaalde kaart geen nep is. Als de RPi niet opstart vanaf de afbeelding die u zojuist naar de kaart hebt geüpload, is het eerste wat u kunt proberen het vervangen van de SD-kaart.

Na het installeren van de SD-kaart in de RPi, het inschakelen en opstarten (standaard gebruikersnaam pi, wachtwoord - framboos), wordt het initiële configuratiemenu weergegeven, waarin u het bestandssysteem moet uitbreiden van de 2 GB-image naar de volledige SD-kaart en schakel SSH in. Daarnaast is het de moeite waard om de toetsenbordindeling, talen, tijdzone in te stellen en het standaardwachtwoord te wijzigen.

Het is beter om afzonderlijk met overklokken te experimenteren en de stabiliteit van de RPi onmiddellijk na het wijzigen te controleren. Maar het is het proberen waard, omdat de snelheidstoename visueel merkbaar is. U kunt altijd terugkeren naar het configuratiemenu met het commando:

$sudo raspi-config

Na voltooiing initiële installatie opnieuw opstarten:

$ sudo opnieuw opstarten

De volgende stap is het updaten van de pakketten - de ontwikkeling voor RPi is zeer actief en er worden zeer vaak grote updates uitgebracht.

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

Ethernet en wifi instellen

De D-Link DWA-140 B2 Wi-Fi-kaart die ik had stond op de lijst met compatibele apparatuur. Ik heb het aangesloten en gecontroleerd of het succesvol is geïdentificeerd:

$lssub<..>Bus 001 Apparaat 006: ID 07d1:3c0a D-Link-systeem DWA-140 RangeBooster N-adapter (rev.B2) $ iwconfig lono draadloze uitbreidingen. eth0 geen draadloze extensies. wlan0 IEEE 802.11bgn ESSID:uit/willekeurige modus:Beheerd toegangspunt: Niet-geassocieerd Tx-Power=20 dBm Lange limiet opnieuw proberen:7 RTS thr:uit Fragment thr:uit Energiebeheer:aan

Wi-Fi kan worden geconfigureerd volgens de documentatie.

SSH EN VNC

Het starten van de SSH-server is toegestaan ​​in het initiële configuratiemenu. Voor toegang vanaf een Windows-machine kunt u Putty gebruiken, vanaf een Android-telefoon - Irssi ConnectBot. Maar hier gaat het om smaak en kleur...

Als SSH niet voldoende is en u toegang nodig heeft tot het RPi-bureaublad (bekijk bijvoorbeeld foto's die zijn gemaakt met Motion zonder ze naar lokale machine), je kunt het verkrijgen via vncviewer van TightVNC, en voor toegang vanaf Android - met behulp van androidVNC. Om dit te doen, moet je VNC installeren met behulp van de aanbevelingen van bit.ly en bit.ly.

WEBCAM EN BEWEGING

Mijn versie gebruikt een Logitech HD Webcam C525 als webcam. Bij aankoop nieuwe webcam Het is de moeite waard om de lijst met RPI-compatibele apparatuur te raadplegen; sommige hebben mogelijk een USB-hub met extra voeding nodig. Het is ook de moeite waard om de bewegingscompatibiliteit te controleren via de links 'Werkende apparaten' en 'Niet-werkende apparaten'. Als een camera niet in de lijst ‘Werkapparaten’ staat, betekent dit niet dat deze niet zal werken, maar een camera uit de tweede lijst is zeker niet de moeite waard om te kopen.

$lssub<..>Bus 001 Apparaat 007: ID 046d:0826 Logitech, Inc.

U kunt de camera controleren door te proberen een screenshot van de camera te maken:

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

IN huidige map Er zou een snap.jpg-bestand moeten verschijnen (zelfs als er foutmeldingen waren) dat op de RPi kan worden geopend Afbeeldingsviewer. Motion is een applicatie voor het monitoren van het signaal van de camera, waarmee u kunt vaststellen dat een aanzienlijk deel van het beeld is veranderd (dat wil zeggen beweging in het frame detecteert), en in dit geval afbeeldingen kunt opslaan en externe programma's kunt starten. Homepagina van het project.

$ sudo apt-get install motion

Motion automatisch laten afspelen:

$ sudo nano /etc/default/motion # ingesteld op "yes" om de motion-daemon start_motion_daemon=yes in te schakelen

Sta toegang tot de Motion-webinterface toe vanaf externe hosts:

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

In hetzelfde bestand worden instellingen opgeslagen voor bewegingsdetectie, begin en einde van camera-opname en starten extern programma wanneer beweging wordt gedetecteerd.

$ sudo nano /etc/motion/motion.conf # Commando dat moet worden uitgevoerd wanneer een bewegingsframe wordt gedetecteerd (standaard: geen) on_event_start sudo /home/pi/motion-det

/home/pi/motion-det - script dat wordt uitgevoerd wanneer beweging wordt gedetecteerd. Hij zal nodig hebben wortelrechten voor havenbeheer. Voeg gebruiker Motion (beweging) toe aan de lijst met sudoers:

$ sudo visudo

het toevoegen van de volgende regel aan het einde van het bestand:

Beweging ALL=(ALL) NOPASSWD: ALL

Uitvoeren met informatie-uitvoer naar de console:

$ sudo-beweging -n

Wanneer Motion actief is, kunnen de instellingen vanuit de browser worden gewijzigd op: //:8080

In plaats daarvan moet u het daadwerkelijke IP-adres van de RPi vervangen. Je kunt het beeld van de camera bekijken op //:8081

In Firefox wordt de afbeelding mogelijk niet correct bijgewerkt. In Chrome is alles in orde. Browsers die vooraf op de RPi zijn geïnstalleerd, kunnen dit helemaal niet weergeven. Er is een configuratiemodus beschikbaar om bewegingsdetectie te configureren

$ sudo beweging -s

In deze modus wordt bij het bekijken van het camerabeeld de bewegingsdetectie zelf in verschillende kleuren weergegeven en is het mogelijk om de detectieparameters op de instellingenpagina aan te passen.

Beelden van de camera worden opgeslagen in de map /tmp/motion, formaat individuele afbeeldingen standaard jpg, video's - swf. Het formaat kan worden gewijzigd in het configuratiebestand. U kunt het opslaan van bestanden als volgt uitschakelen:

Output_normal uit ffmpeg_cap_new uit

GPIO-POORTS - FUNCTIES EN BEDIENING

De RPi heeft ingebouwde I/O-poorten. Ze worden GPIO genoemd, General Purpose Input/Output, dat wil zeggen invoer-/uitvoerpoorten voor algemeen gebruik. Strikt genomen kunt u de actuator zonder aansluiten bijzondere problemen en naar een eenvoudige pc, maar waarom zou je geen pc in de keuken bewaren? Dat is het mooie van de goedkope en miniatuur RPi: hij kan eenvoudig naast de actuator worden geplaatst.

GPIO-poorten werken op 3,3 V-niveaus. Het RPi-bord biedt echter geen bescherming voor de poorten, en het per ongeluk kortsluiten van 5 V kan fataal zijn.

Poortbedrading en voorbeelden van toegang daartoe vanuit verschillende programmeertalen vindt u hier: bit.ly/StAJXA.

Er zijn twee hoofdversies van de kaarten, revisie 1 en 2, met enigszins verschillende bedrading en poorttoewijzingen. Om te bepalen welke versie u moet invoeren katten commando/proc/cpuinfo en zoek de hardwarerevisiecode in de tabel: Er is aanvullende informatie over de verschillen tussen revisie 1 en 2.

De +5 V en 3,3 V voeding, aarde (GND) en de GPIO 4 poort, die we blijven gebruiken, zijn in beide versies op dezelfde pinnen geplaatst. RPi-ontwikkelaars wijzen herhaaldelijk op het gevaar dat de poort of de gehele RPi wordt verbrand als de poort niet correct is aangesloten. Om dit te voorkomen, wordt aanbevolen om de poort te beschermen tegen foutieve acties. Poortbeschermingsschema's (en ook voorbeelden van het aansluiten van verschillende randapparatuur) kunnen worden bekeken.

Haventoegang

De eenvoudigste manier om een ​​poort te beheren is vanuit opdrachtregel. De status van de poort kan worden gecontroleerd met een voltmeter. Alle acties worden onder root uitgevoerd.

$ sudo -i

Aan de slag met de haven:

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

Bedrijfsmodus - uitgang:

$ echo "uit" >

Uitgangswaarden:

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

Bedrijfsmodus - ingang:

$ echo "in" > /sys/class/gpio/gpio4/direction

$ cat /sys/class/gpio/gpio4/value

Stop met werken met de poort:

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

Laten we een script voorbereiden om een ​​bepaalde poort te besturen, dat we later zullen gebruiken:

$ sudo nano-switch_gpio

#! /bin/bash PORT_NUM=$1 als [ $2. == "aan." ]; then NEW_VALUE=1 anders als [ $2. == "uit." ]; then NEW_VALUE=0 else echo "Gebruik: $0 PORT_NUM aan|uit" exit fi fi # Configureer de GPIO-poort voor uitvoer als [ ! -e /sys/class/gpio/gpio$PORT_NUM ] then echo $PORT_NUM > /sys/class/gpio/export fi # Lees de oude status OLD_VALUE=$(cat /sys/class/gpio/gpio$PORT_NUM/value) als [$OLD_VALUE == 1]; then OLD_VALUE_TEXT="aan" else OLD_VALUE_TEXT="uit" fi echo "out" > /sys/class/gpio/gpio$PORT_NUM/direction echo -ne "GPIO "$PORT_NUM" schakelen van "$OLD_VALUE_TEXT" naar "$2". .." echo $NEW_VALUE > /sys/class/gpio/gpio$PORT_NUM/value echo " klaar."

Uitvoeringsrechten:

$ chmod +x switch_gpio

En laten we eens kijken:

$ switch_gpio 4 aan $ switch_gpio 4 uit

RELAISMODULE

De relaisaansluiting is geïmplementeerd volgens het schema uit dit artikel. IN normale positie Wanneer de uitgang van de GPIO-poort logisch nul- en nulpotentiaal is, is de transistor gesloten en wordt er geen spanning aan de belasting geleverd. Als er een logische wordt toegepast op de GPIO, zal 3,3 V via een weerstand de transistor openen, er stroom doorheen stromen en het relais werken. De diode is ontworpen om negatieve stroomstoten te verwijderen wanneer het relais is uitgeschakeld.

Er wordt een ander relais gebruikt (daarover later meer) en een transistor met een diode - die bij de hand waren, vergelijkbaar qua kenmerken. Weerstand R1 (1 kOhm), diodetype KD522 (1N4148), transistor H547. Het artikel bevat aanbevelingen voor het kiezen van analogen. Bovendien is het de moeite waard om de uitgangsstroom van de poort te controleren wanneer het relais is ingeschakeld.


De belasting aangesloten op het circuit is 640 W. Dit betekent dat bij een spanning van 220 V de stroom 640 W / 220 V = 2,9 A zal zijn. Een andere vereiste voor het relais is dat twee draden tegelijk sluiten en openen en dat de belasting volledig spanningsloos is. Een optie die geschikt is voor dergelijke vereisten is het TRIL-5VDC-SD-2CM-R-relais, bestuurd vanaf 5 V en in staat om te schakelen tot 8 A 250 V AC.

U kunt beginnen met de installatie op het contactprototypingbord. Natuurlijk voor serieuze taken het is niet geschikt, maar zulke kleine circuits kunnen er snel op worden gemonteerd en gedebugd. Eerst voeden we hem vanuit een aparte +5 V-bron, controleren alles zonder verbinding te maken met de RPi, vervangen de verbinding met de poort door een weerstand en een knop naar +5 V, meten alle stromen en installeren een connector voor aansluiting op de hoofd-RPi-bord. Het is absoluut onmogelijk om op zo'n bord 220 V aan te sluiten, dus je moet nog steeds een soldeerbout pakken en deze op de printplaat overbrengen.

Om verbinding te maken met het hoofd-RPi-bord, kunt u een kabel samenstellen uit een paar connectoren en een platte kabel, hierop een tussenbord aansluiten waarop vereiste poorten en voeding van de kabels randapparatuur Tot nu toe is er slechts één, niet langer een 26-, maar een 4-draads lus. Het is verbonden met de printplaat, waarop het op precies dezelfde manier is gemonteerd als in de eerste optie, door klemmenblokken voor 220 V toe te voegen. We solderen de klemmenblokken aan het relais met een draad met een doorsnede van 0,75, en Controleer zorgvuldig de functionaliteit van het circuit met een tester door op het relais te klikken. Bovendien kunt u de grond verdunnen. Vervolgens verbinden we de draden met de klemmen, ook met een doorsnede van 0,75, op de ene is een stekker geplaatst, op de andere - een aansluiting voor de draad.


Wees vervolgens voorzichtig en voorzichtig: 220 V met een frequentie van 50 Hz is een spanning, als er onzorgvuldig mee wordt omgegaan, kunnen de gevolgen veel tragischer zijn dan een verbrande RPi. We controleren visueel het solderen op het relaisbord en controleren of de 220 V-draden stevig op de klemmenblokken zijn bevestigd. We repareren het bord, of beter nog, installeren het in een gesloten behuizing om het niet per ongeluk aan te raken geopende contacten onder spanning. We nemen de tijd en controleren bij elke stap consequent met een tester. We ontkoppelen het relaisbord van het hoofd-RPi-bord en steken het in 220. Er is geen rook. We verbreken de verbinding met het netwerk, sluiten het hoofd-RPi-bord aan en zetten het weer aan op 220. Er is geen rook meer, de RPi leeft. We klikken op het relais, we zien 220 op de socket. Koppel het relais en 220 los, sluit het aan op het stopcontact tafellamp, pas 220 toe, klik op het relais. Hoera!

Rijst. 5. De tweede versie van de relaismodule, gesoldeerd op een printplaat
met tussenschakelbord

Laten we even ademhalen en het relaisbord in de behuizing installeren op een voortdurende basis, we proberen de definitieve versie, met een koffiezetapparaat als lading.

HAVENBEHEER MET WEBIOPI

De eenvoudigste manier om toegang te krijgen tot GPIO-poorten via internet is door WebIOPi te installeren. Dit is een applicatie waarmee u de richting van een poort (invoer/uitvoer) visueel kunt instellen, de status ervan tijdens invoer kunt zien en de waarde op de uitvoer kunt instellen.

De installatie wordt gedetailleerd beschreven.

$ sudo apt-get install apache2 php5

Om te werken gebruikt WebIOPi de herschrijfmodule en configuratie-override (.htaccess):

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

In de sectie verander de regel "AllowOverride Geen" in "AllowOverride All":

Opties Indexen FollowSymLinks MultiViews ToestaanAlles overschrijven Bestel toestaan, toestaan ​​van iedereen weigeren

Apache-gebruiker (www-data) toevoegen aan de sudoers-lijst:

$ sudo visudo

Voeg de volgende regel toe aan het einde van het bestand:

www-data ALL=(ALL) NOPASSWD: ALLEN

Start Apache opnieuw:

$ sudo /etc/init.d/apache2 opnieuw opstarten

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

Verplaats de bestanden naar de juiste map:

$ sudo mv webiopi /var/www

De hoofdinterface is beschikbaar op: //localhost/webiopi.

Als u een pagina rechtstreeks vanuit RPi opent, moet u dit in Chromium of Midori doen; het werkt niet in NetSurf of Dillo vanwege het gebrek aan JavaScript-ondersteuning daarin.

ALLES SAMEN VERBINDEN

Om de poort vanuit een browser via internet te besturen, is de WebIOPi-webinterface voldoende; deze kan naar wens worden geconfigureerd. Om het relais in te schakelen wanneer beweging wordt gedetecteerd, voegt u Bewegingsstart toe aan opgegeven tijd's ochtends, bijvoorbeeld om 8:00 uur, in /etc/crontab:

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

Crontab /etc/crontab

Laten we een script maken dat vanuit Motion wordt gestart:

$ nano /home/pi/motion_det

#!/bin/bash /home/pi/switch_gpio 4 aan service beweging stop slaap 1800 /home/pi/switch_gpio 4 uit

Uitvoeringsrechten:

Chmod +x /home/pi/motion_det

Nu om acht uur 's ochtends wordt Motion gelanceerd, die beweging begint te detecteren. Wanneer er beweging wordt gedetecteerd, wordt het motion_det-script uitgevoerd, dat een logische code naar de GPIO 4-poort stuurt, spanning op het relais zet en het koffiezetapparaat inschakelt, de beweging stopt, 30 minuten wacht en een logische nul naar dezelfde poort stuurt , waarbij de belasting wordt uitgeschakeld.

CONCLUSIE

De meeste componenten zijn gekocht bij Chip and Dip (inclusief behuizingen, kabelwartels, printplaten, adapters, enzovoort). Dit is een winkel met een goede selectie, waar je naartoe kunt gaan, kijken en aanraken, maar het is niet goedkoop, er zijn aanzienlijk goedkopere. Wie niet lang wil wachten op de levering van de RPi, kan hem bijvoorbeeld al bij Terraelectronics aanschaffen, al helemaal niet voor 25 dollar.

Om de duisternis op winterochtenden te vermijden, kun je in plaats van een camera (of als aanvulling daarop) een IR-bewegingssensor aansluiten. U kunt erachter komen hoe u een automatische espressomachine moet gebruiken en hoeft zich de volgende ochtend geen zorgen te maken over het bijvullen van uw koffie. Je kunt via ZygBee een relais aansluiten, andere toevoegen actuatoren bijvoorbeeld een lamp in de slaapkamer. U kunt de bediening via SMS uitvoeren door een 3G-modem aan te sluiten, of met gewone telefoon via DTMF door Asterisk of Freeswitch te verhogen. Of u schrijft een applicatie voor Android en iPhone/iPad.

Er zijn veel opties, en met de komst van RPi is de mogelijkheid om te experimenteren op de grens tussen programmeren en de fysieke wereld dramatisch uitgebreid. Ja, en natuurlijk moet u op 1 april nadenken over volledige ondersteuning voor de RFC 2324-standaard.

De Raspberry Pi is niet alleen een minicomputer die is ontworpen om er muziek op af te spelen. Het kan ook worden gebruikt in serieuzere elektrische toepassingen. Om dit te doen, heeft het GPIO-lijnen (General Purpose Input/Output), waar we vandaag naar zullen kijken.



GPIO's bevinden zich op een 2x13-connector, waarop u SPI-, I2C-, UART-interfaces en 3,3 V- en 5 V-stroomlijnen kunt vinden.



Acht van deze pinnen kunnen direct worden gebruikt als digitale in- of uitgang. Daarom kunnen ze worden gebruikt om LED's, motoraansturingen en andere soortgelijke apparaten te besturen. Uiteraard kunnen er knoppen en schakelaars op worden aangesloten om informatie in de Raspberry Pi in te voeren.



Dus hoe beheer je GPIO-lijnen op Raspberry Pi?


Eerst moet je de RPi.GPIO Python-bibliotheek installeren. Het is mogelijk al vooraf geïnstalleerd op uw distributie van het Raspbian OS-besturingssysteem. Om dit te controleren, typt u:


sudo python


Voer vervolgens in de regel in:


importeer RPi.GPIO als GPIO


Als er geen fout optreedt, is alles in orde. Maar als het zich toch voordoet, moet u de volgende stappen ondernemen.


Download eerst de RPi GPIO-bibliotheek:


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


Pak vervolgens de bestanden uit:


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


Vervolgens gaan we naar de uitgepakte map:


cd RPi.GPIO-0.3.1a


En installeer de bibliotheek:


sudo python setup.py installeren


De RPi.GPIO Python-bibliotheek gebruiken


# import bibliotheek importeer RPi.GPIO als GPIO # gebruik Raspberry Pi-connectornummering GPIO.setmode(GPIO.BOARD) # of GPIO.setmode(GPIO.BCM) # configureer GPIO-pinnen als invoer of uitvoer GPIO.setup(11, GPIO.IN ) GPIO.setup(13, GPIO.OUT) # neem de invoerwaarde van pin 11 input_value = GPIO.input(11) # stel de uitvoerwaarde in op pin 13 GPIO.output(13, GPIO.HIGH) #GPIO.output( 13, GPIO.LOW)

Het verschil tussen GPIO.setmode(GPIO.BOARD) En GPIO.setmode(GPIO.BCM) bestaat uit het pinnummeringsysteem. In het eerste geval wordt de nummering van de P1-connector aan boord van de Raspberry Pi gebruikt, en in het tweede geval de nummering van de pinnen van het Broadcom system-on-chip, dat de kern van de Raspberry Pi vormt. U moet weten dat in het geval van BCM de pinnummering tussen de eerste en tweede revisie enigszins verschilt, en bij gebruik van BOARD doet de revisie er niet toe, alles blijft hetzelfde.


Laten we nu de LED's en knoppen op de Raspberry Pi aansluiten. Er zijn acht GPIO's beschikbaar op de connector.



Aansluitingen:



De weerstandswaarden kunnen als volgt worden berekend. De in dit geval gebruikte LED's van 5 mm verbruiken een stroom van 20 mA. De door de Raspberry Pi geleverde spanning is 3,3 V. Dan wordt de weerstand 3,3 V / 20 mA = 165 ohm. Voor de knoppen zijn weerstanden van 1KOhm gebruikt.




vanaf tijd import slaap import RPi.GPIO als 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) # status - bepaalt of de LED aan of uit moet zijn status = 0 # increment - richting van statusverandering inc = 1 terwijl True: # knop ingedrukt if (GPIO.input(16) == True): if (inc == 1): staat = staat + 1; anders: staat = staat - 1; # maximale status bereikt, ga terug (verlagen) als (status == 3): inc = 0 #minimum status bereikt, ga terug (verhoging) elif (status == 0): inc = 1 als (status == 1): GPIO.output(11, GPIO.HIGH) GPIO.output(13, GPIO.LOW) GPIO.output(15, GPIO.LOW) elif (status == 2): GPIO.output(11, GPIO.HIGH) GPIO. output(13, GPIO.HIGH) GPIO.output(15, GPIO.LOW) elif (status == 3): GPIO.output(11, GPIO.HIGH) GPIO.output(13, GPIO.HIGH) GPIO-uitvoer( 15, GPIO.HIGH) anders: GPIO.output(11, GPIO.LOW) GPIO.output(13, GPIO.LOW) GPIO.output(15, GPIO.LOW) print("gedrukt op B1 ", status) # resetknop ingedrukt als (GPIO.input(18) == True): status = 0 inc = 1 GPIO.output(11, GPIO.LOW) GPIO.output(13, GPIO.LOW) GPIO.output(15, GPIO.LOW) print("gedrukte B2", staat) slaap(0.2);

Zoals we kunnen zien, is het gebruik van GPIO op de Raspberry Pi dus vrij eenvoudig. Hoewel er niet zoveel zijn als Arduino, maar samen met rekenkracht systeem-op-chip waar deze minicomputer nuttig in zal zijn

. Vandaag is de derde les waarin we gaan werken met de console en het hulpprogramma apt-get, leren hoe we schermafbeeldingen kunnen maken en bediening op afstand via VNC kunnen instellen.

Video van de derde les:

Voor de derde les hebben we nodig:

  • Raspberry Pi-bord;
  • stroomkabel;
  • USB-toetsenbord;
  • USB-muis;
  • monitor of tv met HDMI/RCA/DVI-interface;
  • een kabel waarvan het ene uiteinde RCA of HDMI is en het andere uiteinde overeenkomt met uw monitor;
  • SD-kaart waarop Raspbian OS al is geïnstalleerd (zie hoe u dit installeert);
  • USB-splitter met eigen voeding;
  • WiFi-modem.

Werken met de console op Raspberry Pi

In besturingssysteem Raspbiaan(zoals in andere distributies Linux) er is een hoofdconsole. Als we niet het juiste hadden gedaan rasppi-config, zou de console onmiddellijk openen wanneer het besturingssysteem startte. Werken met zo'n console is niet handig, omdat je de grafische modus moet verlaten. Veel handiger in gebruik vooraf geïnstalleerd programma LXTerminaal, dat de hoofdconsole emuleert als een venster in een GUI. Wanneer we dit programma openen, zien we de regel pi@raspberrypi ~ $ Hier pi— gebruikersnaam in het besturingssysteem, frambozenpi- hostnaam, ~ - huidige map, ~ vervangt /home/pi. Als we zo'n regel zien, kunnen we ons eigen commando schrijven. In het bijzonder kunt u hier acties uitvoeren met bestanden, mappen en archieven (maar deze acties kunnen ook in de grafische modus worden uitgevoerd, wat veel handiger is).

Sudo

Voor sommige acties zijn beheerdersrechten vereist. U kunt deze eenvoudig gebruiken door ze toe te voegen sudo aan het begin van de opdracht.

apt-get hulpprogramma en programma-installatie

We hebben gekeken naar het installeren van programma's met behulp van PiStore. Dit is een handige en intuïtieve manier met een grafische interface, maar de bibliotheek PiStore bevat niet zoveel programma's als we zouden willen.

Een alternatieve manier om programma's te zoeken, downloaden en installeren Framboos Pi- consolehulpprogramma apt-get.

Apt-get slaat gegevens op over verschillende console- en grafische programma's en hulpprogramma's Framboos Pi. Voordat u met dit hulpprogramma gaat werken, moet u de programmadatabase bijwerken met behulp van de opdracht

sudo apt-get-update

Na de update kun je programma's downloaden. Om de database van de nutsvoorzieningen te doorzoeken, moet u het volgende verzoek indienen:

apt-cache zoeken<запрос>

Bijvoorbeeld,

apt-cache zoekboom

Na het verzoek wordt een lijst met programma's en hulpprogramma's weergegeven, waarvan de naam of beschrijving het ingevoerde verzoek bevat. We selecteren het juiste programma en onthouden de naam.

Wij vragen installatie:

sudo apt-get install<название>

Bijvoorbeeld,

sudo apt-get install tree

De installatie moet worden bevestigd met behulp van Binnenkomen.

Na de installatie kunt u informatie over het programma of hulpprogramma vinden:

informatie<название>

Bijvoorbeeld,

In het uitvoerbestand vindt u algemene informatie over het programma, de licentie, de gebruikte parameters (als het een consoleversie is) en andere informatie.

Te gebruiken consoleprogramma binnenkomen<название> <параметры и флаги>, Bijvoorbeeld boom.

Om een ​​programma te verwijderen, gebruik je het commando (de verwijdering moet ook bevestigd worden):

sudo apt-get verwijderen<название>
Bijvoorbeeld,
sudo apt-get verwijder boom
Het is raadzaam om van tijd tot tijd de volgende acties uit te voeren met dit hulpprogramma:
sudo apt-get update (de programmadatabase bijwerken)
sudo apt-get upgrade (geïnstalleerde programma's bijwerken)
sudo apt-get autoremove (bibliotheken, begeleidende programma's, enz. verwijderen die overblijven na het verwijderen van programma's)

Screenshots maken op Raspberry Pi

Helaas heeft Raspbian OS geen vooraf geïnstalleerde tools voor het maken van schermafbeeldingen - schermafbeeldingen.

U kunt zoeken naar hulpmiddelen voor het maken van schermafbeeldingen in apt-get met behulp van het verzoek:

apt-cache zoekschermopname

het leek mij handig hulpprogramma scrot voor schermafbeeldingen. Het scrot-hulpprogramma installeren:

sudo apt-get install scrot

Om een ​​screenshot te maken, moet u de scrot-opdracht invoeren. U kunt een vertraging bij de uitvoering van de opdracht opgeven - dit is nodig zodat u tijd heeft om de console te minimaliseren of te sluiten - anders wordt deze in de schermafbeelding opgenomen. Voor een vertraging van 5 seconden moet u het volgende invoeren:

Afstandsbediening instellen via VNC

Virtueel netwerkcomputergebruik (VNC) - een systeem voor externe toegang tot het bureaublad van een computer. Controle wordt bereikt door toetsaanslagen en muisbewegingen van de ene computer naar de andere over te brengen en de scherminhoud door te geven computernetwerk . Voor afstandsbediening gebruiken we VNC Frambozencontrole Pi.

Om bediening op afstand in te stellen, installeert en start u de VNC-server x11vnc, Ontdek het IP-adres van de Raspberry Pi:
sudo apt-get install x11vnc
x11vnc -bureaublad:0
Laten we het IP-adres van de Raspberry Pi bekijken met behulp van de opdracht hostnaam -I.

Op de computer waarvan we de Raspberry Pi op afstand willen besturen, downloaden en installeren we bijvoorbeeld een VNC-client van realVNC. Laten we het starten en het Raspberry Pi IP-adres invoeren. Hierna kunnen wij op afstand besturen.

Hiermee is de derde les afgesloten, volg!

In de volgende les zullen we werken met GPIO-poorten, in het bijzonder zullen we de LED in verschillende modi laten knipperen.