Vigingi Raspberry PI na GPIO: Kudhibiti LED na Bash na Chatu

Katika post iliyopita tuliona walikuwa vigingi GPIO na baadhi ya mifano ya utendaji, Leo tutazingatia juu ya uendeshaji wa vigingi ngamizi, na kujifunza kudhibiti na amri ya mkalimani Bash na Chatu.

proto&aliongoza

Kutumia na LED, upinzani wa 330 ohm, waya, na moja Breadboard, au solder na chuma na soldering.

Sisi pia haja yetu Rasiberi tenga ya Raspbian kabla imewekwa, Ikiwa kesi yako, Unaweza kuona jinsi ya kufanya hivyo yafuatayo kiungo kutoka kwa Mpangilio orodha.

Wanaoendesha mzunguko wa

Wewe solder moja kwa moja ya LED waya na upinzani kama unaweza kuona katika yafuatayo Mchoro, Ingawa ni bora zaidi kutumia na Breadboard; Pia ni muhimu sana kuangalia vizuri kwenye sideburns, kama katika ya “Mshazari” ndani ya ya dayoda LED kuchanganya vigingi mbili kwa mlima mzunguko wa, tayari kwamba kama wewe mlima ni nyuma si atamgeukia.

Mzunguko zinahitajika kudhibiti chomo ya dayoda ya LED.

Mzunguko zinahitajika kudhibiti nguvu ya dayoda ya LED.

Mimi nina kwenda kutumia moja Breadboard, na mimi kupendekeza kwamba matumizi ya, Kuna baadhi kutoka takriban €4 na wao kuruhusu sisi pengi vijenzi tena na tena bila solder yao ili, Miunganisho ndani ya moja Breadboard wao huwa na kuwa yafuatayo.

protocon

Miunganisho ya Breadboard.

Uhusiano kati ya Breadboard na Rasiberi lazima wawe kama ilivyo katika mchoro ufuatao, ya GPIO Unaweza kufikia suala 3,3V kwa kugawa thamani ya juu ya mantiki.

Circuito en Protoboard.

Mzunguko zinahitajika kudhibiti nguvu ya dayoda ya LED.

Hello ulimwengu wa GPIO na Bash

Mzunguko vyema mara moja, Sisi ni kwenda kufanya kile ninachokiita na “Hello ulimwengu GPIO” katika Bash ejecutando el siguiente hati.

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

Kuzima ya LED, tunaweza kufanya hivyo na yafuatayo hati.

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

Kimsingi kile tunafanya na Bash ni kuunda na Msonge wa mpangilio orodha katika /SYS/darasa/gpio y añadir contenido a cada archivo que será tratado después como una kutofautiana.

jerarquia

Uongozi ndani ya mpangilio orodha /sys/class/gpio.

Utangulizi wa Chatu

Sisi tayari kuthibitika kwamba mzunguko wetu ni kufanya kazi vizuri na LED ina ni wamefukuzwa kumpa thamani ya juu ya mantiki ya kutofautiana, Sasa Hebu tuone jinsi gani tunaweza kufanya sawa Chatu, ambayo itaruhusu sisi ratiba yetu maombi ya wavuti kudhibiti pembejeo na matokeo ya ya GPIO kutoka kifaa chochote.

funcweb

Uendeshaji kutumia programu tumizi ya wavuti.

Kabla ya kuendelea, Mimi kupendekeza kwamba unaweza kuona Sura ya ya 1 kwa ya 10 ya Mafunzo haya video kutoka Chatu channel ya YouTube ya Msimbo kuwezeshwa, Kama vile kuwa wazo sana ya programu katika Chatu, os puede venir muy bien para familiarizaros con el código que vamos a ver mas adelante y llegar a entenderlo.

Pinouts tofauti ya GPIO ya (BCM na bodi)

Kuna aina mbili za pin namba, ya kimwili namba au hali BODI, na namba ya chip ya SoC Broadcom que los controla, Sisi ni kwenda kutumia pinout ya hali ya BCM, lakini Hebu tuangalie tofauti.

BCMvsBOARD

Hello ulimwengu wa GPIO na Chatu

Baada ya kuangalia video ya, na pinouts tofauti tayari kuelewa kanuni ya msingi ya kufanya ya “Hello ulimwengu GPIO” katika Chatu.

Kwanza ni kwenda kupakua kila kitu unahitaji kudhibiti na GPIO na Chatu, katika Raspbian ya vienen instalados Chatu na maktaba ya GPIO, Lakini sisi ni kwenda kusakinisha furushi la ziada na kusasisha mfumo wa na toleo la karibuni.

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

Updated mara moja, Hebu tuone jinsi ya kuwasha na LED na yafuatayo hati, Unaweza kwa mfano kumuita enciende.PY, y podemos ejecutarlo como root con el comando “sudo Chatu 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) 

Kwa hii sisi inaweza kuzima, kwa mfano simu 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() 

Na kwa hii tuta parpadea.PY, Tutafanya flashing ya 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() 

Kama unaweza Usilete maktaba ya “wakati“, unaweza kuongeza na “usingizi“, na kama si kuongeza ya “usingizi” ya pili kati ya ndani na nje ya, Inawezekana kabisa kwamba macho yetu wala hamtatambua flicker.

Ni muhimu sana Ongeza vibambo maalum katika ya hati katika Chatu, kwa sababu hii maoni kubeba mikazo, Tangu alitoa tabia kosa batili.

Katika ingizo zifuatazo Tutaona jinsi ya kufanya rahisi Programu tumizi ya wavuti kutuwezesha kutekeleza hizi hati, ili kuweza kudhibiti kutoka kifaa chochote na kivinjari Wavuti.

Kama wewe kama wewe Nifuate Mtandao wa Twitter, Facebook, Google +, LinkedIn, au kushiriki na vitufe chini ya chapisho hili, Kama una maswali yoyote au maoni Tafadhali usisite kutoa maoni.

Kutusaidia kufikia wasomaji zaidi Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+Email this to someone

16 mawazo juu ya"Vigingi Raspberry PI na GPIO: Kudhibiti LED na Bash na Chatu

  1. tengo una duda de novato
    porque la resistencia de 330 ohmnios y cuando hay que utilizarla?

    Siempre se utilizan de 330 cuando trabajamos con RPI, o puede variar?

    Un saludo y excelente blog!!!

  2. Hola no me funciona, y pues segui los pasos al pie de la letra con python, hay que darle permiso de ejecucion al archivo de python?

    • Hola Pedro,

      En principio debería funcionar, solo les ha dado error por permisos a algunas personas pero ejecutándose desde la aplicación web, ya que el usuario www-data por defecto no tiene dichos permisos.

      Por si acaso pruebe ejecutandosudo chmod +x script.pypara volverlo ejecutable, aunque sin serlo debería funcionar igual desde terminal; puede enseñarme si le devuelve algún error en la terminal al ejecutar el script¿?

      Muchas gracias por su comentario.

  3. Nzuri, cuando introduzco el script en python, me indica que el arroba es un SyntaxError ¿Qué puede ser? Gracias y saludos.

    • Me resulta muy extraño, ya que en el script no hay ninguna @, podrías dar mas detalles del error?

      Tuonane hivi karibuni, y gracias por comentar.

  4. Hello,
    estoy intentando encender un LED a través de python siguiendo la guía que muestras pero me da el siguiente error cuando ejecuto el código éste:

    Leta RPi.GPIO kama GPIO

    Error:
    -Bash: import: no se encontró la orden

    ¿Sabes a qué se debe este error?

    Gracias y enhorabuena por el blog me está sirviendo de mucho!

    • Hola Nano, Asante kwa maoni.

      Parece que el código está siendo interpretado por Bash y no por Python.

      ¿Estás ejecutando el script, o las líneas de código en la terminal directamente?

      • Hmm lo estaba ejecutando desde el terminalerror gordo jeje (soy nuevo con la raspberry me lo puedo permitir todavía =P )

        • Me alegro de que se haya solucionado!!!

          Asante kwa maoni, no dudes en hacerlo si tienes cualquier duda; entre los lectores y yo te echaremos una mano.

  5. Buenas de nuevo,
    algo que no entiendo es la primera línea de código: #!usr/bin/env/ python
    ¿para qué sirve?
    veo que funciona igual con o sin ella

    • Hola Nano, bienvenido otra vez.

      La línea que comentas es la declaración que se suele incluir al inicio de un script para indicarle a la terminal donde se encuentra el intérprete al que debe pasarle las órdenes, en este caso Python; para bash sería la siguiente:

      #!/bin/bash

      En este caso funciona con la declaración y sin ella puesto que el archivo tiene extensión .py, pero es una buena práctica añadirla siempre.

      Natumaini vimesafisha mashaka yako, vuelve por aquí cuando quieras y muchas gracias por tu comentario 🙂

  6. Asante, el tutorial esta excelente, pero tengo una duda:

    me salen los siguientes errores:

    linea 12 import:not found
    linea 14 syntax error: word unexpected (expecting “)”)

    Mi codigo es:

    #gpio-setup.py
    ### BEGIN INIT INFO
    # Provides: gpio-setup.ch
    # Required-Start: $remote_fs $syslog
    # Required-Stop: $remote_fs $syslog
    # Default-Start: 2 3 4 5
    # Default-Stop: 0 1 6
    # Short-Description: Setup mode gpio
    # Description: Setup gpio 22/27/17/4 mode out
    ### END INIT INFO

    Leta RPi.GPIO kama GPIO
    #Definimos el modo BCM
    GPIO.setmode(GPIO. BCM)
    #Ahora definimos los pines GPIO como salida
    GPIO.setup(4, GPIO. NJE)
    GPIO.setup(17, GPIO. NJE)
    GPIO.setup(27, GPIO. NJE)
    GPIO.setup(22, GPIO. NJE)

    Wazo yoyote???

    • Hola Leoctam, Asante kwa maoni.

      Las primeras líneas dan a entender que estas intentando crear un demonio del sistema, pero están comentadas por lo que no se tendrán en cuenta.

      Kwenye upande ule mwingine, el código que estás utilizando para interactuar con los GPIO es Python, por lo que debes alojarlo en un script .py que será invocado desde tu demonio del sistema, o utilizar Bash para ello como en el primer ejemplo de este tutorial.

Jibu