PI Raspberi dan GPIO PIN: Mengawal LED Bash dengan Python

Dalam jawatan sebelumnya yang kita lihat adalah PIN yang GPIO dan beberapa contoh aplikasi praktikal, Hari kami akan menumpukan operasi adanya PIN, dan belajar untuk mengawal mereka dengan penterjemah dalam perintah Bash dan dengan Python.

proto&membawa

Akan menggunakan satu LED, rintangan yang 330 ohm, dawai, dan salah satu Breadboard, atau pateri dan besi pematerian.

Kita juga perlu kami Raspberi telah pun Raspbian Pasang, Jika kes anda tidak, Anda boleh melihat bagaimana untuk melakukannya berikut pautan dari dalam Direktori.

Kuda litar

Anda boleh pateri terus kepada LED Kawat dan rintangan seperti yang anda akan melihat dalam perkara-perkara berikut gambar rajah, Walaupun ia adalah lebih baik untuk menggunakan satu Breadboard; Ianya juga sangat penting untuk melihat pada sideburns, seperti di dalam “pepenjuru” di dalam di dalam Diod LED menggabungkan dua PIN untuk me-mount litar, sudah yang jika anda Gunung ke belakang akan tidak menghidupkan.

Litar yang diperlukan untuk mengawal pencucuhan bagi Diod LED.

Litar yang diperlukan untuk mengawal kuasa Diod LED.

Saya akan menggunakan salah satu Breadboard, dan saya mengesyorkan anda menggunakan satu, Ada segelintir dari kira-kira €4 dan mereka membenarkan kita untuk guna semula komponen-komponen berulang-ulang kali tanpa perlu pateri mereka, sambungan dalaman yang salah Breadboard mereka cenderung untuk menjadi perkara-perkara berikut.

protocon

Sambungan Breadboard.

Sambungan antara yang Breadboard dan Raspberi mereka mesti seperti dalam gambar rajah berikut, dalam GPIO Anda boleh sampai ke isu 3,3V untuk memberikan nilai yang tinggi yang logik.

Litar atas Breadboard.

Litar yang diperlukan untuk mengawal kuasa Diod LED.

Hello dunia GPIO dengan Bash

Sekali dipasang litar, Kita akan lakukan apa yang saya panggil satu “Hello dunia GPIO” dalam Bash menjalankan perkara-perkara berikut skrip.

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

Untuk mematikan LED, kami boleh melakukannya dengan perkara-perkara berikut skrip.

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

Pada asasnya apa yang kita lakukan dengan Bash adalah untuk mewujudkan sebuah Hierarki direktori dalam /SYS/kelas/gpio dan menambah kandungan untuk setiap fail yang akan dianggap sebagai satu Pemboleh ubah.

hierarki

Hierarki dalam direktori /sys/class/gpio.

Pengenalan kepada Python

Kita pun telah membuktikan bahawa kami litar berfungsi dengan betul dan LED telah telah dipecat untuk memberi nilai yang tinggi logik kepada pembolehubah, Sekarang mari kita lihat bagaimana kita boleh melakukan perkara yang sama Python, yang akan membolehkan kami untuk jadual kami aplikasi web untuk mengawal input dan output bagi pihak GPIO dari sebarang peranti.

funcweb

Operasi yang menggunakan aplikasi WEB.

Sebelum meneruskan, Saya mengesyorkan bahawa anda melihat Bab-bab yang 1 untuk itu 10 daripada Tutorial video ini dari Python saluran yang YouTube daripada Kod yang dipermudahkan, Jika kerana saya tidak mempunyai banyak idea pengaturcaraan dalam Python, Ia boleh datang kepada anda yang sangat baik untuk membiasakan anda dengan kod yang kita akan lihat lebih ke hadapan dan datang untuk memahaminya.

Rajah PIN yang berbeza daripada GPIO yang (BCM dan Lembaga Pengarah)

Terdapat dua jenis nombor pin, fizikal pernomboran atau mod LEMBAGA PENGARAH, dan penomboran cip Broadcom Merlimau mengawal mereka, Kita akan menggunakan pinout di dalam mod BCM, tapi Mari kita lihat perbezaan.

BCMvsBOARD

Hello dunia GPIO dengan Python

Selepas menonton video, dan Rajah PIN yang berbeza sudah boleh memahami Kod asas untuk membuat dalam “Hello dunia GPIO” dalam Python.

Mula-mula kita akan memuat turun segala-galanya yang anda perlukan untuk mengawal dengan GPIO dengan Python, dalam Raspbian mereka telah dipasang Python dan Perpustakaan GPIO, tetapi kita akan memasang pakej tambahan yang dan mengemaskini sistem mempunyai versi terkini.

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

Dikemaskini sekali, Mari kita lihat bagaimana untuk menghidupkan di LED dengan perkara-perkara berikut skrip, Sebagai contoh anda boleh menghubungi enciende.py, dan kita boleh jalankan sebagai akar dengan perintah yang “Beliau sekarang bersama 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) 

Dengan ini kita boleh matikan ia, sebagai contoh panggilan 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() 

Dan dengan ini, kami akan menghubungi anda parpadea.py, Kami akan membuat berkelip di 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() 

Jika anda tidak mengimport pustaka “masa“, boleh tambah dalam “Tidur“, dan jika tidak menambah di “Tidur” saat antara dan mematikan, Ia adalah agak mungkin bahawa mata kita akan menyedarinya berkelip.

Ia adalah sangat penting untuk tidak menambah aksara khas di dalam skrip dalam Python, atas sebab ini komen jangan melakukan sentuhan, Kerana ia memberikan ralat aksara yang tidak sah.

Dalam entri seterusnya Kita akan lihat bagaimana untuk membuat mudah Aplikasi web membolehkan kita untuk melaksanakan ini skrip, dapat mengawal dari sebarang peranti dengan penyemak imbas Web.

Jika anda mahu anda boleh Ikuti saya di Twitter, Facebook, Google +, LinkedIn, atau berkongsi dengan butang di bawah penerbitan ini, Jika anda mempunyai sebarang pertanyaan atau cadangan sila tidak teragak-agak untuk memberi komen.

Membantu kita untuk mencapai lebih banyak pembaca Share on LinkedIn
LinkedIn
Share on Facebook
Facebook
Tweet about this on Twitter
Twitter
Share on Google+
Google +
Email this to someone
e-mel

16 tinjuan"PI Raspberi dan GPIO PIN: Mengawal LED Bash dengan Python

  1. Saya punya soalan dari newbie…
    kerana ketahanan 330 ohm dan bila hendak menggunakannya?

    Selalu digunakan untuk 330 Bilakah kami bekerjasama dengan RPI, atau ia mungkin berbeza-beza?

    Blog ucapan dan cemerlang!!!

  2. Hello saya bekerja, 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. Hello,
    Saya cuba untuk memasang LED untuk melalui python mengikuti panduan sampel tetapi ia memberi saya ralat berikut apabila saya menjalankan kod ia:

    mengimport RPi.GPIO sebagai GPIO

    Ralat:
    -Bash: Import: perintah tersebut tidak dijumpai

    Adakah anda tahu mengapa kesilapan ini?

    Terima kasih dan tahniah atas blog berkhidmat saya banyak!

    • Hello Nano, Terima kasih untuk mengulas.

      Ia seolah-olah bahawa kod yang ditafsirkan oleh Bash dan tidak Python.

      Adakah anda menjalankan skrip, atau baris kod dalam terminal terus?

        • Saya gembira bahawa anda menyelesaikan!!!

          Terima kasih untuk mengulas, tidak teragak-agak untuk berbuat demikian jika anda mempunyai sebarang pertanyaan; antara pembaca dan saya akan terlepas tangan.

  4. Baik lagi,
    apa yang saya tidak faham ialah baris pertama kod: #!usr/bin/env/python
    apa dia?
    Saya melihat bahawa ia berfungsi hanya dengan atau tanpa

    • Hello Nano, selamat datang lagi.

      Garisan yang anda menyebut adalah penyata yang sering dimasukkan pada permulaan sebuah skrip untuk memberitahu terminal di mana pentafsir yang perintah sekiranya anda lulus, dalam kes ini, Python; untuk bash adalah seperti berikut:

      #!/bin/bash

      Dalam kes ini, ia berfungsi dengan pengisytiharan dan tanpanya kerana fail mempunyai .py lanjutan, tetapi ia adalah amalan yang baik untuk sentiasa menambah.

      Saya berharap untuk telah menjelaskan keraguan anda, kembali di sini bila-bila masa anda mahu dan terima kasih banyak untuk 🙂 komen anda

  5. terima kasih, tutorial adalah sangat baik, tapi saya ragu-ragu:

    mereka meninggalkan saya dengan ralat-ralat berikut:

    talian 12 Import:tidak dijumpai
    talian 14 Ralat sintaks: perkataan yang tidak dijangka (mengharapkan “)”)

    Kod saya:

    #GPIO-setup.py
    ### MULAKAN INIT INFO
    # Menyediakan: GPIO-setup.ch
    # Dikehendaki / mula: $remote_fs $syslog
    # Diperlukan untuk membuat: $remote_fs $syslog
    # Lalai-mula: 2 3 4 5
    # Lalai-Stop: 0 1 6
    # Pendek-penerangan: Persediaan mod gpio
    # Description/kawalan: Gpio persediaan 22/27/17/4 Keluar mod
    ### INFO INIT AKHIR

    mengimport RPi.GPIO sebagai GPIO
    #Kami mentakrifkan mod BCM
    GPIO.setmode(GPIO. BCM)
    #Kami kini mentakrifkan PIN output yang GPIO
    GPIO.setup(4, GPIO. KELUAR)
    GPIO.setup(17, GPIO. KELUAR)
    GPIO.setup(27, GPIO. KELUAR)
    GPIO.setup(22, GPIO. KELUAR)

    Apa-apa idea???

    • Hello Leoctam, Terima kasih untuk mengulas.

      Baris pertama memberi faham bahawa anda cuba untuk mewujudkan satu sistem daemon, tetapi mereka akan mengulas supaya ia tidak akan diambil kira.

      sebaliknya, Kod yang anda gunakan untuk berinteraksi dengan GPIO itu adalah Python, Jadi anda mesti tinggal di .py skrip yang akan dipohon daripada daemon sistem anda, atau gunakan Bash untuk berbuat demikian seperti dalam contoh pertama dalam tutorial ini.

Tinggalkan Jawapan