Raspberry Pi GPIO
Publicado por Loli Diéguez en
Gestiona las líneas GPIO de tu Raspberry Pi
Sabemos que las placas Raspberry Pi pueden ofrecer una gran variedad de posibilidades y esto también es debido a la presencia de su GPIO formado por 40 pines (Raspberry Pi 1, 2, 3 y Cero ), este interfaz permite conectar esta placa a diferentes tipos de circuitos electrónicos y el comportamiento de estos pines se puede definir mediante programación Python.¿Qué son las líneas GPIO?
Las líneas GPIO (salida/entrada de propósito general) son conexiones entre el procesador y los pines del conector de la placa. Estas líneas se pueden programar para que funcionen como puertos de entrada y como puertos de salida. Algunas de estas líneas tienen características adicionales porque se pueden configurar como líneas UART, SPI o I2C.Función de pin
Para conocer la posición y la denominación de las líneas GPIO en el conector de 40 pines de la Raspberry Pi, usa el comando pinout que te mostrará las distribucion en la placa, para esto abre el terminal de comandos en Raspbian y escribe el siguiente comando:
$ pinout
|
Pulsa "Enter" y después de unos momentos tendrás en el terminal de comandos la representación de los periféricos de la placa y, en particular, el conector de 40 pines:
Las líneas GPIO se muestran en verde, las patillas conectadas a GND están en gris, las líneas de suministro de energía de 5Vdc en rojo y las líneas de suministro de energía de 3.3V en azul. La programación de los puertos IO se puede hacer usando diferentes lenguajes de programación, pero por supuesto vamos a usar el lenguaje Python porque es el que se usa principalmente en esta plataforma.
Como configurar pines GPIO con Python
Configurar pines GPIO como salida
Para usar los puertos IO tenemos el atributo GPIO del módulo RPi . Este atributo proporciona métodos para definir una línea como una entrada o como una salida y permite verificar su estado. Si es una línea de salida, es posible configurarla en un nivel lógico alto o bajo, si es una línea de entrada, es posible leer el valor lógico disponible en el pin. Para escribir el programa Python usamos Thonny, disponible como software preinstalado en las últimas versiones de Raspbian. Escribimos la primera declaración que define el atributo GPIO.
from RPi import GPIO
|
La siguiente instrucción, por otro lado, es necesaria para definir el modo de referencia del pin. En la práctica, podemos referirnos a un pin a través de la numeración del conector (de 1 a 40) o a través de la numeración del procesador (por ejemplo, gpioxx). Usando las siguientes instrucciones usaremos la numeración gpio del procesador
GPIO.setmode(GPIO.BCM)
|
Para definir el pin 40 (gpio21) como una línea de salida, debemos escribir lo siguiente:
GPIO.setup(21, GPIO.OUT)
|
Si utilizamos la numeración del conector, la forma de configurarlo sería así:
GPIO.setmode(GPIO.BOARD)
|
GPIO.setup(40, GPIO.OUT)
|
Las dos instrucciones anteriores producen el mismo resultado, es decir, definir el pin 40 (gpio21) como una salida. Una vez que el pin se define como una línea de salida digital, podemos administrar su estado con la siguiente declaración:
from RPi import GPIO
import time
#tipo de referencia numeración CPU
GPIO.setmode(GPIO.BCM)
#pin 21 como salida
GPIO.setup(21, GPIO.OUT)
#bucle
while (True):
#salida 21 a alto
GPIO.output(21, GPIO.HIGH)
#espera 1 segundo
time.sleep(1)
#salida 21 a bajo
GPIO.output(21, GPIO.LOW)
#espera un segundo
time.sleep(1)
|
A continuación se muestra el circuito utilizado para verificar la correcta ejecución del código que encenderá un led conectado al pin 21, este led se encenderá y apagará cada segundo.
Configurar pines GPIO como entrada
De la misma manera que configuramos un pin de salida, podemos usar algunas instrucciones simples para configurar un pin de entrada. La siguiente instrucción configura la línea Gpio 20 (pin 38) como entrada:
GPIO.setup(20, GPIO.IN)
|
Para leer el nivel lógico presente en el pin debemos usar la siguiente instrucción:
GPIO.input(20)
|
El siguiente circuito permite tener en el pin 38 (gpio20) un nivel lógico alto (+3.3Vdc) y al presionar el botón un nivel lógico bajo (0Vdc).
El código para verificar el estado del pin es el siguiente:
from RPi import GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(20, GPIO.IN)
while (True):
if GPIO.input(20)== False:
print ("botón pulsado")
|
Cada vez que presionamos el botón se imprimirá la cadena "Botón presionado".
Estas son las instrucciones básicas que nos permiten conectar la Raspberry Pi con el mundo exterior utilizando las líneas GPIO como entradas y salidas digitales.
Compartir esta publicación
- Etiquetas: clone, raspberry pi, tutorial