Raspberry PI en GPIO pinnen: Beheersing van een LED met Bash en Python

In de vorige post die we zagen waren de GPIO pinnen en enkele voorbeelden van de praktische toepassingen, Vandaag zullen we ons richten op de werking van algemene pinnen, en leren ze te bestrijden met de tolk bestellingen Bash en met Python.

Proto&geleid

Zal gebruik maken van een LED, een weerstand van 330 Ohm, draad, en een Breadboard, of soldeer en een soldeerbout.

We zullen ook moeten onze Framboos al Raspbian vooraf geïnstalleerd, Indien uw zaak niet, U kunt zien hoe het te doen de volgende link van de Directory.

Het circuit rijden

U kunt direct soldeer de LED draad en de weerstand als u ziet in de volgende diagram, Hoewel er veel beter te gebruiken een Breadboard; Het is ook heel belangrijk om te kijken goed op bakkebaarden, Als in de “diagonale” binnenkant van de Diode LED het combineren van de twee pinnen om te monteren op het circuit, al dat als je het achteruit Mount zal niet inschakelen.

Circuit die nodig zijn voor de controle van de ontsteking van een LED-diode.

Circuit die nodig zijn voor de controle van de kracht van een LED-diode.

I 'm gonna een gebruiken Breadboard, en ik raden u aan om een, Er zijn enkele vanaf ongeveer €4 en zij laten toe te hergebruiken van onderdelen over en weer zonder om te solderen hen, de interne verbindingen van één Breadboard ze zijn meestal de volgende.

protocon

Een Breadboard verbindingen.

De verbindingen tussen de Breadboard en de Framboos zij moeten zijn zoals in het volgende diagram, de GPIO U kunt bereiken probleem 3,3V een logische hoge waarde toe te wijzen.

Circuit op Breadboard.

Circuit die nodig zijn voor de controle van de kracht van een LED-diode.

Hallo wereld van de GPIO met Bash

Eenmaal gekoppeld circuit, We gaan doen wat ik noem een “Hallo wereld GPIO” in Bash uitvoeren van de volgende script.

#!/bin/bash
#Exportamos el puerto GPIO 17 
echo 17 > /sys/class/gpio/export 
#Lo configuramos como salida 
echo out > /sys/class/gpio/gpio17/direction 
#Encendemos el LED asignandole 1 como valor lógico
echo 1 > /sys/class/gpio/gpio17/value

Als u wilt uitschakelen van de LED, kunnen we het met de volgende script.

#!/bin/bash
#Apagamos el LED asignandole 0 como valor lógico
echo 0 > /sys/class/gpio/gpio17/value  
#Eliminamos la entrada del puerto GPIO 17 
echo 17 > /sys/class/gpio/unexport 

In feite doen we met Bash is het creëren van een Directory-hiërarchie in /sys/class/gpio en toevoegen van inhoud aan elk bestand dat wordt behandeld als een variabele.

hiërarchie

Hiërarchie binnen de folder van de /sys/class/gpio.

Inleiding aan Python

We hebben reeds bewezen dat onze schakeling naar behoren functioneert en de LED is het ontslagen een logische hoge waarde geven de variabele, Nu laten we eens kijken hoe we hetzelfde kunnen doen Python, dat zal ons toelaten om plannen onze webapplicaties controle van de in- en uitgangen van de GPIO vanaf elk apparaat.

funcweb

Operatie met behulp van de WEB-applicatie.

Voordat u verdergaat, Ik aanbevelen dat u ziet de hoofdstukken van de 1 aan de 10 van Deze video tutorial vanuit Python het kanaal van YouTube van Code vergemakkelijkt, Als zoals ik heb niet veel idee van programmering in Python, Het kan komen aan u zeer goed tot u vertrouwd met de code die we zullen zien meer vooruit en komen om het te begrijpen.

Verschillende Pinouts voor de GPIO (BCM en bestuur)

Er zijn twee soorten pin nummering, de fysieke nummering of modus RAAD VAN BESTUUR, en de nummering van de chip SoC Broadcom controle daarop, We gaan de pinout gebruiken in de modus BCM, maar laten we eens kijken naar het verschil.

BCMvsBOARD

Hallo wereld van de GPIO met Python

Na het bekijken van de video 's, en verschillende pinouts begrijp al de Basic-code om de “Hallo wereld GPIO” in Python.

Eerst gaan we downloaden alles wat u nodig hebt om te bepalen de GPIO met Python, in Raspbian ze zijn al geïnstalleerd Python en de bibliotheken GPIO, maar we willen een extra pakket installeren en bijwerken van het systeem om de nieuwste versie.

usuario@maquina:~$ sudo apt-get install python-dev
usuario@maquina:~$ sudo apt-get install python-rpi.gpio
usuario@maquina:~$ sudo apt-get update && sudo apt-get upgrade

Eenmaal bijgewerkt, Laten we eens kijken hoe het inschakelen van de LED met de volgende script, U kunt bijvoorbeeld bellen enciende.py, en we kunnen draaien als root met de opdracht “sudo Python-enciende.py”.

#!usr/bin/env/ python
#enciende.py
#importamos la libreria GPIO
import RPi.GPIO as GPIO 
#Definimos el modo BCM 
GPIO.setmode(GPIO.BCM) 
#Ahora definimos el pin GPIO 17 como salida
GPIO.setup(17, GPIO.OUT) 
#Y le damos un valor logico alto para encender el LED
GPIO.output(17, GPIO.HIGH) 

Met dit annuleerteken wij zwenking op vandoor, bijvoorbeeld noemen apaga.py

#!usr/bin/env/ python
#apaga.py
#importamos la libreria GPIO
import RPi.GPIO as GPIO 
#Definimos el modo BCM
GPIO.setmode(GPIO.BCM)  
#Ahora definimos el pin GPIO 17 como salida
GPIO.setup(17, GPIO.OUT) 
#Y le damos un valor logico bajo para apagar el LED
GPIO.output(17, GPIO.LOW) 
#Finalmente liberamos todos los pines GPIO, es decir, los desconfiguramos)
GPIO.cleanup() 

En daarmee zullen wij u bellen parpadea.py, Zullen we knippert het LED.

#!usr/bin/env/ python
#parpadea.py
#importamos la libreria GPIO
import RPi.GPIO as GPIO 
#Importamos la libreria time
import time 
#Definimos el modo BCM 
GPIO.setmode(GPIO.BCM) 
#Ahora definimos el pin GPIO 17 como salida
GPIO.setup(17, GPIO.OUT) 
#Queremos que lo que contenga el for i in range se repita 5 veces
for i in range(0,5): 
        #Asignamos valor logico alto para encenderlo
               GPIO.output(17, GPIO.HIGH) 
        #Esperamos un segundo
               time.sleep(1)
        #Asignamos valor logico bajo para apagarlo
         GPIO.output(17, GPIO.LOW) 
        #Esperamos un segundo
         time.sleep(1) 
#Una vez termina las 5 repeticiones, liberamos el pin GPIO utilizado; en este caso el 17
GPIO.cleanup() 

Als u de bibliotheek niet importeren “tijd“, kunt niet de “slaap“, en niet toe te voegen als de “slaap” van een seconde tussen in- en uitschakelen, Het is heel goed mogelijk dat onze ogen niet zal zien flikkeren.

Het is zeer belangrijk niet om toe te voegen van speciale tekens in de scripts in Python, om deze reden de opmerkingen niet draag accenten, Aangezien het karakter fout Ongeldige gaf.

In de volgende post We zullen zien hoe maak je een eenvoudige Webtoepassing laten toe voor het uitvoeren van deze scripts, om de besturing van het vanaf elk apparaat met een browser te kunnen Web.

Als je net als u me kunt volgen op Twitter, Facebook, Google +, LinkedIn, of het te delen met de knoppen onder deze publicatie, Als u vragen hebt of suggesties gelieve te niet aarzelen om commentaar te.

Help ons te bereiken meer lezers Share on LinkedIn
LinkedIn
Share on Facebook
Facebook
Tweet about this on Twitter
Twitter
Share on Google+
Google +
Email this to someone
E-mail

16 gedachten over"Raspberry PI en GPIO pinnen: Beheersing van een LED met Bash en Python

  1. Ik heb een vraag van newbie…
    omdat de weerstand van 330 Ohm en wanneer te gebruiken?

    Worden altijd gebruikt voor 330 Wanneer we werkt met de RPI, of hij kan variëren?

    Een wenskaarten en uitstekende blog!!!

    • Hoi Peter,

      In principe zou het moeten werken, fout heeft slechts machtigingen gegeven aan sommige mensen maar uitgevoerd vanaf de webtoepassing, Als de gebruiker heeft www-data standaard niet langer deze machtigingen.

      Alleen in geval proberen uitgevoerd “sudo chmod + x script.py” om het te maken uitvoerbaar, Hoewel niet dus het zou moeten werken net vanaf terminal; Kunt u me leren als retourneert u een fout in de terminal aan het script uitvoeren??

      Hartelijk dank voor uw reactie.

  2. Hallo,
    Mij ben trying voor het inschakelen van een LED via python na gids monsters maar het geeft me de volgende fout wanneer ik de programmacode uitvoer het:

    importeren van RPi.GPIO als GPIO

    Fout:
    -bash: importeren: de volgorde is niet gevonden

    U verrichten weet waarom deze fout is?

    Dank u en gefeliciteerd op de blog dienst doet me veel!

    • Nano Hello, Bedankt voor commentaar.

      Het lijkt erop dat de code wordt geïnterpreteerd door Bash en niet door Python.

      Bent u het uitvoeren van het script, of de lijnen van code in de terminal direct?

  3. Goed weer,
    wat ik niet begrijp is de eerste coderegel: #!usr/bin/env/python
    Wat is het?
    Ik zie dat het werkt alleen met of zonder het

    • Nano Hello, Welkom weer.

      De lijn die u noemt is de instructie die vaak opgenomen aan het begin van een script om te vertellen van de terminal waar de interpreter die bestellingen moet je doorgeven, in dit geval, Python; voor bash zou als volgt:

      #!/bin/bash

      Het werkt in dit geval, met de verklaring en zonder het aangezien het bestand de extensie .py heeft, maar het is goede gewoonte om altijd toevoegen.

      Ik hoop dat ik je twijfels hebt uitgeschakeld, terug hier wanneer je wilt en hartelijk dank voor uw reactie 🙂

  4. Dank u, de tutorial is uitstekend, maar ik heb een twijfel:

    ze laten me met de volgende fouten:

    lijn 12 importeren:niet gevonden
    lijn 14 syntaxisfout: onverwachte woord (verwacht “)”)

    Mijn code is:

    #GPIO-setup.py
    ### BEGIN INIT INFO
    # Biedt: GPIO-setup.ch
    # Vereist-Start: $remote_fs $syslog
    # Vereist-Stop: $remote_fs $syslog
    # Standaardbegin: 2 3 4 5
    # Standaard-Stop: 0 1 6
    # Korte-beschrijving: Setup modus gpio
    # Beschrijving: Setup gpio 22/27/17/4 uit modus
    ### EINDE INIT INFO

    importeren van RPi.GPIO als GPIO
    #We definiëren de BCM-modus
    GPIO.setmode(GPIO. BCM)
    #We definiëren nu de GPIO pennen
    GPIO.setup(4, GPIO. UIT)
    GPIO.setup(17, GPIO. UIT)
    GPIO.setup(27, GPIO. UIT)
    GPIO.setup(22, GPIO. UIT)

    Enig idee???

    • Hallo Leoctam, Bedankt voor commentaar.

      De eerste lijnen geven te begrijpen dat u probeert te maken van een systeem-daemon, maar ze worden toegelicht, dus het zal geen rekening worden gehouden.

      Aan de andere kant, de code die u gebruikt om te communiceren met de GPIO is Python, door wat je moet het blijven in een script .py dat wordt aangeroepen vanuit uw demon van het systeem, of gebruik de Bash te doen zoals in het eerste voorbeeld in deze tutorial.

Laat een antwoord achter