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:

pinout GPIO Raspberry Pi

 

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.

 

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

 

Para definir el pin 40 (gpio21) como una línea de salida, debemos escribir lo siguiente:

 

Si utilizamos la numeración del conector, la forma de configurarlo sería así:

 

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:

#salida a nivel alto
GPIO.output(21, GPIO.HIGH)
#salida a nivel bajo
GPIO.output(21, GPIO.LOW)
El código completo que debes escribir en Thonny, sería este:
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.

 

circuito encendido y apagado LED

 

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:

 

Para leer el nivel lógico presente en el pin debemos usar la siguiente instrucción:

 

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

 

circuito control GPIO Raspberry pi

 

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



← Publicación más antigua Publicación más reciente →