Raspberry PI şi GPIO ace: Controlul unui LED cu Bash şi Python

În post anterior am văzut au fost pinii GPIO şi câteva exemple de aplicaţii practice, Astăzi ne vom concentra asupra funcționării ace de uz general, şi să înveţe să controleze-le cu interpretul lui comenzi Bash şi cu Python.

proto&a condus

Se va folosi un LED-URI, o rezistenţă de 330 Ohm, sârmă, şi una Breadboard, sau lipire şi un fier de lipit.

Vom avea nevoie, de asemenea, nostru Zmeura au deja Raspbian pre-instalat, Dacă nu este cazul dvs, Puteţi vedea cum să o fac în următoarele link-ul din Director.

Mersul pe circuit

Vă pot lipi direct LED-URI sârmă şi rezistenţă aşa cum aţi vedea în cele ce urmează Diagrama, Deşi este mult mai bine să utilizaţi un Breadboard; De asemenea, este foarte important sa arati bine pe perciunilor, ca şi în “diagonala” in interiorul diodă LED-URI Combinând două ace pentru a monta în circuitul, deja asta în cazul în care aţi mount-o înapoi nu va porni.

Circuitul este necesar pentru a controla aprinderea o diodă LED.

Circuitul este necesar pentru a controla puterea de o diodă LED.

Am de gând să utilizaţi una Breadboard, şi vă recomandăm să utilizaţi o, Există unele la aproximativ 4 € şi ele permit ne refolosire componente peste si peste din nou fără a fi nevoie să lipire le, conexiuni interne de transfer Breadboard Ei tind să fie următoarele.

protocon

Un Breadboard conexiuni.

Conexiunile dintre Breadboard şi Zmeura Acestea trebuie să fie la fel ca în diagrama de mai jos, The GPIO Puteţi ajunge la problema 3,3V pentru a atribui o mare valoare logică.

Circuit pe Breadboard.

Circuitul este necesar pentru a controla puterea de o diodă LED.

Bună ziua lume GPIO cu Bash

Odata montat circuit, Am de gând să faci ceea ce eu numesc un “Bună ziua lume GPIO” în Bash execută următoarele script-ul.

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

Pentru a dezactiva LED-ul, putem face acest lucru cu următoarele script-ul.

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

Practic ceea ce facem cu Bash este de a crea un Director ierarhie în /sys/class/gpio şi adăugarea de conţinut pentru fiecare fişier care va fi tratată ca o variabila.

ierarhie

Ierarhia în directorul /sys/class/gpio.

Introducere în Python

Avem deja dovedit că circuitul nostru este de lucru corect şi LED-URI a fost concediat pentru a da o mare valoare logică pentru variabila, Acum hai sa vedem cum putem face acelaşi lucru Python, care va permite noi să programaţi noastre aplicatii web pentru a controla intrări şi ieşiri de GPIO la orice dispozitiv.

funcweb

Funcţionarea utilizând aplicaţia WEB.

Înainte de a continua, Vă recomandăm că vedeţi capitole de 1 pentru a 10 de Acest tutorial video la Python canalul de YouTube de Cod facilitată, Daca ca nu am idee mult de programare în Python, Se poate veni cu tine foarte bine pentru a vă familiariza cu codul care vom vedea mai înainte şi vin să-l înţeleagă.

Pinouts diferite de GPIO (BCM si pensiune)

Există două tipuri de numerotare pin, numerotarea fizice sau modul BORD, şi numerotarea chip SoC Broadcom controlul acestora, Am de gând să utilizaţi pinout în modul BCM, dar să ne uităm la diferenta.

BCMvsBOARD

Bună ziua lume GPIO cu Python

După vizionarea clipurilor video, şi diferite pinouts deja înţelege codul de bază pentru a face “Bună ziua lume GPIO” în Python.

Mai întâi suntem de gând să descărcaţi tot ce ai nevoie pentru a controla GPIO cu Python, în Raspbian ele sunt deja instalate Python la biblioteci GPIO, dar am de gând să instalaţi un pachet suplimentar şi să actualizeze sistemul sa ai ultima versiune.

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

Actualizată o dată, Hai sa vedem cum se activează LED-URI cu următoarele script-ul, De exemplu poti suna enciende.py, şi putem rula ca root cu comanda “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) 

Cu aceasta am putea nap it off, exemplu de apel 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() 

Si cu aceasta ne va suna parpadea.py, Vom face intermitent LED-URI.

#!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() 

Dacă importaţi Biblioteca “timp“, nu pot adăuga “somn“, şi, dacă nu adăugaţi “somn” de o secunda intre pornit si oprit, Este foarte posibil că nu percepe ochiul nostru pâlpâire.

Este foarte important să nu adăugaţi caractere speciale în script-uri în Python, din acest motiv Comentarii nu transporta accente, Din moment ce le-a dat eroare caracter nevalid.

În următoarea intrare Vom vedea cum sa faci un simplu Aplicație Web ne permite să execute aceste script-uri, pentru a putea controla-l la orice dispozitiv cu browser-ul Web.

Dacă vă place să urmaţi-mă pe Stare de nervozitate, Facebook, Google +, LinkedIn, sau partajaţi-l cu butoanele de sub această publicaţie, Dacă aveţi orice întrebări sau sugestii vă rugăm să nu ezitaţi să comenteze.

Să ne ajute să ajungă la mai mult de cititori Share on LinkedIn
LinkedIn
Share on Facebook
Facebook
Tweet about this on Twitter
Stare de nervozitate
Share on Google+
Google +
Email this to someone
e-mail

16 gânduri pe"Raspberry PI şi GPIO ace: Controlul unui LED cu Bash şi Python

  1. Am o intrebare la newbie…
    deoarece rezistenţa 330 Ohm şi când să-l utilizaţi?

    Pot fi utilizate intotdeauna pentru 330 Când lucrăm cu RPI, sau poate varia?

    Un salut şi excelent blog!!!

    • Bună Peter,

      In principiu ar trebui să funcţioneze, eroare doar a dat permisiunile pentru unii oameni, dar rulează la aplicația web, ca utilizator www-date în mod implicit nu mai are aceste permisiuni.

      Doar în cazul încercaţi rularea “sudo chmod + x script.py” pentru a face executabil, Deşi nu aşa ar trebui să funcţioneze doar din terminal; Poate învaţă-mă dacă vă returnează o eroare în terminalul pentru a rula script-ul??

      Vă mulţumesc foarte mult pentru comentariul tau.

  2. bună,
    Am încercat să porniţi un LED prin python urma ghid probe dar îmi dă următoarea eroare atunci când am rula cod l:

    import RPi.GPIO ca GPIO

    Eroare:
    -bash: import: Ordinul nu a fost găsit

    Stii ce este eroarea?

    Vă mulţumesc şi felicitări pentru blog-ul este de servire mi mult!

  3. Buna din nou,
    ceea ce nu înţeleg este prima linie de cod: #!usr/bin/env/python
    care este problema?
    Văd că acesta funcţionează doar cu sau fără ea

    • Bună ziua nano, Bine ati venit din nou.

      Linia pe care ai spus este că este de multe ori incluse la începutul anului un script pentru a spune terminal în cazul în care interpretul care comenzi ar trebui să vă treacă, în acest caz, Python; pentru bash ar fi după cum urmează:

      #!/bin / bash

      În acest caz lucreaza cu declaraţia şi fără ea deoarece fişierul are extensia .py, dar este o practică bună să-l adăugaţi întotdeauna.

      Sper sa am clarificat îndoielile dumneavoastră, înapoi aici ori de câte ori doriţi şi vă mulţumesc foarte mult pentru dumneavoastră comentariu 🙂

  4. vă mulţumesc, Tutorialul este excelent, dar am nici o îndoială:

    Plec următoarele erori:

    linie 12 import:nu a fost găsit
    linie 14 eroare de sintaxă: cuvântul neaşteptate (asteptam “)”)

    Codul meu este:

    #GPIO setup.py
    ### ÎNCEPE INIT INFO
    # Oferă: GPIO-setup.ch
    # Necesare-Start: $remote_fs $syslog
    # Necesare-Stop: $remote_fs $syslog
    # În mod implicit-Start: 2 3 4 5
    # În mod implicit-Stop: 0 1 6
    # Descriere scurta: Instalare modul gpio
    # Descriere: Configurare gpio 22/27/17/4 modul de afară
    ### SFÂRŞITUL INIT INFO

    import RPi.GPIO ca GPIO
    #Definiţi modul de BCM
    GPIO.setmode(GPIO. BCM)
    #Acum vom desemna pini GPIO ca ieşire
    GPIO.setup(4, GPIO. AFARĂ)
    GPIO.setup(17, GPIO. AFARĂ)
    GPIO.setup(27, GPIO. AFARĂ)
    GPIO.setup(22, GPIO. AFARĂ)

    Orice idee???

    • Bună ziua Leoctam, Multumesc pentru comentarea.

      Primele linii dau să înţeleagă că vă sunt încercarea de a crea un daemon de sistem, dar ei sunt comentate astfel încât acesta nu vor fi luate în considerare.

      pe de altă parte, codul pe care îl utilizaţi pentru a interacţiona cu GPIO este Python, aşa că trebuie să stai într-un .py script-ul, care va fi invocate la al tău sistem daemon, sau utilizaţi Bash pentru a face acest lucru la fel ca în primul exemplu, in acest tutorial.

lasă un răspuns