Agulles de PI gerd i GPIO: Controlar un LED amb Bash i Python

En el post anterior que vam veure van ser els pins GPIO i alguns exemples d'aplicacions pràctiques, Avui ens centrarem en l'operació de pins de propòsit general, i aprendre a controlar-los amb les ordres de l'intèrpret Colpejar i amb Python.

proto&va portar

Utilitzarà un LED, una resistència de 330 Ohm, filferro, i un Placa, o soldadura i un soldador.

També necessitarem nostres Gerd ja s'han Raspbian pre-instal lat, Si el seu cas no és, Es pot veure com fer-ho el següent enllaç de la Directori.

Muntar el circuit

Es pot soldar directament la LED filferro i resistència com es veurà en els següents diagrama, Encara que és molt millor utilitzar una Placa; També és molt important observar bé en patilles, com en la “Diagonal” dins de la Díode LED combinant els dos pins per muntar el circuit, ja que si muntar-ho al revés ni encén.

Circuit necessàries per controlar la ignició d'un díode LED.

Circuit necessàries per controlar el poder d'un díode LED.

Vaig a utilitzar un Placa, i recomano que utilitzeu un, Hi ha alguns des d'aproximadament 4 € i permeten reutilitzar components de una i altra vegada sense haver de soldar-los, les connexions internes d'una Placa solen ser els següents.

protocon

Un connexions Breadboard.

Les connexions entre la Placa i la Gerd han de ser com en el diagrama següent, la GPIO Es pot arribar a assumpte 3,3V assignar un alt valor lògic.

Circuit de Breadboard.

Circuit necessàries per controlar el poder d'un díode LED.

Hola món de la GPIO amb Bash

Circuit un cop muntada, Anem a fer el que jo anomeno un “Hola món GPIO” en Colpejar executant la següent escriptura.

#!/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

Per desactivar el LED, ho podem fer amb el següent escriptura.

#!/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 

Bàsicament el que estem fent amb Colpejar és crear un Jerarquia dirs. en /classe/sys/gpio i afegir contingut a cada fitxer que seran tractades com un variable.

jerarquia

Jerarquia dins del directori /sys/class/gpio.

Introducció a Python

Ja ens han demostrat que la nostre circuit està funcionant correctament i la LED ha estat acomiadat per donar un alt valor lògic a la variable, Ara anem a veure com podem fer el mateix en Python, que permetrà planificar la nostra aplicacions web per controlar les entrades i sortides de la GPIO des de qualsevol dispositiu.

funcweb

Operació mitjançant l'aplicació WEB.

Abans de continuar, Us recomano que veieu els capítols de la 1 a la 10 de Aquest vídeo tutorial de Python el canal de YouTube de Codi facilitat, Si com no tinc gaire idea de programació en Python, Pot arribar a vostè molt bé perquè es familiaritzi amb el codi que anem a veure més endavant i arribar a entendre-ho.

Disposició de pins diferents de la GPIO (BCM i Junta)

Hi ha dos tipus de numeració pin, la físiques numeració o mode de JUNTA, i la numeració del xip SoC Broadcom controlar-los, Anem a utilitzar la pinout en mode BCM, però vegem la diferència.

BCMvsBOARD

Hola món de la GPIO amb Python

Després de veure els vídeos, i la disposició de pins diferents ja pot entendre el codi bàsic per fer les “Hola món GPIO” en Python.

Primer anem a descarregar tot el necessari per controlar la GPIO amb Python, en Raspbian ja s'instal·len Python i les biblioteques GPIO, però anem a instal·lar un paquet addicional i actualitzar el sistema per tenir l'última versió.

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

Un cop actualitzat, Anem a veure com girar-se en la LED amb el següent escriptura, Per exemple podeu trucar enciende.py, i es pot executar com a root l'ordre “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) 

Amb això ens pot desviar, per exemple 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() 

I amb això nosaltres et truquem parpadea.py, Farem Parpellejar la 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() 

Si no importa la biblioteca “temps“, no es pot afegir la “son“, i si no afegir la “son” d'un segon entre damunt i fora, És molt possible que el nostre ull no es considerin parpellejar.

És molt important no afegir caràcters especials en la seqüències d'ordres en Python, per aquesta raó els comentaris no porten accents de, Ja que donava caràcter error invàlid.

En la següent entrada Veurem com fer un simple Aplicació web permeten executar aquestes seqüències d'ordres, ser capaç de controlar-lo des de qualsevol dispositiu amb navegador Web.

Si us agrada podeu segueix-me a Refilar, Facebook, Google +, LinkedIn, o compartir-lo amb els botons sota aquesta publicació, Si vostè té alguna pregunta o suggeriment no dubtis a comentar.

Ajuda'ns a arribar a més lectors Share on LinkedIn
LinkedIn
Share on Facebook
Facebook
Tweet about this on Twitter
Refilar
Share on Google+
Google +
Email this to someone
correu electrònic

16 Reflexions sobre la"Agulles de PI gerd i GPIO: Controlar un LED amb Bash i Python

  1. Tinc una pregunta de principiant…
    perquè la resistència de 330 Ohm i quan utilitzar-lo?

    Sempre s'utilitzen per 330 Quan treballem amb l'IPC, o es pot variar?

    Una salutació i excel·lent bloc!!!

    • Hola Peter,

      En principi hauria de funcionar, error només ha donat permisos a algunes persones, però des de l'aplicació web, com l'usuari www-dades per defecte ja no té aquests permisos.

      Per si de cas proveu d'executar “sudo chmod + x script.py” per fer-ho executable, Encara que no així hauria de funcionar només de terminal; Pot ensenyar-me si et torna un error a la terminal per executar l'escriptura??

      Moltes gràcies pel teu comentari.

  2. Hola,
    Estic intentant activar un LED a través de Pitó seguint la guia mostres però em dóna l'error següent quan executeu el codi:

    importació RPi.GPIO com GPIO

    Error:
    -colpejar: importació: l'ordre no es trobava

    Saps per què és aquest error?

    Gràcies i enhorabona pel blog està servint mi molt!

  3. Bé una altra vegada,
    el que no entenc és la primera línia del codi: #!usr/bin/env/Pitó
    Què és?
    Vaig veure que funciona només amb o sense ella

    • Hola Nano, Benvinguts de nou.

      La línia que esmentar és l'afirmació que sovint s'inclou a l'inici d'un script per explicar la terminal on l'intèrpret que ordena ha de passar, en aquest cas, Python; per bash seria el següent:

      #!/Bin/bash

      En aquest cas, funciona amb la declaració i sense des de l'arxiu té l'extensió py, però és bona pràctica sempre afegir-lo.

      Espero el seu dubte aclarit, tornada aquí te quan vulguis i moltes gràcies pel teu comentari 🙂

  4. Gràcies, el tutorial és excel·lent, però tinc un dubte:

    Us deixo els següents errors:

    línia 12 importació:no es troba
    línia 14 error de sintaxi: Paraula inesperat (esperant “)”)

    El meu codi és:

    #GPIO-setup.py
    ### COMENCI INIT INFO
    # Proporciona: GPIO-setup.ch
    # Exigeix-Inici: $remote_fs $syslog
    # Parada necessària: $remote_fs $syslog
    # Per defecte-Inici: 2 3 4 5
    # Aturada per defecte: 0 1 6
    # Curta-descripció: Gpio de modalitat d'organització
    # Descripció: Organització gpio 22/27/17/4 de mode de
    ### FINAL INIT INFO

    importació RPi.GPIO com GPIO
    #Podem definir el mode BCM
    GPIO.setmode(GPIO. BCM)
    #Ara podem definir els passadors de sortida GPIO
    GPIO.setup(4, GPIO. TERME)
    GPIO.setup(17, GPIO. TERME)
    GPIO.setup(27, GPIO. TERME)
    GPIO.setup(22, GPIO. TERME)

    Qualsevol idea???

    • Hola Leoctam, Gràcies pels seus comentaris.

      Les primeres línies donar a entendre que vostè està tractant de crear un dimoni de sistema, però es comenten així que no es tindran en compte.

      D'altra banda, el codi que està utilitzant per interactuar amb el GPIO és Python, Així que vostè ha de romandre en una py de guió que es pot invocar des del seu dimoni de sistema, o utilitzar Bash per fer-ho com en el primer exemple en aquest tutorial.

Deixa un comentari