GPIO-lijnen beheren op Raspberry Pi. Raspberry Pi: LED-bediening

Figuur 1. Blokdiagram van systeemhardware

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 van de USB-kabel af te knippen en de draden aan te sluiten op de overeenkomstige pinnen op de voeding, en steek de micro-USB-connector in de voedingsconnector van de RPi. 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 naar 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 Raspbian-besturingssysteemimage te installeren. Voordat u begint met het installeren van de image van het besturingssysteem, moet u een beeldscherm voorbereiden dat HDMI ondersteunt, een toetsenbord en een muis USB-connectoren, evenals een netwerkkabel voor aansluiting op het systeem via het Ethernet-protocol. U kunt ook een verbinding met het systeem tot stand brengen via 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. Het Raspbian-besturingssysteemimage is gebaseerd op softwarepakketten van de 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 het installeren van Webmin 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. Je kunt vinden gedetailleerde instructies op de bron http://www.raspberrypi.org/documentation/configuration/wireless. Ik raad aan om de optie wicd-cursussen te gebruiken. Op in dit stadium u kunt de parameters wijzigen Raspberry-instellingen Pi met behulp van 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 kunt instellen, zoals de hoeveelheid RAM die wordt gedeeld met de GPU, CPU-snelheidsparameters, de modus voor het gebruik van de GUI tijdens het opstarten proces, en anderen.

Aan anderen 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. Colud 9 IDE vereist specifieke versie 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 maken met behulp van HTML5-, CSS3- en JavaScript-technologieën. De combinatie van de drie genoemde technologieën is dat wel krachtig hulpmiddel om gebruikersinterfaces te creëren. Taal JavaScript-programmering Hiermee 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. Trapsgewijze tafels CSS-stijlen handig voor het stylen van verschillende elementen HTML-pagina's. Als ze correct worden gebruikt, kunt u dynamische gebruikersinterfaces creëren door de stijlen van pagina-elementen te wijzigen wanneer bepaalde gebeurtenissen plaatsvinden. Voor dit project Ik heb gekozen voor JQuery om gebeurtenissen af ​​te handelen, Bootstrap CSS om de knoppen in een raster te plaatsen en JavaScript om de WebSocket API-communicatiemechanismen te implementeren.

Bibliotheken

Een serverapplicatie die op Raspberry Pi-niveau draait, moet de status van de GPIO-pinnen van het Raspberry Pi-bord controleren. 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 dergelijke specifieke functionaliteit, dus besloot ik mijn eigen serverimplementatie te maken met behulp van de taal Python-programmering. 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 beschikbaar om HTTP-server en voor het werken met de WebSockets-interface. 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

Om te leren programmeren in het Raspbian OS zijn de pakketten Python, Scratch, Node-RED, SonicPi en Wolfram Mathematica vooraf geïnstalleerd. 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 om letterlijk alles op te lossen praktische problemen fysiek computergebruik en wetenschappelijk computergebruik.
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 de populaire Minecraft-spellen Pi- en Python-bibliotheken voor spelbesturing. (Voor introductie, zie en)
Node-RED is een visuele editor van IBM met open broncode om het “Internet der Dingen” te creëren, waarmee men vrij complexe toepassingen voor systemen zoals “smart home” vrijwel zonder programmeren kan “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 zijn de meest complete systemen voor geavanceerd technisch computergebruik ter wereld. Dat zal ze doen een onmisbare assistent voor technisch computergebruik 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 nieuwste microSD-kaartback-up 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 op te starten en op de achtergrond te blijven werken. 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 bediening in de console door 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 alleen nodig dat het apparaat is aangesloten lokaal netwerk en energienetwerken. 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 de standaardmaten virtueel scherm in VNC zijn 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 DBMS en de taal PHP-programmering(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-website, 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. 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;

Inschakelen Apache-mod herschrijven
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" >
ToestaanAlles overschrijven
< /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.
Geef in de daarvoor bestemde velden de naam, het adres (localhost), de gebruikersnaam en het wachtwoord op van de gebruiker van de database die u eerder hebt gemaakt, de naam van de site, de gebruikersnaam en het wachtwoord van de sitebeheerder (gebruik niet eenvoudige namen typ "root" en "admin", maak een wachtwoord aan van minimaal 8 tekens, met cijfers en letters in verschillende hoofdletters), evenals uw e-mailadres.
Een paar seconden na bevestiging van de invoer WordPress-gegevens wordt geïnstalleerd en klaar voor gebruik! Sets van 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 van de Plug-ins-pagina 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 3D-afbeeldingen zoals Blender, wordt de Python-taal gebruikt om uit te breiden standaard kenmerken programma's.
Python wordt in veel toepassingen gebruikt grote bedrijven, zoals Dropbox, Google, Facebook, Instagram.
Een kenmerk van de Python-syntaxis is dat codeblokken ingesprongen zijn. Daarom heeft Python geen begin/eind en beugel. 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 een groot aantal applicatiebibliotheken voor Python op de meest uiteenlopende gebieden. Python heeft softwareframeworks ontwikkeld voor het ontwikkelen van webapplicaties, waarvan Django de meest populaire is.
Python wordt geleverd met de tkinter-bibliotheek waarmee u platformonafhankelijke programma's kunt maken grafische interface. 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.
Python is vooraf geïnstalleerd op de Raspberry Pi standaardinterface ontwikkeling en testen van IDLE-applicaties en handige editor Geanimeerd.
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, zelfs begrijpelijk voor basisschoolleerlingen.
Houd er rekening mee dat de meeste voorbeelden op internet zijn geschreven voor Python 2.x, wat 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 berekende met de opgegeven URL 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 had voor uitvoer naar de voedingslijn van het breadboard, dus moest ik de aarde op de kam aansluiten op de min op het breadboard.
Nadat ik het circuit zo had samengesteld dat de lange pin (+) van de LED was verbonden met de 21 GPIO-poorten, en de korte - via een weerstand van 100 Ohm - met de aarde (-), lanceerde ik de Raspberry Pi 3 en ermee verbonden via VNC.
Ik heb een programma gemaakt voor knipperende LED's flashpi.py 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 uitvoeren van het programma, na het indrukken van de Enter-toets, lichtte de LED 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 werkprogramma("__" is vervangen door spaties - dit zijn 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 me kennismaken met de nieuwe wereld van Unix en fysiek computergebruik, en bereidde me tegelijkertijd voor stap voor stap handleiding voor iedereen die eraan wil deelnemen (voornamelijk voor leraren en middelbare scholieren) en een platform heeft gecreëerd voor de verdere ontwikkeling van fysiek computergebruik, webprogrammering en systeembeheer. Op Op basis van frambozen Pi 3 kost iets meer dan tweeduizend roebel. werd mogelijke creatie thuiswebserver en multimediacentrum, interessante oplossingen over de automatisering 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.

In dit artikel zullen we kijken naar het besturen van de in-/uitgangen (GPIO) van de Raspberry Pi-microcomputer via de webinterface. Hierdoor is het mogelijk om via internet diverse apparaten te bedienen.

Kenmerken van dit project:
- serverprogramma draait op Raspberry Pi om GPIO-waarden te lezen
- gebruik MySQL-databases gegevens voor het opslaan van de GPIO-status
- Apache2-webserver gebruiken om GPIO via webbrowser te bedienen

Het eerste dat u op uw Raspberry Pi moet installeren, is dus:
- Apache-webserver
-PHP5
- MySQL-server
- phpMyAdmin (er is een Russische versie)

Omdat Frambozen microcomputer Pi draait op Linux-systemen, dus het internet staat vol met beschrijvingen in het Russisch over hoe je al deze pakketten kunt installeren. Daarom zullen we hier niet over uitweiden. Er zijn goede instructies voor de Raspberry Pi, maar Engels: lezen.

Volledige root-toegang
Om te ontvangen volledige wortel toegang, moet u de opdracht in de terminal typen sudo -ik, waarmee de gebruiker als root naar een sessie wordt overgebracht.

Als je het root-account al hebt ingeschakeld, kun je verder overslaan, zo niet, dan moet je na het commando sudo -i een wachtwoord instellen voor de root-gebruiker, dit doe je met het commando wachtwoordroot. Voer vervolgens het wachtwoord 2 keer in. Nu kunt u de SSH-sessie sluiten en opnieuw inloggen als root.

Database-instelling

Om het werk te vereenvoudigen, zullen we alle acties met MySQL uitvoeren vanuit de phpMyAdmin-shell.

Download dit SQL-bestand om aan de slag te gaan. Het bevat opdrachten om de database, tabellen en hun inhoud te maken. Log vervolgens in op phpMyAdmin en selecteer Importeren op de tabbladen. Selecteer bestand gpio.sql op uw schijf en klik op Ga naar importeren. Hierna zal phpMyAdmin de database, tabellen en gegevens daarin aanmaken.

Voer gebruikersnaam in gpi(het is wenselijk dat deze overeenkomt met de databasenaam), Host - localhost en 2 keer het wachtwoord.

Vervolgens gaan we naar de lijst met gebruikers, zoeken de onze en klikken op de link Rechten bewerken. Zoek en selecteer op het tabblad Databasespecifieke rechten in de vervolgkeuzelijst onze gpio-database. En klik vervolgens op Ga.

Klik op Alles controleren om de gpio-gebruiker alle rechten op de gpio-database toe te wijzen.

Hiermee is de installatie en configuratie van de database voltooid.

Shell-script

Download het script door de volgende opdrachten in te voeren:
sudo -ik
wget http://raspberrypi-gpio.googlecode.com/files/GPIOServer.sh

Nadat het script is gedownload, voert u de opdrachten uit om bestandsrechten in te stellen en het script te bewerken in de nano-editor:
chmod +x GPIOServer.sh
nano GPIOServer.sh

In lijnen mysqlusername="GEBRUIKERSNAAM HIER" En mysqlpassword="WACHTWOORD HIER" u moet hiervoor de gebruikersnaam (gpio) en het wachtwoord invoeren.

Sla vervolgens de wijzigingen in het bestand op door op ctrl+x te drukken, gevolgd door y en enter.

Een webpagina opzetten

Nu moet u de bestanden downloaden om de webinterface te laten werken. Log in als root en voer de volgende opdrachten uit:
wget http://raspberrypi-gpio.googlecode.com/files/control.php
wget http://raspberrypi-gpio.googlecode.com/files/off.jpg
wget http://raspberrypi-gpio.googlecode.com/files/on.jpg

Nadat deze bestanden zijn gedownload, typt u:
mv control.php /var/www/control.php
chmod 755 /var/www/control.php
mv off.jpg /var/www/off.jpg
chmod 755 /var/www/off.jpg
mv op.jpg /var/www/on.jpg
chmod 755 /var/www/on.jpg

Met deze opdrachten verplaatsen we de bestanden naar de www-map en stellen we de juiste rechten daarvoor in.

We vinden de volgende regels:
$MySQLUsername = "GEBRUIKERSNAAM HIER";
$MySQLPassword = "WACHTWOORD HIER";

en voer de gebruikersnaam en het wachtwoord in.

Open het control.php-bestand in de browser (voor mij ziet het volledige pad eruit als http://raspberryPi/control.php)
Als er om toestemming wordt gevraagd, dan:
Gebruikersnaam: beheerder
Wachtwoord: gpi

Als je een Raspberry Pi koopt, koop je alleen maar printplaat, die zelfs zonder voeding en besturingssysteem wordt geleverd. Dit artikel is bedoeld om je een idee te geven hoe je je Raspberry Pi instelt, zodat je hem kunt gaan gebruiken.

Raspberry Pi is een minicomputer met veel poorten waarop verschillende randapparatuur kan worden aangesloten. Via kunt u een aparte monitor aansluiten HDMI-poort en toetsenbord en muis via USB-aansluitingen, bovendien beschikt de Raspberry Pi over een Ethernet-poort, zodat u internet kunt gebruiken in uw Raspberry Pi-projecten.

Deze handleiding leidt u door een reeks stappen waarmee u uw Raspberry Pi op uw laptop of desktop kunt aansluiten, waardoor u geen aparte apparaten voor de Raspberry Pi meer nodig heeft.

Hardware en software

  • 1x;
  • 1 x Ethernet-kabel;
  • 1 x laptop of desktop-pc;
  • 1 x SD-kaart ( minimale maat 4GB);
  • 1 x micro-USB-kabel (om de Raspberry Pi van stroom te voorzien).

Voordat we verder gaan, zullen we nodig hebben software die moet worden gedownload. Hieronder vindt u een lijst met software en links waar u deze gratis kunt downloaden:

  • Raspbian-besturingssysteem: wanneer u een Raspberry Pi koopt, heeft u (in sommige winkels) de mogelijkheid om een ​​besturingssysteem te kopen dat vooraf op de SD-kaart is geïnstalleerd, of eenvoudigweg een zip-bestand te downloaden van https://www.raspberrypi.org/downloads/ bevat de Raspbian OS-image, om deze naar uw SD-kaart te schrijven;
  • SDFormatter: De SD Card Association heeft zeer goede software die kan worden gebruikt om uw SD-kaart te formatteren. Bezoek https://www.sdcard.org/downloads/formatter_4/index.html en download SDFormatter voor uw besturingssysteem;
  • Win32DiskImager: Om Raspbian OS op je SD-kaart te branden, heb je nodig nuttig nut Win32DiskImager. Je kunt het hier downloaden;
  • : U moet het IP-adres van uw Raspberry Pi bepalen wanneer u deze op uw computer aansluit. Download gewoon dit programma http://www.advanced-ip-scanner.com/;
  • Stopverf: PuTTy is SSH-client, die zal worden gebruikt om verbinding te maken met de Raspberry Pi. Je kunt het hier downloaden http://www.putty.org/;
  • VNC: En de laatste is een VNC-server. Je kunt het hier downloaden https://www.realvnc.com/download/.

Nadat u al deze software hebt gedownload, pakt u deze uit en installeert u deze.

Installatie van besturingssysteem

  1. Plaats de SD-kaart in de kaartlezer en controleer welke letter aan de schijf is toegewezen.
  2. Open Win32DiskImager. Mogelijk moet u het als beheerder uitvoeren.
  3. Selecteer de afbeelding van het uitgepakte Raspbian-besturingssysteem.
  4. Selecteer de letter die aan uw SD-kaart is toegewezen in de vervolgkeuzelijst met apparaten. Zorg ervoor dat u de juiste stationsletter selecteert om beschadiging van gegevens op een ander station te voorkomen.
  5. Klik Schrijf op(Schrijven) en wacht tot het voltooid is.
  6. Sluit Win32DiskImager, verwijder de SD-kaart en plaats deze in de Raspberry Pi.

Opmerking: nadat u het besturingssysteem hebt gebrand, zult u merken dat er nog maar een paar megabytes over zijn op de SD-kaart. Dit komt omdat de partitie is aangemaakt, de rest van de vrije ruimte is verborgen. Je kunt dit oplossen zodra we verbinding maken met de Raspberry Pi.

Gedeeld internet via Ethernet-poort

Zodra de SD-kaart gereed is, plaatst u deze in de Raspberry Pi. Verbinden USB-kabel voeding. En verbind ook de Raspberry Pi en de laptop met een ethernetkabel.

Als je de Raspberry Pi aansluit op een router met internettoegang, kun je deze stap overslaan.

Het IP-adres controleren dat aan uw Raspberry Pi is toegewezen

Het is eenvoudig: zorg ervoor dat uw Raspberry Pi is aangesloten Ethernet-netwerken uw computer (rechtstreeks of via een router). Als alles goed werkt, zie je de LED's op het bord knipperen.


Verbinding maken met Raspberry Pi via PuTTy

Geweldig! Voordat we verder gaan, laten we eens kijken wat we tot nu toe al hebben gedaan.

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 - gewoon door 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-kaarten heeft slechte zekeringen (Fig. 2), waardoor bijna alle USB-randapparatuur moet worden aangesloten via een USB-hub met extra voedsel. 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

Basis besturingssysteem op op 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 behulp van 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, moet u eerst proberen de SD-kaart te vervangen.

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

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 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 'Werkende apparaten' staat, betekent dit niet dat deze niet zal werken, maar het is zeker niet de moeite waard om een ​​camera uit de tweede lijst 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 met behulp van Afbeelding Kijker. 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 starten:

$ 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 heeft rootrechten nodig om de havens te beheren. 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.

Afbeeldingen van de camera worden opgeslagen in de map /tmp/motion, het standaardformaat voor individuele afbeeldingen is jpg, voor video's - swf. Het formaat kan worden gewijzigd 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 kun je een actuator zonder problemen op een eenvoudige PC aansluiten, maar waarom zou je niet een PC in de keuken laten staan? 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 vinden: Aanvullende informatie er zijn 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 vanaf de 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" >

Uitvoer van waarden:

$ 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="on" else OLD_VALUE_TEXT="off" 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 stroomstoten te verwijderen wanneer het relais is uitgeschakeld.

Er wordt een ander relais gebruikt (daarover later meer) en een transistor met een diode - die aanwezig 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 van de opties die geschikt zijn voor dergelijke vereisten is het TRIL-5VDC-SD-2CM-R-relais, bestuurd vanaf 5 V en in staat om tot 8 A te schakelen AC 250 V.

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 gerouteerd en stroom wordt geleverd aan de kabels naar randapparatuur, zodat tot nu toe slechts één, geen 26-, maar 4-draads trein 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

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, weigeren toestaan ​​van alles

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 er beweging wordt gedetecteerd, voegt u de start van Beweging op een gespecificeerd tijdstip in de ochtend toe, 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 goede keuze, waar je naartoe kunt gaan, kijken en aanraken, maar het is niet goedkoop; 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 uitvoeren via SMS door een 3G-modem aan te sluiten, of vanaf een gewone telefoon via DTMF door Asterisk of Freeswitch te installeren. 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 je op 1 april nadenken volledige ondersteuning RFC 2324-standaard.