Pines GPIO en Raspberry Pi
Pines GPIO en Raspberry Pi
Pines GPIO en Raspberry Pi
Inteligencia Artificial
¿Qué es GPIO?
GPIO son las siglas de General Purpose Input/Output, es decir, Entrada/Salida de propósito general. Lo
pueden tener diferentes productos electrónicos, como los propios chips o ciertas placas PCB como es el
caso de esta Raspberry Pi. Como su propio nombre indica, son pines que se pueden configurar para
realizar distintas funciones, de ahí que sean de propósito general y no para un uso específico.
Será el usuario en tiempo de ejecución el que pueda configurar estos pines GPIO para que hagan lo que
él quiere. Se puede hacer de diferentes formas, como con ciertos códigos o scripts desde la consola o
con el programa Python, que es una de las formas más sencillas y preferidas por la cantidad de
opciones que tienes a tu disposición.
De esta forma, la Raspberry Pi no solo dispone de una serie de puertos e interfaces para conectar varios
dispositivos estándar, sino que agrega estos pines GPIO para que puedas agregar otros dispositivos
electrónicos o proyectos makers que tú mismo hayas creado. De la misma forma que lo harías con
Arduino y sus pines E/S para el control.
Y no es exclusividad de Arduino o la Raspberry Pi, también lo tienen otras placas SBC similares y
productos embebidos.
Funciones de los GPIO
Y entre sus características más destacadas:
M.C.I. Victor Manuel Mora Romo
Pueden ser configurados tanto como entrada como de salida. Tienen esa dualidad como les ocurre a los
de Arduino.
Los pines GPIO también pueden ser activados y desactivados mediante código. Es decir, pueden ponerse
a 1 (alto nivel de voltaje) o a 0 (bajo nivel de voltaje).
Por supuesto pueden leer datos binarios, como los unos y ceros, es decir, señal de voltaje o ausencia de
ella.
Valores de salida de lectura y escritura.
Los valores de entrada pueden ser configurados en algunos casos como eventos para que generen algún
tipo de acción sobre la placa o sistema. Algunos sistemas embebidos los usan como IRQ. Otro caso es
configurar que cuando uno o varios pines estén activos por ciertos sensores realice alguna acción…
En cuanto al voltaje e intensidad, debes saber bien las capacidades máximas aceptables por la placa, en
este caso la Raspberry Pi 4 o la 3. No debes pasarlos para no dañarla.
Por cierto, cuando se agrupa un grupo de pines GPIO, como es el caso de la Raspberry Pi, se conoce al
conjunto como puerto GPIO.
Los pines GPIO de la Raspberry Pi
Las nuevas placas Raspberry Pi 4 y la versión 3 están dotadas con un gran número de pines GPIO. No
todas las versiones ofrecen la misma cantidad, ni están numerados de la misma forma, así que hay que
tener cuidado con esto para saber bien cómo debes realizar la conexión según el modelo y revisión que
tengas.
Pero lo que sí es más genérico es los tipos de GPIO que puedes encontrar en el puerto de las placas
Raspberry Pi. Y eso será lo primero que me gustaría dejar claro, ya que así conocerás los tipos de
pines con los que puedes contar para tus proyectos:
No en todos los modelos son los mismos pines, aquí se puede ver las diferencias entre modelos y así
poder centrarme en los de la Raspberry Pi 4 y 3, que son las más nuevas y la que probablemente tengan
en su poder. Se diferencia entre (todas las de cada grupo comparten los mismos pines):
Raspberry Pi 1 Model B Rev 1.0, con 26-pin ligeramente diferente al de la Rev2.
Raspberry Pi 1 Model A y B Rev 2.0, ambos modelos con 26-pin.
Rapsberry Pi Model A+, B+, 2B, 3B, 3B+, Zero y Zero W, y también los modelos de 4. Todos ellos con un
cabezal de 40-pin GPIO.
La forma más básica de hacer una especie de «hello world» con los GPIO es usar un simple LED
conectado a los pines de la Raspberry Pi para que se pueda ver cómo funcionan. En este caso, se ha
conectado a GND y el otro al pin 17, aunque se puede elegir otro de los pines normales.
Nota de caracteres
Para usarlos en Linux es bastante sencillo, solo se debe presionar Ctrl+Shift y la tecla U
seguida del código ASCII pero en Hexadecimal, al comienzo con estos códigos se nos puede
complicar el uso porque estamos acostumbrados a la combinación de teclas Alt + (número
decimal) en Windows, pero todo es cuestión de costumbre, y pues teniendo las tablas a la
mano realmente se puede ahorrar tiempo valioso al momento de requerir símbolos
especiales.
Luego lo puedes configurar como una entrada (in) o como una salida (out) ese pin 17 elegido para
nuestro ejemplo. Puedes hacerlo muy fácilmente con:
echo out > /sys/class/gpio/gpio17/direction
En este caso como salida, ya que queremos enviar un pulso eléctrico al LED para encenderlo, pero si se
tratase de un sensor, etc., podrías usar in. Ahora, para encender (1) o apagar (0) el LED puedes usar:
echo 1 > /sys/class/gpio/gpio17/value
Programación en Python
En primer lugar, se importa la librería GPIO y time. Vamos a utilizar el pin situado en su posición
de la placa 7. La siguiente instrucción será la inicialización del pin, es decir, los pines pueden ser
utilizados como entradas o salidas. Por último, solamente nos quedará activar (True) o desactivar
(False) el pin seleccionado. Para ello, se va a situar el código dentro de un bucle infinito.
GPIO.setmode(GPIO.BOARD)
GPIO.setup(11, GPIO.OUT)
while True:
GPIO.output(11, True)
time.sleep(1)
GPIO.output(11, False)
time.sleep(1)
NOTA: se hace referencia al pin del gpio no del nombre del gpio.
GPIO.setmode(GPIO.BOARD)
GPIO.setup(3, GPIO.IN)
GPIO.setup(7, GPIO.OUT)
while True:
if GPIO.input(3):
GPIO.output(7, False)
else:
GPIO.output(7, True)