Revista Tecnología

Introducción a los puertos GPIO de la Raspberry Pi

Publicado el 20 mayo 2014 por Albertonavarro

Detalle de los GPIO en la placa Raspberry Pi

En el artículo sobre el kit robot de la tienda ya informamos sobre la posibilidad de integrar la Raspberry Pi al kit para ampliar las posibilidades. En éste artículo haré un tutorial introductorio sobre el manejo de los GPIO de la Raspberry Pi para controlar un LED y así aprender mejor como funcionan, antes de pasar a mayores.

Primero me gustaría hablarte de los GPIO

Si no conoces aun los puertos GPIO, deberías saber que son unos pines que integra la placa de la Raspi con los que puedes trabajar electrónicamente para propósito general como lo harías con Arduino. De aquí viene su nombre GPIO (General Purpose Input Output), en castellano Entrada/Salida de propósito general.
Los puertos GPIO se encuentran delimitados en la imagen de la portada de éste artículo. Vienen implementados en dos filas de 13, es decir, un total de 26 pines. Aunque físicamente parezcan todos iguales, no lo son. En la siguiente imagen puedes ver una tabla detallada:

Tabla de correspondencia de los pines GPIO de la Rasbperry Pi Rev 2.0

Debes tener en cuenta que los pines son de tipo “unbuffered” y no están protegidos. Así que debes tener cuidado con las magnitudes (voltajes, intensidades,…) para no dañar tu placa.

Estos son los pines de la Raspberry Pi Rev 2.0, con la que trabajaremos en nuestro artículo y que está disponible en nuestra tienda. Las de la Rev 1.0 son levemente distintos. En nuestro caso podemos apreciar 1 pin de 5v, otro de 3.3v, tierra (Ground), 6 de tipo DNC (Do Not Connect), ocho GPIO normales y otros especiales. Por ejemplo, entre los especiales nos encontramos los UART TXD y RXD para comunicaciones serie, la interfaz SDA, SCL, MOSI, MISO, SCLK, CE0, CE1.

En Arduino se emplea el entorno Arduino IDE para programar la electrónica. En este caso puedes utilizar el propio sistema operativo y sus herramientas para hacer lo mismo con los pines GPIO. Esto permite una mayor flexibilidad, ya que puedes emplear multitud de herramientas y distintos lenguajes de programación (Python, Java, C,…) para este fin.

Material necesario

Para este experimento vamos a necesitar el siguiente material:

  • Raspberry Pi Rev 2.0 ya configurada y con los periféricos necesarios.
  • Dos cables unifilares, a poder ser de dos colores distintos.
  • Un LED del color que prefiramos.

Procedimiento paso a paso

Lo primero que vamos a hacer con la Raspberry Pi parada es conectar los cables al GPIO número 17, capaz de aportar 3v3 para encender nuestro LED. El otro cable irá conectado al pin 6, es decir, el de tierra (Ground). Después recuerda conectar el cátodo (pin corto del LED) al cable de tierra y el ánodo (pin largo del LED) al GPIO 17 para aportar voltaje.

Conexión del LED a los GPIO de la Raspberry Pi

No es necesario disponer de una breadboard o placa de pruebas con la de la imagen para el conexionado. Se puede realizar directamente desde los GPIO al LED

Bien, ya tenemos toda la parte de la electrónica configurada, ahora pasamos a la programación. Linux, en este caso Raspbian, es un sistema operativo UNIX. Y sin entrar en muchos detalles, la filosofía de estos sistemas es que todo es un fichero, incluido el hardware. Por eso en Windows encontramos unidad C: o dispositivo Bluetooth y en los *nix encontramos direcciones de directorios que apuntan a un disco duro (/dev/sda), a una unidad de DVD (/dev/dvd), tarjeta SD (/dev/mmcblk0), etc.

Lo que quiero decir con ésto es que los puertos GPIO y por tanto lo que haya conectado a ellos será tratado como un directorio más. Por eso, podemos utilizar comandos de manejo de directorios con nuestro hardware. En este ejemplo solo nos valdremos de comandos, pero se pueden implementar pequeños programas en algún lenguaje de programación o incluso crear script en Bash para manejarlo.

Si accedemos al terminal de Raspbian en la Raspberry Pi, podemos crear una entrada al pin 17 para que el sistema cree un fichero con la estructura del GPIO correspondiente. Se hace de esta forma:

echo 17 > /sys/class/gpio/export

Ahora indicaremos al sistema si el pin se usará como entrada o como salida. En este caso tiene que ser de salida para que aporte un voltaje cuando lo necesitemos y encienda nuestro LED. Escribe:

echo out > /sys/class/gpio/gpio17/direction

Ahora, si le damos valores al pin activado, se encenderá (1) o apagará (0). Podemos emplear las siguientes órdenes:

echo 1 > /sys/class/gpio/gpio17/value
echo 0 > /sys/class/gpio/gpio17/value

Una vez culminado el experimento, puedes borrar la entrada creada anteriormente para pasar a otra práctica. Para eliminar la entrada debes teclear:

echo 17 > /sys/class/gpio/unexport

Esto combinado con nuestro Arduino y el kit robot dará mucho juego, como podréis ver en próximos artículos.

El artículo Introducción a los puertos GPIO de la Raspberry Pi ha sido originalmente publicado en ComoHacer.eu | ¿Inventamos juntos?.


Volver a la Portada de Logo Paperblog