Webgebaseerd beheer van Raspberry Pi GPIO. Een internetkoffiezetapparaat maken met Raspberry Pi

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 nog leuk om een ​​koffiezetapparaat via internet te bedienen, 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 is ingeschakeld dit moment is Raspbian, gebaseerd op Debian, met ondersteuning voor een hardware floating point coprocessor. 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 (de 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 moet uitbreiden bestandssysteem van 2 GB aan afbeelding naar de volledige SD-kaart en SSH toestaan. 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

Nadat u de initiële installatie hebt voltooid, start u opnieuw op:

$ 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

Begin SSH-server ingeschakeld 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 genoeg is en je toegang nodig hebt tot de RPi-desktop (bijvoorbeeld om foto's te bekijken die met Motion zijn gemaakt zonder ze naar de lokale machine te kopiëren), kun je deze 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 de huidige map zou een snap.jpg-bestand moeten verschijnen (zelfs als er foutmeldingen waren), dat op de RPi kan worden geopend met behulp van 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 uitvoeren:

$ 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, start en einde van de opname van de camera en het starten van een 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

hebben toegevoegd 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-update afbeeldingen worden mogelijk niet correct weergegeven. 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, moet u het commando cat /proc/cpuinfo invoeren en de hardwarerevisiecode in de tabel zoeken: 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 onjuiste aansluiting haven. 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 de 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 spanningen 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 de installatie starten bij de contactpersoon broodplank. Natuurlijk is het niet geschikt voor serieuze taken, maar kleine schakelingen als deze kunnen snel worden samengesteld 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 de benodigde poorten al zijn aangelegd en de kabels van stroom worden voorzien. 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. Controleer visueel het soldeerwerk op de relaiskaart en controleer 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 niet per ongeluk geopende live-contacten aan te raken. 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

We halen diep adem en nadat we het relaisbord permanent in de behuizing hebben geïnstalleerd, proberen we 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 hoofdstuk 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 specifieke 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. Via ZygBee kun je een relais aansluiten, andere actuatoren toevoegen, 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.

Figuur 1. Systeemhardwareblokschema

Het beschrijven van het proces van het installeren van de hardware van het systeem kost veel tijd, maar is vrij eenvoudig. Allereerst sluit u de voeding aan op het stopcontact met behulp van een verlengsnoer, waarbij u de aansluiting van het verlengsnoer afsnijdt. Strip de draden en bevestig ze met schroeven aan de voedingsklemmen. Sluit vervolgens de Raspberry Pi aan op de voeding door de Type A-connector eraf te knippen USB-kabel en sluit de draden aan op de overeenkomstige pinnen van de voeding, en steek de micro-USB-connector in de RPi-voedingsconnector. Hierna moet u beide uiteinden van de twee aders van de flexibele kabel strippen en deze aansluiten op de overeenkomstige klemmen gemarkeerd GND en JDVcc van het voedings- en relaisblok. Ten slotte moet u de jumper verwijderen die de pin met het label JDVcc verbindt met de pin met het label Vcc. Als u deze dumper niet verwijdert, komt er een spanning van 5 V op de 3,3 V-pinnen van de RPi, waardoor de computer hoogstwaarschijnlijk kapot gaat.

Nu alle terminals van stroom zijn voorzien, sluit u de IN1-IN8-lijnen van de relaismodule aan op de overeenkomstige GPIO-pinnen met behulp van een flexibele kabel, zoals weergegeven in afbeelding 2. De code in dit artikel is ontworpen voor het geval waarin de IN1-IN7 pinnen aangesloten op pinnen GPIO1-GPIO7. Als u besluit deze pinnen anders aan te sluiten, moet u uw code dienovereenkomstig aanpassen.

Connector-pinschema GPIO-framboos De Pi wordt weergegeven in figuur 2. De I/O-poorten van de Raspberry Pi worden geleverd met een spanning van 3,3 V en de relaismodule werkt met een spanning van 5 V. De relais zijn echter geïsoleerd van de GPIO-pinnen van de Raspberry Pi gebruik van optocouplers. De optocouplers kunnen vanaf de Vcc-pin van 3,3 V-spanning worden voorzien. De Vcc-pin van de relaismodule kan via de Raspberry Pi GPIO-connector van 3,3V spanning worden voorzien. Zorg ervoor dat u de jumper verwijdert die de Vcc- en JDVcc-klemmen van de relaismodule kortsluit. De JDVcc-pin moet 5V zijn correcte werking relais. De betreffende relaismodule opent de contacten in actieve toestand. Hieruit volgt dat u de aansluitingen IN1-IN8 moet aarden om het relais in te schakelen.

Figuur 2. GPIO-pin-out van Raspberry Pi

Waarschuwing: Wees uiterst voorzichtig bij het aansluiten van systeemhardwarecomponenten. De gevolgen van een elektrische schok kunnen zijn fataal!

Knip eventuele resterende verlengkabels af met pluggen en bevestig de draden aan de juiste klemmen op de relaismodule. Sluit ook de draden van de kabel die het systeem later op het stopcontact zal aansluiten, aan op de overeenkomstige klemmen van de relaismodule. Alle systeemhardware kan in een etui of een soortgelijke container worden geplaatst. Denk van tevoren na over de behuizing om te voorkomen dat u de draden op de aansluitingen van de relaismodule moet loskoppelen en opnieuw moet aansluiten nadat u klaar bent met werken aan de systeemhardware. Ik heb ook een aantal opschroefbare kabelklemmen in de overeenkomstige gaten in het chassis gestoken om de kabelspanning te beperken (Figuur 3).

Figuur 3. Installatie van systeemhardware

Software-omgeving

Ik begon mijn softwareomgeving te creëren door de image te installeren besturingssysteem Raspbiaan. Voordat u begint met het installeren van de image van het besturingssysteem, moet u een beeldscherm voorbereiden dat HDMI ondersteunt, een toetsenbord en muis met USB-aansluitingen, en netwerk kabel om verbinding te maken met het systeem via Ethernet-protocol. U kunt ook verbinding maken met het systeem via een Wi-Fi-adapter. Creëren opstartbare SD-kaart om het systeem voor de eerste keer op te starten in overeenstemming met de instructies op de bron http://www.raspberrypi.org/documentation/installation/installing-image. Tijdens de eerste keer opstarten van het systeem zal het installatieprogramma het besturingssysteem configureren en gegevens uit de image op de volledige beschikbare ruimte van de geheugenkaart plaatsen. Na de eerste keer opstarten zou u zich moeten kunnen aanmelden met uw standaard gebruikersaccountgegevens (gebruikersnaam "pi" en wachtwoord "raspberry").

Het updaten van het systeem is een slimme actie die onmiddellijk na een succesvolle login moet worden uitgevoerd. De Raspbian-besturingssysteemimage is gebaseerd op softwarepakketten Debian-distributie en gebruikt de applicatie aptitude als softwarepakketbeheerder. Daarnaast heb je softwarepakketten nodig met de namen python, pip en git. Ik zou ook aanraden om Webmin te installeren om het systeembeheerproces te vereenvoudigen. Instructies voor Webmin installeren vindt u op http://www.webmin.com/deb.html (volg de aanbevelingen in de sectie "De Webmin APT-repository gebruiken"):

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

Hierna moet u een verbinding tot stand brengen met behulp van een Wi-Fi-adapter. Gedetailleerde instructies vindt u op http://www.raspberrypi.org/documentation/configuration/wireless. Ik raad aan om de optie wicd-cursussen te gebruiken. Op dit punt kunt u uw Raspberry Pi-instellingen wijzigen met de opdracht sudo raspi-config. Na het invoeren van deze opdracht heeft u toegang tot een handige grafische interface waarmee u de waarden van parameters zoals volume kunt instellen werkgeheugen gedeeld met de GPU, prestatieparameters centrale verwerker, modus voor het gebruik van de grafische interface tijdens het opstartproces en andere.

Een ander handig hulpmiddel is de Cloud 9 IDE. Met Cloud 9 IDE kunt u uw code op Raspberry Pi-niveau bewerken via een webbrowser. Deze IDE geeft u ook toegang tot een opdrachtregelinterface in een webbrowser. U kunt elke code ontwikkelen en uitvoeren zonder uw webbrowser te verlaten. De Colud 9 IDE vereist een specifieke versie van het NodeJS-framework. Het gebruik van een niet-ondersteunde versie van het framework zal resulteren in constante crashes van de Cloud 9-server, waardoor elke gebruiker ontmoedigd kan raken. Instructies voor het installeren van het NodeJS-framework op een Raspberry Pi-computer vindt u op http://weworkweplay.com/play/raspberry-pi-nodejs.

Software

Ik besloot de gebruikersinterface van mijn systeem te creëren met behulp van HTML5-, CSS3- en JavaScript-technologieën. De combinatie van de drie genoemde technologieën is een krachtig hulpmiddel voor het creëren van gebruikersinterfaces. Met de programmeertaal JavaScript kunt u een eenvoudige API gebruiken om met servers te communiceren. Daarnaast zijn er veel bibliotheken voor de programmeertaal JavaScript, zoals JQuery, Bootstrap en andere, waaruit u de meest geschikte kunt kiezen. HTML5 biedt de WebSocket API, waarmee een webbrowser een verbinding kan onderhouden en via die verbinding kan communiceren. Dit maakt de WebSocket API bijzonder nuttig voor het implementeren van dynamische en streaming-applicaties, zoals games en chat. Cascading Style Sheets CSS zijn handig voor het opmaken van verschillende elementen van een HTML-pagina. Als je ze correct gebruikt, kun je dynamiek creëren gebruikersinterfaces door de stijlen van pagina-elementen te wijzigen wanneer bepaalde gebeurtenissen plaatsvinden. Voor dit project Ik heb gekozen voor JQuery om de gebeurtenissen af ​​te handelen, Bootstrap CSS om de knoppen in een raster te plaatsen en JavaScript om de WebSocket API-communicatiemechanismen te implementeren.

Bibliotheken

De serverapplicatie die op Raspberry Pi-niveau draait, moet de status van de GPIO-pinnen controleren Frambozen borden Pi. Het moet ook een HTTP-interface bieden voor het doorgeven van GUI-gegevens en een WebSocket-interface voor het doorgeven van berichten met opdrachten en statusgegevens. Er bestaat eenvoudigweg geen kant-en-klare serverapplicatie met deze specifieke functies, dus besloot ik mijn eigen serverimplementatie te maken met behulp van de programmeertaal Python. Om de ontwikkeling van de beschreven serverapplicatie met behulp van de programmeertaal Python te vereenvoudigen, zijn modules met implementaties van methoden voor het werken met de Raspberry Pi GPIO-interface, voor het maken van een HTTP-server en voor het werken met de WebSockets-interface beschikbaar. Omdat alle vermelde modules zijn ontworpen om de toegewezen taken uit te voeren, moest ik een minimale hoeveelheid code ontwikkelen.

De genoemde modules worden echter niet meegeleverd met de Python-interpreter en moeten afzonderlijk worden geïnstalleerd. Allereerst heb je een module nodig om de status van de GPIO-connectorpinnen van de Raspberry Pi te controleren. De eenvoudigste manier om de pinstatus van een bepaalde connector te wijzigen is door de RPi.GPIO-bibliotheek te gebruiken, beschikbaar op https://pypi.python.org/pypi/RPi.GPIO. U kunt de bijbehorende module installeren met behulp van de volgende opdracht:

Sudo pip installeert RPi.GPIO

Het werken met de RPi.GPIO-module levert geen problemen op. Voorbeelden van het gebruik van deze module vindt u op . De eerste stap bij het werken met een module is het importeren van de code in de projectcode. Hierna moet u een bedrijfsmodus selecteren. Als bedrijfsmodusidentificatie kan de constante GPIO.BOARD of de constante GPIO.BCM worden gebruikt. De keuze van de bedrijfsmodus bepaalt of de BCM-chip- of I/O-connectorpinnen worden gebruikt bij het verwijzen naar pinnummers in alle volgende opdrachten. Vervolgens geef je aan of de pinnen van de betreffende connector gebruikt worden voor input of output. Nu kunt u de pinnen van deze connector gebruiken waarvoor ze bedoeld zijn. Ten slotte moet u de methode cleanup() aanroepen om de GPIO-pinnen opnieuw in te stellen. Lijst 1 toont eenvoudigste voorbeeld met behulp van de RPi.GPIO-module.

Lijst 1. Gebruik van de RPi.GPIO-module

Importeer RPi.GPIO als GPIO # importeert de modulecode in de projectcode GPIO.setmode(GPIO.BOARD) # geeft aan dat de nummering wordt gebruikt om de connectorpinnen te identificeren GPIO.setup(0, GPIO.IN) # geeft aan dat het kanaal 0 wordt gebruikt voor invoer GPIO.setup(1, GPIO.OUT) # geeft aan dat kanaal 1 wordt gebruikt voor uitvoer var1=GPIO.input(0) # lees de status van kanaal 0 GPIO.output(1, GPIO.HIGH ) # logische één instellen op kanaal 1 GPIO.cleanup() # de status van de GPIO-connectorpinnen resetten.

7. Kennismaken met de programmeertools die op de Raspberry Pi zijn geïnstalleerd

Voor het leren programmeren in Raspbian OS zijn vooraf geïnstalleerd Python-pakketten, Scratch, Node-RED, SonicPi en Wolfram Mathematica. Om het leren programmeren en fysiek computergebruik voor iedereen zo toegankelijk en gemakkelijk mogelijk te maken, is het Raspberry Pi-project enkele jaren geleden opgericht! Dus wat zijn de vooraf geïnstalleerde ontwikkeltools op de RasPi in drie woorden?

Het is niet nodig om Python te introduceren; het is de meest populaire programmeertaal in de universitaire en wetenschappelijke gemeenschap. Er is een bibliotheek geschreven en vooraf geïnstalleerd zodat Python via GPIO met sensoren kan werken. Over het algemeen kun je via de pip-tool duizenden bibliotheken voor Python installeren, letterlijk om alle praktische problemen van fysiek computergebruik en wetenschappelijk computergebruik op te lossen.
Naast de Python-taal zelf, versies 2 en 3 met de IDLE-ontwikkelomgeving, wordt het Raspbian OS vooraf geïnstalleerd met een speciale versie van het populaire Minecraft Pi-spel en Python-bibliotheken voor het besturen van het spel. (Voor introductie, zie en)
Knooppunt-ROOD - visuele redacteur van IBM met open source code voor het creëren van het ‘Internet of Things’, waarmee je vrijwel zonder programmeren vrij complexe applicaties voor systemen als ‘smart home’ kunt ‘samenstellen’, door kant-en-klare modules met elkaar te verbinden. (Voor introductie, zie en).
De Scratch-taal is een visuele programmeertoolkit waarmee kinderen animaties en games kunnen maken met behulp van de Drag & Drop-methode. (Voor introductie, zie en)
Dankzij de unieke SonicPi-taal kun je muziek programmeren. (Voor introductie, zie)
Wolfram- en Mathematica-pakketten zijn het meest compleet systeem voor het moderne technische computergebruik ter wereld. Het zal een onmisbare assistent zijn voor technische berekeningen voor zowel scholieren als universiteitsstudenten. Hoewel het product voor is Windows betaald, Raspbian OS heeft een volledig functioneel gratis versie.
(Voor introductie, zie en)
Bovendien wordt Raspbian OS vooraf geïnstalleerd met Node.js, Perl en Ruby.
Om gemakkelijk met code te kunnen werken, is op de Raspberry Pi een van de volgende voorgeïnstalleerd: beste redacteuren met syntaxisaccentuering en Geany-ontwikkelomgeving.

8. Herstel Framboos werkt Pi na crashes


Er kan zich een situatie voordoen waarin incompatibiliteit van nieuw geïnstalleerde hardware of software een fout veroorzaakt bij het opstarten van het systeem. Hoewel de Raspberry Pi 3-instellingen bijvoorbeeld een Open GL-optie hebben, zoals de praktijk heeft aangetoond, zal het inschakelen van deze optie een opstartfout van het systeem veroorzaken.
Zoals de praktijk heeft geleerd, heeft de Raspberry Pi verschillende herstelmogelijkheden na een opstartfout.

1) Terugdraaien naar de laatste backup kopie microSD-kaarten met Win32DiskImager.
Maak vaker images van de stabiele versie van het systeem met het programma Win32DiskImager en u weet zeker dat bij een storing het systeem binnen enkele minuten wordt hersteld.

2) Het configuratiebestand config.txt bewerken vanaf een microSD-kaart op een computer met behulp van een kaartlezer.
Als er bijvoorbeeld een fout is met Open GL, moet u de laatste regel “dtoverlay=vc4-kms-v3d” in het bestand config.txt van commentaar voorzien met het #-symbool, waarna het systeem normaal zal opstarten.

3) Externe verbinding met de Raspberry Pi via het netwerk via een SSH-terminal.
In veel gevallen, bijvoorbeeld in het geval van dezelfde laadfout bij het inschakelen van Open GL, slaagt de SSH-server er na het laden van de systeemkernel in om te starten en blijft werken in achtergrond. U kunt via een SSH-terminal inloggen op de Raspberry Pi-console, configuratiebestanden bewerken (boot/config.txt), of raspi-config uitvoeren en defecte opties uitschakelen.

4) Het systeem reinigen.

Pakketcache verwijderen:
sudo apt-word schoon
Verwijder verweesde pakketten:
sudo apt-get autoremove
Pakketlijst bijwerken:
sudo apt-get-update
Afhankelijkheden oplossen:
sudo apt-get -f installeren
Installeer het pakket opnieuw als de pakketinstallatie werd onderbroken
sudo apt-get install --installeer pakketnaam opnieuw

9. Afstandsbediening van Raspberry Pi (SSH/VNC)



Zoals elk Unix-systeem kan de Raspberry Pi op verschillende manieren op afstand worden bestuurd.
De eenvoudigste is beheer in de console via het SSH-protocol. Om dit mogelijk te maken, moet je naar de Raspberry Pi-instellingen gaan (sudo raspi-config), het menu-item "Interfacing-opties" selecteren, in het volgende venster "SSH" selecteren en bevestigen dat de SSH-server bij het opstarten is ingeschakeld. Het wordt aanbevolen om het standaardwachtwoord voor gebruiker "pi" onmiddellijk te wijzigen van "raspberry" naar iets anders dat ten minste 8 tekens bevat in de Engelse lay-out.
Vervolgens kunt u de gratis SSH-client PuTTY op een andere computer downloaden, uitvoeren en in de regel "Hostnaam (of IP-adres)" invoeren lokaal IP-adres Framboos Pi. Er verschijnt een verzoek om login in de console, gevolgd door een wachtwoord. Als alles correct is ingevoerd, verschijnt het welkomstbericht van de Raspberry Pi en een groene opdrachtinvoercursor. Via de SSH-terminal kunt u programma's installeren en verwijderen, bestanden kopiëren, verplaatsen en verwijderen, systeemconsole-opdrachten en -scripts uitvoeren (BASH, Python, Perl...) en werken met Raspberry Pi-configuratiebestanden. Kortom, voer alle verschillende bewerkingen uit die beschikbaar zijn in de console van Unix-systemen. Het is handiger om veel dingen in console-editors te doen, zoals de MC-bestandsbeheerder, die ook via een SSH-terminal werken.
Naast terminaltoegang tot de console heeft de Raspberry Pi de mogelijkheid ingebouwd om deze volledig te besturen in een grafische interface. Om dit te doen, wordt de Raspberry Pi vooraf geïnstalleerd met een gratis versie van de VNC-server. U kunt de autorun inschakelen op dezelfde plaats waar we eerder de SSH-server hebben ingeschakeld. U moet het volgende menu-item "Interfacing-opties" - "VNC" selecteren en het inschakelen van de server bevestigen. Voor volledige toegang tot de Raspberry Pi moet je een gratis VNC-viewer downloaden, starten en, net als bij SSH, het lokale IP-adres van de Raspberry Pi invoeren. Na het voltooien van de autorisatieprocedure wordt u naar de Raspberry Pi geleid, alsof u voor een daarop aangesloten beeldscherm staat, terwijl u op het toetsenbord drukt en met de muis klikt. De VNC-client is slechts iets langzamer dan de Raspberry Pi zelf. Menu's openen met bijna dezelfde snelheid, alleen grafische bestanden worden niet onmiddellijk getekend bij het openen, met een kleine vertraging van een fractie van een seconde.
Bij Verbinding op afstand naar Raspberry Pi via SSH en VNC is het alleen nodig dat het apparaat is aangesloten op het lokale netwerk en de stroomvoorziening. Het toetsenbord, de muis en de monitor mogen niet op de Raspberry Pi zijn aangesloten. Dit is handig bij het configureren van de Raspberry als webserver of IoT-server (smart home sensor management server).

Overigens zijn de afmetingen van het virtuele scherm in VNC standaard te klein: slechts 640x480 pixels. Hier is mijn kleine "hack" voor het instellen van een comfortabele schermresolutie (1024x768) bij het op afstand verbinden via VNC:

Laten we het Raspberry Pi-configuratiebestand openen om te bewerken:
sudo nano /boot/config.txt
Laten we het commentaar verwijderen (verwijder het #-symbool aan de linkerkant) en de volgende regels enigszins corrigeren:
hdmi_force_hotplug=1
hdmi_groep=2
hdmi_mode=16

10. Installatie van de LAMP Internet-ontwikkelaarssoftwarekit

Omdat ik niet de enige ben die gelooft dat internet de toekomst is, zou op de computer van een jonge programmeur een softwarepakket geïnstalleerd moeten zijn dat de mogelijkheid biedt om de basisprincipes van internetprogrammering en het maken en beheren van websites te leren. De algemeen aanvaarde standaard voor de internetontwikkelaarsomgeving in het Linux-besturingssysteem is een reeks programma's bestaande uit de Apache-webserver, MySQL SUDB en de programmeertaal PHP (LAMP). Voor het gemak van het databasebeheer wordt ook aanbevolen om de PHPMyAdmin-software te installeren (alle programma's worden gratis verspreid). Volg stapsgewijze instructies van de Raspberry Pi offsite, in een half uur LAMP en maximaal populair systeem WordPress sitebeheersystemen (CMS) werden op Malinka geïnstalleerd en geconfigureerd om te werken. Ik geef stapsgewijze instructies met uitleg, zodat dit proces u niet langer duurt dan bij mij het geval was.


1. De Apache2-server installeren (<1 мин)
sudo apt-get install apache2 -y
Apache-werking controleren
koppelingen2 http://192.168.0.100
Sitemap bekijken
cd /var/www/html
ls-al

2. PHP 5 installeren (1 min)
sudo apt-get install php5 libapache2-mod-php5 -y
sudo service apache2 opnieuw opstarten
Een testpagina maken
sudo rm index.html
sudo nano-index.php

PHP-werking controleren
koppelingen2 http://192.168.0.100

3. Mysql 5 installeren (3 min)
sudo apt-get install mysql-server php5-mysql -y
sudo service apache2 opnieuw opstarten

Rechten toewijzen aan een Apache-gebruiker
sudo chown -R www-data: .

Een MySQL-database maken
mysql -uroot -pwachtwoord
mysql> database wordpress maken;

Herschrijven van Apache-mod inschakelen
sudo a2enmod herschrijven

De mogelijkheid inschakelen om instellingen in .htaccess op te geven
sudo nano /etc/apache2/sites-available/000-default.c onf

Laten we de volgende code toevoegen

< VirtualHost *:80 >
< Directory "/var/www/html" >
Alles overschrijven toestaan
< /Directory >

4. PHPMyAdmin installeren (3 min)
sudo apt-get installeer phpmyadmin

5. Wordpress installeren

Wordpress downloaden

cd /var/www/html/

Wordpress uitpakken

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

Wordpress installeren en instellen
We gaan in de browser naar uw huidige adres, bijvoorbeeld http://192.168.0.100, of naar het adres http://localhost.
In de daarvoor bestemde velden geven we de naam, het adres (localhost), login en wachtwoord aan van de gebruiker van de database die u eerder hebt aangemaakt, de naam van de site, login en wachtwoord van de sitebeheerder (gebruik geen eenvoudige namen zoals “root” en “admin”, maak een wachtwoord aan dat niet korter is dan 8 tekens, met cijfers en letters in verschillende hoofdletters), evenals uw e-mailadres.
Een paar seconden nadat u uw gegevensinvoer heeft bevestigd, is Wordpress geïnstalleerd en klaar voor gebruik! Sets met noodzakelijke plug-ins, zoals cyr3lat, wp-edit, hyper-cache, wp-db-backup, enz., kunnen later worden geïnstalleerd door eenvoudigweg hun namen in te voeren in het zoekformulier op de pagina Plug-ins van de Wordpress Administrator-console.
Nu is de Raspberry Pi klaar om de thuiswebserver van de internetontwikkelaar te worden.

11. Inleiding tot Python

De objectgeoriënteerde geïnterpreteerde programmeertaal Python ontstond eind jaren tachtig en begin jaren negentig in het centrum van de wiskunde en informatica in Nederland dankzij de inspanningen van Guido van Rossum.
Aanvankelijk was de taal gericht op het vergroten van de productiviteit van ontwikkelaars en de leesbaarheid van de code.
Python wordt gekenmerkt door een minimalistische syntaxis met hoge functionaliteit, ondersteunt alle belangrijke programmeerparadigma's, ondersteunt dynamisch typen, automatische controle geheugen, afhandeling van uitzonderingen, multithreading, modulariteit.
Momenteel wordt Python actief gebruikt als universele omgeving voor wetenschappelijke berekeningen. In veel populaire programma's Er wordt gebruik gemaakt van 3D grafische applicaties zoals Blender, de Python-taal om de standaardmogelijkheden van de programma's uit te breiden.
Python wordt gebruikt in veel grote bedrijven zoals Dropbox, Google, Facebook, Instagram.
Een kenmerk van de Python-syntaxis is dat codeblokken ingesprongen zijn, zodat Python geen begin/eind-instructies of accolades heeft. Ook in Python zijn er geen expliciete regelafsluitingen zoals ";" zoals in Perl.
Een van de aantrekkelijke aspecten van Python is de rijke bibliotheek met standaardmodules. Naast de standaardbibliotheek zijn er vooral een groot aantal applicatiebibliotheken voor Python verschillende gebieden. Python heeft softwareframeworks ontwikkeld voor het ontwikkelen van webapplicaties, waarvan Django de meest populaire is.
Python wordt geleverd met de tkinter-bibliotheek voor het maken van platformonafhankelijke GUI-programma's. Python heeft ook extensies voor alle grote GUI-bibliotheken.
Er zijn Python-extensies voor het maken van games (Pygame), het werken met multimedia, 3D-modellering, grafische verwerking, plotten en astronomische berekeningen (Astropy).
Het installeren en bijwerken van Python-pakketten gebeurt via de PyPI-interface (Python Package Index). Modules worden aan het begin van programma's geactiveerd met het importcommando.
Python was oorspronkelijk bedoeld als de primaire programmeertaal voor de Raspberry Pi. Het is geen toeval dat devboard de symbolische uitgang “Pi” in zijn naam heeft.
Om te werken met externe sensoren die op de Raspberry Pi zijn aangesloten, zijn er verschillende bibliotheken, zoals RPi.GPIO, geschreven en vooraf geïnstalleerd in Raspberry Pi voor Python.
Samen met Python zijn de standaard IDLE-applicatieontwikkelings- en testinterface en de handige Geany-editor vooraf geïnstalleerd op de Raspberry Pi.
Er zijn veel handleidingen op internet om de Python-taal te leren kennen en kant-en-klare voorbeelden voor het maken van IoT-applicaties op de Raspberry Pi die zelfs voor basisschoolleerlingen begrijpelijk zijn.
Houd er rekening mee dat de meeste voorbeelden op internet zijn geschreven voor de versie van Python 2.x, die niet compatibel is met 3.X. Daarom zijn beide versies van Python vooraf geïnstalleerd op de Raspberry Pi. Ook inbegrepen bij Python 3.X is het “2to3”-programma (script), dat code van versie 2.x naar 3.X converteert.

Als gevolg hiervan heb ik, na het lezen van een paar online tutorials en een slim e-boek in het Engels dit weekend, een klein programma geschreven dat de frequentie van de meest populaire woorden op een sitepagina met een gespecificeerde URL berekende en later 'bijgevoegd'. een visuele interface ervoor gebaseerd op de Tkinter-bibliotheek. Ik heb nog nooit zo gemakkelijk, snel en prettig een applicatie met een grafische interface gemaakt...

(Voor een inleiding tot de basisprincipes van Python, zie en)

12. Werken met Python en GPIO, knipperende LED

Nadat u vertrouwd bent geraakt met de basissyntaxis en basisset commando's van de Python-taal, is de beslissende stap op het pad van fysiek computergebruik de oplossing van een ogenschijnlijk eenvoudige taak: "een LED laten knipperen."
Het was vanaf deze stap dat veel schoolkinderen, studenten en volwassen ‘geeks’ over de hele wereld hun reis in IoT-programmering begonnen.
Om dit te doen, moest ik eerst verschillende radiocomponenten aanschaffen: verschillende paren weerstanden van 100 tot 300 Ohm (zoals voorgesteld in de handleidingen) en verschillende LED's van verschillende kleuren (ik nam rood, blauw en wit). Tijdens het zoeken naar een geschikt radiostation bleek dat er in mijn stad slechts één specifiek punt radio-onderdelen verkoopt. De kosten van de onderdelen bleken laag (3-5 roebel per stuk).
Tijdens het monteren van een eenvoudig circuit bestaande uit een LED en een weerstand, ontdekte ik dat de 40-pins kabel naar mijn breadboard niet gemarkeerd was met een rode streep langs de rand, maar uit veelkleurige kabels bestond. Ik kon geen aansluitschema voor zo'n kabel op het breadboard en de Raspberry Pi 3 op internet vinden. Ik moest het GPIO-circuit openen en de kabelcontacten testen met een digitale tester om te begrijpen hoe ik deze moest aansluiten.
Het bleek ook dat de "kam" voor het aansluiten van de kabel op het breadboard geen aansluitingen heeft voor uitvoer naar de lijn voedsel broodplank, dus ik moest Ground op de kam verbinden met de min op het breadboard.
Nadat ik het circuit zo had samengesteld dat de lange pin (+) van de LED was verbonden met 21 GPIO-poorten, en de korte - via een weerstand van 100 Ohm - met aarde (-), lanceerde ik de Raspberry Pi 3 en verbond ernaartoe via VNC.
Ik heb een programma voor knipperende LED's flashpi.py gemaakt in IDLE3, beschreven op de website http://edurobots.ru/, en opgeslagen in de map /home/pi."
Ik heb het programma uitgevoerd met F5 in IDLE3 (je kunt het programma ook uitvoeren met het commando "sudo python3 flashpi.py" in LXTerminal) en... de LED lichtte niet op.
Na het controleren van alle contacten en de juiste montage van het circuit, realiseerde ik me dat het probleem niet in de hardware zat, maar in het softwaregedeelte van het systeem. Uit een voorbeeld in een van de e-books over Raspberry Pi 3 bleek dat in plaats van de opdracht
GPIO.setmode(GPIO.BOARD) u moet de poorten initialiseren met de opdracht GPIO.setmode(GPIO.BCM). Na het bewerken van de code en het starten van het programma, na het indrukken van Voer sleutels in De LED lichtte eindelijk helder op!
Door nogmaals op de Enter-toets te drukken, werd de LED uitgeschakeld. Door op een andere toets te drukken, werd het programma verlaten en werd het werk met de GPIO-poorten correct voltooid.
Hier is de code van het werkprogramma ("__" is vervangen door spaties - dit zijn de noodzakelijke inkepingen in Python):

Vanaf het kringloopsluitingswerk met GPIO

Nog nooit in mijn leven ben ik zo blij geweest met een brandende LED! En ik ben al lang niet meer zo gelukkig geweest! Zoals ik hoop dat 10 miljoen Raspberry Pi-kopers vroeg of laat dat deden, heb ik “met de LED geknipperd”! Bovendien “knipperde” het programmatisch!

Conclusie - afscheidswoorden voor jonge cybernetici

Ik hoop dat mijn lange maar spannende reis van 3 maanden, vanaf de beslissing om een ​​Raspberry Pi 3 single-board computer te kopen tot de software “blinking LED”, niet voor niets is geweest.
Hij liet mij kennismaken met de nieuwe wereld van Unix en fysiek computergebruik, en stelde tegelijkertijd een stapsgewijze handleiding op voor iedereen die daarin wil betreden (vooral leraren en middelbare scholieren) en creëerde een platform voor de verdere ontwikkeling van fysiek computergebruik, webprogrammering en systeem administratie. Gebaseerd op Raspberry Pi 3, die iets meer dan tweeduizend roebel kost. Het werd mogelijk om een ​​thuiswebserver en multimediacentrum te creëren, interessante oplossingen voor het automatiseren van routinetaken en complexere IoT-systemen, inclusief oplossingen voor het Smart Home-concept.
Voor mij persoonlijk was het op 43-jarige leeftijd een vermakelijk en lonend avontuur om de programmeertaal Python, die voor mij onbekend was, en een nieuw besturingssysteem onder de knie te krijgen, anders dan wat onder ons gebruikelijk is.
Aanvankelijk was ik van plan om mijn dochter voor haar verjaardag een Raspberry Pi 3-computer te geven, geconfigureerd en in werking getest, samen met een breadboard, radiocomponenten en een set van 16 sensoren, om te gebruiken als trainings-pc en een veelbelovend onderzoeksinstrument in de computerwetenschapsclub van een plaatselijk gymnasium. Ik sprak met de informaticaleraar af om hulp te bieden bij de aanschaf en implementatie van Raspberry Pi in buitenschoolse informaticalessen onder geïnteresseerde kinderen en Olympiadedeelnemers. Ik hoop, net als ik, dat Raspberry Pi mijn dochter en de kinderen op het gymnasium een ​​krachtige impuls zal geven in hun studie en ontwikkeling, en nieuwe kansen zal openen om zichzelf en de wereld om hen heen ten goede te veranderen met behulp van moderne technieken. technologieën.

Om beslissingen te nemen, bijvoorbeeld bij taken op het gebied van de technische controle van apparaten, is het noodzakelijk om te beschikken over informatie die uit sensoren kan worden verkregen. Sensoren kunnen op grote afstand van elkaar en van het controlecentrum worden geplaatst. Daarom kunt u internet gebruiken om toegang te krijgen.

Om op afstand toegang te krijgen tot sensoren, is het mogelijk om microcontrollers of minicomputers met één bord te gebruiken. In dit werk wordt aangenomen dat minicomputers met één bord het probleem van de toegang tot sensoren kunnen oplossen. Momenteel zijn de meest populaire en gekochte Raspberry Pi 2, Banana Pi 2 en Orange Pi PC (zie figuur 1).

Figuur 1. Eén betaalde minicomputers

Deze computers zijn verenigd door:

  1. Kleine formaten, ongeveer zo groot als een creditcard;
  2. Quad-coreprocessor die op alle computers draait op ongeveer 1-1,2 GHz;
  3. RAM-geheugen 1 GB;
  4. SD-kaart in plaats van een schijf voor het laden van het besturingssysteem en programma's;
  5. Ethernet-poort voor verbinding met het netwerk;
  6. HDMI-uitgang voor het aansluiten van een monitor of tv;
  7. USB-poorten voor het aansluiten van bijvoorbeeld toetsenborden, muizen, flashgeheugen.
  8. Linux-besturingssysteem;
  9. En het allerbelangrijkste: een 40-pins GPIO-poort waarop apparaten en sensoren die moeten worden aangestuurd, worden aangesloten.

De belangrijkste taak is het kiezen van een computer voor afstandsbediening.

  1. Kosten (vanaf 25-02-2016, website http://ru.aliexpress.com met levering):

Framboos Pi 2 – $ 36,99;

Banana Pi 2 (BPI-M2 A31S) – $ 50,21

Oranje Pi-pc – $ 18,99

  1. Processor + geheugensnelheid:

Volgens computertests met 4 cores

Banaan Pi 2 (BPI-M2 A31S);

Framboos Pi 2.

Bij gebruik van één kern voor rekenwerk(taak is niet geparallelliseerd)

Banaan Pi 2 (BPI-M2 A31S);

Framboos Pi 2.

Ze merken op dat Orange Pi 3 kernen heeft, de 4e start niet altijd.

3. Technische ondersteuning en beschikbaarheid van foutopsporingssoftware:

Framboos Pi 2 - (1); Banaan Pi 2 - (2); Oranje Pi pc - (3).

Orange Pi pc beschikt nog niet over de belangrijkste vereiste voor het beheren van apparaten: softwareondersteuning voor de GPIO-poort.

Afstandsbediening van sensoren en apparaten kan worden uitgevoerd met behulp van microcontrollers:

  1. Arduino Mega256 met Ethernet Shied w5100 – $12-15;
  2. Arduino nano met enc28j60 netwerkcontroller – $8-9;
  3. ESP8266-12 – $2-3;

De ervaring leert dat microcontrollers goed werken in een lokaal netwerk, in globaal netwerk Wanneer pakketten verloren gaan, wordt de controle onbetrouwbaar. Minicomputers draaien op Linux OS, dat goed gedebugde netwerkprotocollen heeft. Is mogelijk hoge graad bescherming voor toegang tot het beheerde systeem. Microcontrollers beschikken niet over voldoende middelen voor goede protocollen en bescherming tegen hacking.

Op basis van het bovenstaande wordt een Raspberry Pi 2-minicomputer gebruikt voor het werken op afstand met sensoren. Als voorbeeld overwegen we om de BMP180 druk- en temperatuursensor aan te sluiten op de I2C-computerbus. De volgende problemen moeten worden opgelost:

Bij verbinding met een computer via een browser moeten de druk en temperatuur op het scherm worden weergegeven. Hun waarden moeten elke 5 seconden veranderen.

Het Python-script moet elke 5 minuten de druk en temperatuur in bestanden registreren. Ze worden gebruikt voor het plotten van grafieken.

Het is noodzakelijk om apparaatbeheer te voorzien, zelfs als het geen echt IP-adres (DNS-naam) heeft. Het enige wat u nodig heeft is een internetverbinding, bijvoorbeeld via een standaard ADSL-modem waarop NAT is geïnstalleerd.

Laten we eens kijken naar de volgorde van het oplossen van het probleem.

1. Installatie van het Raspbian-besturingssysteem.

Om dit te doen, moet u de afbeelding van het RASPBIAN JESSIE-besturingssysteem van de site https://www.raspberrypi.org/downloads/raspbian/ kopiëren, bijvoorbeeld naar een computer met Windows-besturing 8.1. Pak dit bestand uit. Kopieer het Win32DiskImager-schijfhulpprogramma van de site http://sourceforge.net/projects/win32diskimager en pak het uit. Installeer de SD-kaart op uw computer en gebruik deze schijfhulpprogramma installeer de image van het besturingssysteem op de SD. Hierna wordt deze SD-kaart in de Raspberry Pi-computer geïnstalleerd. U moet een monitor, toetsenbord, muis en Ethernet-kabel op uw computer aansluiten. Na het aansluiten van de stroom start de computer automatisch op en verschijnt er een menu op het scherm vooraf ingesteld, die wordt gegenereerd door raspi-config. De opties voor dit bestand staan ​​in de link https://www.raspberrypi.org/documentation/configuration/raspi-config.md

2. Een statisch IP-adres toewijzen aan de Raspberry Pi

Raspberry Pi presteert webfunctie- server, dus deze moet een statisch IP-adres hebben. Voor deze:

Wijzig de inhoud van het bestand /etc/network/interfaces in

iface lo inet loopback

iface eth0 inet statisch

adres 172.20.0.138

netmasker 255.255.0.0

gateway 172.20.200.1

dns-naamservers 8.8.8.8

Verwijder dhcpcd5 volledig van het systeem door de opdracht uit te voeren

sudo apt-get purge dhcpcd5

3. De volgende stap is het installeren van het WebIOPi Framework.

Het WebIOPi-framework is een softwarepakket dat speciaal is ontworpen voor de Raspberry Pi voor apparaatbeheer op afstand. Samen met Raspberry Pi 2 implementeert het Internet of Things-technologie. Met het WebIOPi-pakket kunt u verschillende maatwerkapplicaties maken.

WebIOPi heeft de volgende kenmerken:

Ingebouwde webserver geïmplementeerd in Python

Ingebouwde ondersteuning voor meer dan 30 apparaten met UART-, SPI-, I2C-, 1-Wire-interfaces

Javascript/HTML-bibliotheken voor het maken van een webinterface

Python/Java-bibliotheken voor het bouwen van Android-applicaties

Ondersteunt het CoAP-protocol, ontworpen voor controle en interactie tussen eenvoudige elektronische apparaten via een netwerk.

WebIOPi is open source en kan door de gebruiker worden aangepast. Hierdoor kunt u het aantal op te lossen taken vergroten. Om het pakket voor een specifieke taak aan te passen, wordt het configuratiebestand aangepast. GPIO-pinnen waarmee apparaten zijn verbonden, worden bijvoorbeeld naar dit bestand geschreven. Als er sensoren worden gebruikt, worden deze ook in het configuratiebestand ingevoerd. In sommige gevallen is het echter nodig om het apparaatstuurprogramma in te schakelen (bijvoorbeeld de bmp180-sensor). Overweeg om versie 0.71 van WebIOPi te installeren. Deze nieuwe versie ondersteunt Raspberry Pi 2 goed, die een 40-pins GPIO-poort heeft. Om WebIOPi te installeren, ga je naar Raspberry Pi 2 via poort 22 stopverf programma's(login - pi, wachtwoord - framboos) en voer in de terminal de volgende opdrachten één voor één in:

$ wget http://sourceforge.net/projects/webiopi/files/WebIOPi-0.7.1.tar.gz

$ tar xvzf WebIOPi-0.7.1.tar.gz

$cd WebIOPi-0.7.1

Installeer de patch om te werken met 40 GPIO Raspberry Pi 2:

$wget https://raw.githubusercontent.com/doublebind/raspi/master/webiopi-pi2bplus.patch

$ patch -p1 -i webiopi-pi2bplus.patch

$ sudo./setup.sh

Om WebIOPi automatisch te starten nadat het systeem opnieuw is opgestart, moet u de opdracht uitvoeren (geldig voor de afbeelding 2015-05-05-raspbian-wheezy.img):

sudo update-rc.d webiopi standaardwaarden

Voor latere versies wordt het automatisch opstarten als volgt uitgevoerd:

$ cd /etc/systemd/system/

$ sudo wget https://raw.githubusercontent.com/doublebind/raspi/master/webiopi.service

$ sudo systemctl start webiopi

$ sudo systemctl webiopi inschakelen

Vervolgens herstarten we de Raspberry Pi 2:

Nu moet u de werking van WebIOPi controleren. Vanaf elke computer op het lokale netwerk bellen we het netwerkadres dat is toegewezen aan de Raspberry Pi 2, wat poort 8000 aangeeft. Bijvoorbeeld:

http://172.20.0.138:8000/app/gpio-header

Om toegang te krijgen tot WebIOPi moet u uw gebruikersnaam en wachtwoord invoeren in het geopende formulier. De standaard login is “webiopi” en het wachtwoord is “framboos”. De browser geeft de WebIOPi-programma-interface weer, die de nummers van de 40 pinnen van de GPIO-poort en hun doel toont. Om de login en het wachtwoord te wijzigen, voert u de opdracht in:

sudo webiopi-wachtwoord

Om WebIOPi voor deze taak te configureren, moet u de BMP180 druk- en temperatuursensor registreren in het configuratiebestand /etc/webiopi/config Webiopi in de sectie:

Figuur 2 toont een diagram van het aansluiten van de sensor op de pinnen van de GPIO-poort.

Fig. 2. BMP180 verbinden met GPIO

U moet de regel toevoegen aan het bestand /boot/config.txt

dtparam=i2c_arm=aan

Het wijzigen van het Webiopi-wachtwoord gebeurt met de opdracht

U kunt de functionaliteit van de temperatuursensor controleren door verbinding te maken met:

http://172.20.0.138:8000/app/devices-monitor

De temperatuur- en drukwaarde van de sensor moeten in de browser verschijnen (Fig. 3).

Afb.3. Gegevens gelezen van BMP180-sensor

Om WebIOPi opnieuw te laden nadat u wijzigingen in het configuratiebestand hebt aangebracht, slaat u Python en over html-bestand, je moet:

/etc/init.d/webiopi opnieuw opstarten

Foutmeldingen bij het uitvoeren van Webiopi bevinden zich in het bestand /var/log/webiopi. Het kan worden afgedrukt met behulp van het commando:

cat /var/log/webiopi

4. Maak een index.html-bestand en een Python-script script.py

De behoefte aan deze bestanden is als volgt. Een HTML-pagina doet met behulp van JavaScript een verzoek aan een script (subroutine) geschreven in Python, en Python stuurt op zijn beurt de ontvangen gegevens van de BMP180-sensor terug naar de HTML-pagina voor visualisatie. Elke 5 minuten registreert het script druk- en temperatuurwaarden tekstbestand. Dit bestand wordt gebruikt om druk- en temperatuurgrafieken in de loop van de tijd uit te zetten.

In de map /home/pi/myproject/html maken we een bestand index.html, waarvan de inhoud wordt weergegeven in figuur 4. En in de map /home/pi/myproject/python maken we een bestand script.py in Python, getoond in afb. 5

Afb.4. Index.html-bestand

Het press.html-bestand wordt getoond in Fig. 6. Het bestand temp.html voor het genereren van een temperatuurgrafiek ziet er hetzelfde uit.

Afb.5. script.py-bestand

Afb.6. Press.html-bestand voor het genereren van een drukgrafiek

HTML-bestanden press.html en temp.html voor het plotten van druk- en temperatuurgrafieken gebruiken de kant-en-klare dygraph-bibliotheek, die is geschreven in JavaScript. Het bestand dygraph-combined-dev.js van deze bibliotheek wordt van de site gekopieerd

http://dygraphs.com naar de map /home/pi/myproject/html.

Nadat de computer opnieuw is opgestart, werkt WebIOPi volgens de gepresenteerde scripts. Als u er via een browser verbinding mee maakt, wordt informatie over druk en temperatuur weergegeven zoals in Figuur 7.

Afb.7. Gegevens ontvangen van de BMP180-sensor

Afb.8. Drukgrafiek verkregen met behulp van de dygraph-bibliotheek

5. Internetverbinding Frambozencomputer Pi 2, als deze geen echt IP-adres of domeinnaam heeft, maar wel toegang heeft tot internet (via een modem, router, firewall).

Eén manier om toegang te krijgen tot de Raspberry Pi als een Internet of Things-apparaat is door de Weaved-service te gebruiken. Het biedt de volgende diensten:

SSH - hiermee kunt u overal ter wereld via SSH inloggen op uw Raspberry Pi;

Web (http) op poort 80 - u kunt overal ter wereld webpagina's bekijken die op de Raspberry Pi worden gehost;

WebIOPI - hiermee kunt u de GPIO-pinnen van de Raspberry Pi-poort bedienen met behulp van door de gebruiker ontwikkelde software.

Voordat u Weaved installeert, is het raadzaam om een ​​directory /home/pi/myproject/my aan te maken, daarheen te gaan en daar met Weaved-bestanden te werken.

Weaved op Raspberry Pi installeren:

U heeft een account nodig op de website https://developer.weaved.com/portal/login.php;

Verbind Raspberry Pi 2 met internet;

Download geweven software op Raspberry Pi:

wget https://github.com/weaved/installer/raw/master/binaries/weaved-nixinstaller_1.2.13.bin

Maak het bestand weaved-nixinstaller_1.2.13.bin uitvoerbaar:

chmod +x geweven-nixinstaller_1.2.13.bin

Voer het installatieprogramma uit:

./weaved-nixinstaller_1.2.13.bin

Selecteer een dienst

Wanneer u het programma voor het eerst start, wordt u gevraagd een van de services te installeren: SSH op poort 22, Web (HTTP) op poort 80, WebIOPi op poort 8000, VNC op poort 5091 (getest met tightvncserver) of aangepast TCP op de geselecteerde poort.

Hier selecteren we de 3e service, Web (HTTP) op poort 8000.

Voer uw Weaved-inloggegevens in (vul het account in dat u op de Weaved-website heeft ontvangen).

Wij controleren of er een nieuw apparaat is aangemaakt:

Ga naar https://developer.weaved.com/portal/login.php en voer uw account in. Na het inloggen zou de volgende pagina moeten verschijnen (Fig. 9), waar de naam van het aangemaakte apparaat wordt aangegeven:

Afb.9. Lijst met gemaakte services

Conclusies.

  1. Hoge betrouwbaarheid van het besturen van sensoren (apparatuur) op afstand met behulp van minicomputers via internet vergeleken met microcontrollers. Netwerkprotocollen op microcontrollers zijn ze licht van gewicht, dus werken ze niet zo betrouwbaar.
  2. De hoge kosten van besturingssystemen op minicomputers via een netwerk vergeleken met microcontrollers.
  3. Eenvoudige systeemprogrammering netwerkbeheer voor minicomputers, dankzij ontwikkelde software zoals WeBIOPi.
  4. De mogelijkheid om via internet toegang te krijgen tot minicomputers als het onmogelijk is om echte IP-adressen en domeinnamen te gebruiken.
  5. Er zijn problemen geconstateerd bij het werken met de BMP085-module voor de BMP180-druksensor. Na enkele bedrijfsuren stopt de WebIOPi-webserver met werken. In plaats van te werken met de BMP085-module

van webiopi.devices.sensor.bmp085 importeer BMP085

Het is beter om de deviceInstance-module te gebruiken

van webiopi import deviceInstance

bmp = webiopi.deviceInstance("bmp")

Hier ("bmp") is het verkrijgen van het apparaat met de naam bmp, dat zich in het bestand bevindt

/etc/webiopi/config, in sectie .

  1. Minicomputers maken het niet alleen mogelijk om data van sensoren te ontvangen, maar ook om deze te verwerken. Een voorbeeld is de constructie van grafieken van veranderingen in waarden van sensoren.

Literatuur.

  1. WebIOPi - Het Raspberry Pi Internet of Things-framework. . - Toegangswijze: http://webiopi.trouch.com/, 2016.
  2. Internet der dingen voor iedereen. . - Toegangswijze: https://www.weaved.com/, 2016.
  3. Compleet domoticasysteem op Raspberry Pi. . - Toegangswijze: http://electromost.com/, 2014.
  4. Myasishchev A.A. Internet-stopcontact op basis van een Raspberry Pi-minicomputer en het WebIOPi-framework. Oefenen voor studenten. . - Toegangswijze: https://sites.google.com/site/webstm32/internet_rozetka, 2016.

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,3V- en 5V-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 aan te sturen soortgelijke apparaten. 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 u 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)

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. Gebruikt in in dit geval 5 mm LED's verbruiken 20 mA stroom. 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 (toename) 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 vrij eenvoudig. Hoewel er niet zoveel zijn als de Arduino, maar gecombineerd met de rekenkracht van het systeem-op-chip, zal deze minicomputer nuttig zijn bij