Raspberry PI e GPIO pins: Controllare un LED con Bash e Python

Nel post precedente che abbiamo visto erano i pin GPIO e alcuni esempi di applicazioni pratiche, Oggi ci concentreremo sul funzionamento del General-Purpose perni, e imparare a controllarli con gli ordini dell'interprete Bash e con Python.

proto&ha condotto

Utilizzerà un LED, una resistenza di 330 Ohm, filo, e uno Breadboard, o saldatura e un saldatore.

Avremo anche bisogno nostro Lampone hanno già Raspbian pre-installato, Se il vostro caso non è, Si può vedere come farlo in il seguente link dalla Directory.

Il circuito di guida

È possibile saldare direttamente il LED filo e resistenza come si vedrà in seguito diagramma, Anche se è molto meglio utilizzare un Breadboard; È anche molto importante guardare bene su basette, come nella “diagonale” all'interno della diodo LED Combinando i due perni per montare il circuito, già che se lo monti al contrario non si accende.

Circuito necessaria per controllare l'accensione di un diodo LED.

Circuito necessari per controllare la potenza di un diodo LED.

Ho intenzione di utilizzare uno Breadboard, e consiglia di utilizzare un, Ci sono alcuni da circa €4 e ci permettono di riutilizzare componenti più e più volte senza dover saldare li, i collegamenti interni di uno Breadboard Essi tendono ad essere il seguente.

protocon

Una connessioni Breadboard.

Le connessioni tra la Breadboard E la Lampone devono essere come nello schema seguente, il GPIO Si può raggiungere il problema 3,3V per assegnare un valore logico alto.

Circuito su Breadboard.

Circuito necessari per controllare la potenza di un diodo LED.

Ciao mondo di GPIO con Bash

Una volta montati circuito, Ci accingiamo a fare quello che io chiamo un “Ciao mondo GPIO” in Bash in esecuzione il seguente 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

Per disattivare il LED, possiamo farlo con il seguente 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 

Fondamentalmente ciò che stiamo facendo con Bash è quello di creare un Gerarchia di directory in /sys/classe/gpio e l'aggiunta di contenuto per ogni file che sarà trattato come un variabile.

gerarchia

Gerarchia all'interno della directory /sys/class/gpio.

Introduzione a Python

Abbiamo già dimostrato che il nostro circuito funzioni correttamente e il LED ha sparato a dare un valore logico alto alla variabile, Ora vediamo come possiamo fare lo stesso Python, che ci permetterà di pianificare il nostro applicazioni Web per controllare gli ingressi e le uscite della GPIO da qualsiasi dispositivo.

funcweb

Operazione utilizzando l'applicazione WEB.

Prima di procedere, Raccomando che si vede i capitoli della 1 per la 10 di Questo video tutorial da Python il canale di YouTube di Codice facilitato, Se come non ho molto idea di programmazione in Python, Può venire a voi molto bene a familiarizzare con il codice che vedremo più avanti e arrivare a capire.

Differenti Pinouts di GPIO (BCM e pensione)

Ci sono due tipi di numerazione dei pin, la numerazione fisica o la modalità PENSIONE, e la numerazione del chip SoC Broadcom controllarli, Ci accingiamo a utilizzare la piedinatura in modalità BCM, ma diamo un'occhiata alla differenza.

BCMvsBOARD

Ciao mondo di GPIO con Python

Dopo aver visto il video, e differenti pinouts può già capire il codice di base per rendere il “Ciao mondo GPIO” in Python.

In primo luogo ci accingiamo a scaricare tutto il necessario per controllare il GPIO con Python, in Raspbian sono già installati Python e le librerie GPIO, ma stiamo per installare un pacchetto aggiuntivo e aggiornare il sistema per avere l'ultima versione.

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

Una volta aggiornato, Vediamo come attivare il LED con il seguente script, È possibile ad esempio chiamare enciende.py, e possiamo eseguirlo come root con il comando “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) 

Con questo noi possiamo spegnerlo, ad esempio chiamare 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() 

E con questo ti chiamiamo parpadea.py, Faremo in modo lampeggiante il 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() 

Se non si importa la libreria “tempo“, non è possibile aggiungere la “sonno“, e se non aggiungere il “sonno” di un secondo tra on e off, È possibile che il nostro occhio non percepisce sfarfallio.

È molto importante non aggiungere caratteri speciali nella script in Python, per questo motivo i commenti non portano accenti, Poiché ha dato errore di carattere non valido.

Nella seguente voce Vedremo come fare un semplice Applicazione Web ci permettono di eseguire queste script, per essere in grado di controllarlo da qualsiasi dispositivo con browser Web.

Se si desidera è possibile seguire su Twitter, Facebook, Google +, LinkedIn, o condividerlo con i pulsanti sotto questa pubblicazione, Se avete domande o suggerimenti, non esitate a commentare.

Aiutaci a raggiungere più lettori Share on LinkedIn
LinkedIn
Share on Facebook
Facebook
Tweet about this on Twitter
Twitter
Share on Google+
Google +
Email this to someone
Posta elettronica

16 Thoughts on"Raspberry PI e GPIO pins: Controllare un LED con Bash e Python

  1. Ho una domanda da newbie…
    perché la resistenza del 330 Ohm e quando utilizzarlo?

    Vengono sempre utilizzati per 330 Quando lavoriamo con RPI, o può variare?

    Un saluto ed eccellente blog!!!

  2. Ciao mi funziona, e quindi seguire le istruzioni alla lettera con python, è necessario concedere le autorizzazioni per il file di python?

    • Ciao Peter,

      In linea di principio dovrebbe funzionare, errore ha solo dato le autorizzazioni per alcune persone, ma in esecuzione dall'applicazione web, come l'utente www-data per impostazione predefinita non ha queste autorizzazioni.

      Solo in caso prova in esecuzione “sudo chmod + x script.py” per renderlo eseguibile, Anche se non così dovrebbe funzionare solo da terminale; Mi puoi insegnare se si restituisce un errore nel terminale per eseguire lo script??

      La ringrazio molto per il tuo commento.

  3. Ciao,
    Sto cercando di accendere un LED attraverso python seguito guida campioni ma mi dà il seguente messaggio di errore quando si esegue il codice:

    importazione RPi.GPIO come GPIO

    Errore:
    -bash: importazione: l'ordine non è stato trovato

    Sai perché è questo errore?

    Grazie e complimenti per il blog è mi serve molto!

  4. Bene ancora una volta,
    quello che non capisco è la prima riga di codice: #!usr/bin/env/python
    Cos'è?
    Vedo che funziona solo con o senza di essa

    • Ciao nano, Benvenuti ancora.

      La linea che si parla è l'affermazione che spesso è incluso all'inizio di uno script per raccontare il terminale dove l'interprete che ordina si dovrebbe passare, in questo caso, Python; per bash sarebbe come segue:

      #!/bin/bash

      In questo caso, funziona con la dichiarazione e senza di essa, poiché il file ha l'estensione. py, ma è buona norma aggiungere sempre.

      Spero di aver cancellato i tuoi dubbi, Torna qui quando vuoi e grazie mille per il tuo commento 🙂

  5. Grazie, il tutorial è eccellente, ma ho un dubbio:

    mi lasciano con i seguenti errori:

    linea 12 importazione:non trovato
    linea 14 errore di sintassi: imprevisto parola (mi aspettavo “)”)

    Il mio codice è:

    #GPIO-setup.py
    ### BEGIN INIT INFO
    # Fornisce: GPIO-setup.ch
    # Richiesto-Start: $remote_fs $syslog
    # Richiesto-Stop: $remote_fs $syslog
    # Default-Start: 2 3 4 5
    # Default-Stop: 0 1 6
    # Breve-descrizione: Impostazione modalità gpio
    # Descrizione: Installazione gpio 22/27/17/4 modalità
    ### FINE INIT INFO

    importazione RPi.GPIO come GPIO
    #Definiamo la modalità BCM
    GPIO.setmode(GPIO. BCM)
    #Definiamo ora il pin di uscita GPIO
    GPIO.setup(4, GPIO. FUORI)
    GPIO.setup(17, GPIO. FUORI)
    GPIO.setup(27, GPIO. FUORI)
    GPIO.setup(22, GPIO. FUORI)

    [object Window]???

    • Ciao Leoctam, Grazie per il commento.

      Le prime linee dare per capire che si sta tentando di creare un demone di sistema, ma sono commentati così esso non si terrà conto.

      D'altro canto, il codice che si utilizza per interagire con il GPIO è Python, quindi si deve stare in un. py script che verrà richiamato dal tuo demone di sistema, o usare Bash per farlo come nel primo esempio in questo tutorial.

Lasciare una risposta