Zepeng aux Pyakiròt ak GPIO: Okipe kay yo a yon Bash ak Python

Nan ansyen pòs a, nou te wè te gen zepeng GPIO yo ak kèk egzanp nan aplikasyon pwatik, Jòdi a nou gen pou konsantre sou operasyon général zepeng, epi aprann pou nou kontwole yo ak lòd entèprèt la Bash li te gen avè Python.

proto&dirije

Pwal itilize yon A, yon rezistans ki 330 ohm, fil fè, e youn Breadboard, oubyen soude ak yon soudure fè.

Nou pral bezwen tou nou Franbwaz gen deja Raspbian ki te fèt avan installé, Si ou ka pa, Ou kapab wè kouman pou fè l' sa kap vini yo ki relye de la Anyè.

Ke a chan de kous

Ou kapab soude dirèkteman a A fil elektrik ak rezistans tankou ou pwal wè nan lè sa a dyagram, Malgre ke li miyò anpil pou yo itilize yon Breadboard; Se tou enpòtan anpil pou yo gade byen sou pafouten, tankou nan a “dyagonal” anndan la a Dyòd A combinaison de apa pou mòn a chan de kous, deja sa si ou en mòn sa a pa vire sou kote.

Bezwen pou kontwole D' ki Dyòd a yon chan de kous.

Bezwen pou kontwole don Dyòd a yon chan de kous.

Mwen pral sèvi ak yon sèl Breadboard, e sa mwen konseye pou ou sèvi ak yon, Genyen depi sizè €4 e yo pèmèt nou réutilisation konpozan pase fwa pase san kite pou soude yo, entèn nan koneksyon ant yon Breadboard yo gen tandans pou swivan.

protocon

Yon Breadboard koneksyon.

Koneksyon ant a Breadboard e a Franbwaz yo dwe tankou dyagram sa a, a GPIO Ou ka jwenn kesyon 3,3V pou bay yon valè anwo nan syèl la lojik.

Chan de kous sou Breadboard.

Bezwen pou kontwole don Dyòd a yon chan de kous.

Alo Monde GPIO ak Bash

Yon fwa te monte chan de kous, Nou pwal fè sa mwen rele yon “Bonjou mond GPIO” nan Bash kouri swivan 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

Pou fèmen a a, nou ka fè l' ak swivan 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 

Fondamantalman sa nou fè ak Bash se pou kreye yon Anyè anbakasyon nan /sys/kou/gpio e ajoute ke kontan pou chak dosye sa yo pwal trete kòm yon varyab.

anbakasyon

Anbakasyon nan anyè /sys/class/gpio a.

Yon ti rale pou Python

Nou deja fè ' éprouvée chan de kous nou ap travay kòrèkteman ak a A te tire li dèyè pou l ' yon lojik anwo nan syèl la valè varyab a, Koulye a Ann wè ki jan nou ka fè menm bagay la tou Python, sa pèmèt nou ka planifye nou aplikasyon pou Web pou kontwole entrées a ak sorties de la GPIO nan yon machin.

funcweb

Operasyon ki ap itilize entènèt aplikasyon.

Devan demach, Mwen rekòmande pou w wè retrè de la 1 pou tout 10 de Didacticiel vidéo sa a nan Python kanal la YouTube de Kòd a, Si jan mwen pa gen anpil lide programmation nan Python, Li ka vin wè nou menm byen pou familyarize ou ak kòd sa nou va wè plis an anvan sa, rive konprann li.

Diferan du de la GPIO (BCM ak komite)

Gen de kalite zepeng konte, a konte fizik mòd mete abo, ak konte jeton a SoC Broadcom okipe kay yo, Nou pwal itilize du a nan mòd BCM, Men, ann gade sou diferans.

BCMvsBOARD

Alo Monde GPIO ak Python

Aprè videyo sou, ak diferan du kapab deja tande de baz kòd pou fè a “Bonjou mond GPIO” nan Python.

Anvan nou pwal desann tou sa nou bezwen pou kontwòl a GPIO avèk Python, nan Raspbian yo deja ap installé Python ak bibliyotèk yo GPIO, Men, nou pwal mete yon lòt pakè ak enfòme m sistèm en a dènye vèsyon pipiti de youn.

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

Yon sèl fwa à, An n wè kijan pou yo vire sou kote a A ak sa kap vini an script, Ou ka rele pa ekzanp enciende.py, e nou ka kouri li kòm rasin ak kòmandman an “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) 

Ak sa nou ka fèmen li, pa egzanp rele 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 avèk sa, nou a rele ou parpadea.py, N' ap fè yon clignotant a A.

#!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 ou pa enpòte bibliyotèk la “tan“, ka pa ajoute a “dòmi“, si pa ajoute a “dòmi” de yon dezyèm ant tobe, Se byen posib ke je nou va pa percevoir du.

Sa enpòtan anpil pou ajoute caractères espesyal nan a scripts nan Python, Se poutèt sa kòmantè sou piga ou pote detay yo, Depi ke li te bay bon karaktè enfim.

Tout sa antre nan Nou pwal wè kòman pou fè pote lestonmak li bay yon Web aplikasyon pèmèt nou pou egzekite yo scripts, pou kapab kontwole li nan yon machin ak browser Entènèt.

Si ou tankou ou ka swiv mwen Twitter, Facebook, Google plis pase, LinkedIn, oubyen pataje ak bouton sou piblikasyon sa a, Si ou gen nenpòt kesyon oubyen sigjesyon Tanpri pa ezite pou fè komantè.

Ede nou jwenn plis divinò Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+Email this to someone

16 lide sou"Zepeng aux Pyakiròt ak GPIO: Okipe kay yo a yon Bash ak Python

  1. Mwen gen yon kesyon de newbie…
    paske rezistans de 330 ohm ak lè pou sèvi ak li?

    Yo toujou te itilize pou 330 Lè nou travay avèk RPI, oubyen li dòz lan kapab varye?

    Blog salitasyon yo ak trè byen!!!

    • Alo Pyè,

      Sou pwensip sa ta dwe travay, erè sèlman bay autorisations kèk moun men yo kouri soti nan aplikasyon entènèt la, kòm moun kap itilize li an www done pa defo gen yonn nan autorisations sa yo.

      Sèlman nan nplwaye eseye kouri “sudo chmod + x script.py” pou fè l' exécutable, Byenke pa se konsa li ta dwe travay sèlman nan ayewopò; Ou ka montre m' si retounen ou fè san yo pa nan ayewopò kouri script a??

      Èsi anpil pou fè okenn kòmantè ou.

  2. alo,
    M ap eseye vire sou yon a pase python ki swiv gid echantiyon yo genyen nan men, li ban mwen sa pozisyon lè mwen kouri a kòd li:

    apwè ke RPi.GPIO kòm GPIO

    Erè:
    -bash: apwè ke: lòd sa a pa te jwenn

    Èske w konnen poukisa erè sa a?

    Mèsi ak konpliman sou blog a sèvi m' anpil!

    • Bonjou Nano, akeyi ankò.

      Liy ou mansyone se deklarasyon an ki se souvan te gen ladann nan kòmansman yon script pou di ayewopò a kote entèprèt la lòd ta dwe ou pase, nan ka sa a, Python; pou bash ki ta menm piba:

      #!/fou/bash

      Nan ka sa, li travay ak deklarasyon an ak san li depi dokiman an ki a .py ekstansyon, Men, se bon pwatik pou ajoute li toujou.

      Mwen espere ke pou yo te ravaje dout ou, vuelve por aquí cuando quieras y muchas gracias por tu comentario 🙂

  3. Mesi, el tutorial esta excelente, pero tengo una duda:

    me salen los siguientes errores:

    linea 12 apwè ke: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

    apwè ke RPi.GPIO kòm GPIO
    #Definimos el modo BCM
    GPIO.setmode(GPIO. BCM)
    #Ahora definimos los pines GPIO como salida
    GPIO.setup(4, GPIO. AN KONESANS)
    GPIO.setup(17, GPIO. AN KONESANS)
    GPIO.setup(27, GPIO. AN KONESANS)
    GPIO.setup(22, GPIO. AN KONESANS)

    Pa tande???

    • Hola Leoctam, Mèsi pou Kommante.

      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.

      yon lot bo, 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.

kite yon repons