Малини Пі і GPIO шпильки: Контролюючи світлодіодні з Bash і Python

У попередньому пості ми побачили були GPIO шпильки і деякі приклади практичного застосування, Сьогодні ми зосередимо увагу на операцію загального призначення шпильки, і навчитися контролювати їх із замовленнями перекладача Bash і з Python.

proto&привів

Буде використовувати є СВІТЛОДІОДНІ, стійкістю 330 Ом, Дріт, і один Макетів, або Припій і паяльником.

Ми також повинні наших Малини tenga ya Raspbian попередньо встановлені, Якщо ваш випадок не, Ви можете побачити, як це зробити наступні посилання з в Реєстр.

Їзда ланцюг

Ви можете паяти безпосередньо на СВІТЛОДІОДНІ дріт і опору, як ви побачите нижче діаграма, Хоча це набагато краще використовувати в Макетів; Це також дуже важливо, щоб виглядати добре на Бачка, як у в “Діагональ” всередині на діод СВІТЛОДІОДНІ об'єднання двох шпильки змонтувати ланцюг, вже що якщо вам змонтувати його назад не включається.

Ланцюга, необхідних для управління запалювання діоди LED.

Схема необхідно контролювати силу діоди LED.

Я збираюся використовувати один Макетів, і я рекомендую вам використовувати є, Є деякі від приблизно €4 і вони дозволяють нам знову і знову повторно компонентів без необхідності припою їх, внутрішні підключення одного Макетів вони, як правило, нижче.

protocon

Макетів підключень.

Зв'язки між на Макетів і на Малини вони повинні бути, і в наступну діаграму, на GPIO Ви можете дістатися до випуску 3,3V Щоб призначити логічних високе значення.

Circuito en Protoboard.

Схема необхідно контролювати силу діоди LED.

Привіт світ GPIO з Bash

Одного разу змонтований ланцюга, Ми будемо робити, що я називаю це “Привіт світ GPIO” у Bash ejecutando el siguiente сценарій.

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

Щоб вимкнути Світлодіод, ми можемо це зробити наступні документи сценарій.

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

Основному те, що ми робимо з Bash Щоб створити за Ієрархія тек у /sys, клас, gpio y añadir contenido a cada archivo que será tratado después como una Змінна.

jerarquia

Ієрархія теці /sys/class/gpio.

Введення в Python

Ми вже довели, що наша схема працює правильно і на СВІТЛОДІОДНІ його звільнили з дати логічних високе значення змінної, Тепер давайте подивимося, як ми можемо зробити те ж саме Python, Це дозволить нам, щоб призначити наших веб-додатки контролювати входів і виходів на GPIO з будь-якого пристрою.

funcweb

Операції за допомогою веб-застосунку.

Перш ніж продовжити, Я рекомендую, що ви бачите глави до 1 щоб на 10 з Це відео-підручник з Python канал YouTube з Код сприяло, Якщо як я не мають набагато уявлення про програмування на мові Python, os puede venir muy bien para familiarizaros con el código que vamos a ver mas adelante y llegar a entenderlo.

Різні чином на GPIO (BCM і Ради)

Існують два види pin нумерації, фізичні нумерації або режим ДОШКА, і нумерації чіп SoC Broadcom que los controla, Ми будемо використовувати на терморегулятори в режимі МЛРД КУБОМЕТРІВ, але давайте подивимося на різницю.

BCMvsBOARD

Привіт світ GPIO з Python

Після перегляду відео, і різні чином вже можна зрозуміти основні код, щоб зробити в “Привіт світ GPIO” у Python.

Спочатку ми будемо завантажити все необхідне для контролю за GPIO з Python, у Raspbian ya vienen instalados Python і бібліотек GPIO, але ми будемо встановлювати додатковий пакет і оновлення системи, щоб мати останню версію.

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

Оновлюється один раз, Давайте подивимося, як увімкнути на СВІТЛОДІОДНІ з наступним сценарій, Наприклад, ви можете зателефонувати enciende.PY, y podemos ejecutarlo como root con el comando “Sudo Пітон 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) 

З цим ми можна вимкнути, Наприклад, виклику 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() 

І з цим ми додатково передзвонимо вам parpadea.PY, Ми докладемо блимати в СВІТЛОДІОДНІ.

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

Якщо ви не імпортувати бібліотеки “час“, не можна додати до “сон“, і якщо не додати до “сон” другий між і вимикається, Цілком можливо, що наші очі не сприймають мерехтіння.

Дуже важливо, щоб не додати спеціальні символи в на скрипти на Python, з цієї причини зауваження нести акценти, З тих пір вона дала неприпустимий символ помилка.

У такий запис Ми побачимо, як зробити простий Веб-застосунок Дозвольте нам виконати ці скрипти, щоб мати можливість керувати ним з будь-який пристрій з веб-переглядача Web.

Якщо ви любите ви можете слідкувати за мене на Twitter, Facebook, Google +, LinkedIn, або поділитися ним з кнопок під цієї публікації, Якщо у вас виникли питання або пропозиції будь ласка, не соромтеся коментувати.

Допомогти нам досягти більше читачів Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+Email this to someone

16 думки про"Малини Пі і GPIO шпильки: Контролюючи світлодіодні з Bash і Python

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

    • 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.

  2. Вітаю,
    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:

    Імпорт RPi.GPIO як 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!

    • Привіт 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.

      Я сподіваюся, що ваші сумніви знято, vuelve por aquí cuando quieras y muchas gracias por tu comentario 🙂

  3. Дякую, 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

    Імпорт RPi.GPIO як GPIO
    #Definimos el modo BCM
    GPIO.setmode(GPIO. МЛРД КУБОМЕТРІВ)
    #Ahora definimos los pines GPIO como salida
    GPIO.setup(4, GPIO. НА)
    GPIO.setup(17, GPIO. НА)
    GPIO.setup(27, GPIO. НА)
    GPIO.setup(22, GPIO. НА)

    Будь-яка ідея???

    • Hola Leoctam, Спасибі за коментар.

      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.

      З іншого боку, 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.

Напишіть відгук