GPIO

Una de las ventajas que tiene Rasbperry Pi es que permite trabajar directamente con sus pines GPIO (General Purpose Input Output).

Aunque no era necesario trabajar con GPIO para crear nuestro superordenador creemos que es muy interesante conocer como se puede trabajar ellos, ya que permiten incorporar cualquier sensor a nuestra Raspberry así como controlar cualquier dispositivo.

Tenemos a nuestra disposición 20 pines con diferentes funciones: alimentación (5V o 3,3V), ground y programables.

La librearía WiringPi

Para trabajar con los GPIO nos hemos descargado la última versión de la librería wiringPi desde su página oficial y la hemos instalado como cualquier paquete debian con el comando dpkg -i

wget https://project-downloads.drogon.net/wiringpi-latest.deb

sudo dpkg -i wiringpi-latest.deb

Comandos básicos

gpio readall 

Muestra la lista de pines y su función. Hay diferentes formas de nombrar los pines GPIO, en la imagen se puede ver la correspondencia entre unos y otros:

  • Physical:  son los números impresos en la Raspberry Pi, van correlativos
  • BCM: se refiere a los pines por su numero Broadcom SOC channel, es como los nombra el kernel
  • wPI: es la numeración de la librería WiringPi


pinout

Muestra de forma visual información general del sistema

Programación de GPIO

Hemos montado un pequeño circuito con un led y una resistencia para protegerlo. 

Una vez entendido y montado el circuito hemos encendido el led de dos formas:

1- Escribiendo directamente en los ficheros del sistema

Podemos comunicarnos directamente con el Kernel escribiendo en sus ficheros:

## Especificamos el pin que vamos a usar. Esto creara un nuevo directorio gpio21

echo 21 > /sys/class/gpio/export

##Convertimos el pin para que sea de salida

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

##Encendemos/ apagamos el led enviando un 1 o un 0 al pin 21

echo 1 > /sys/class/gpio/gpio21/value

echo 0 > /sys/class/gpio/gpio21/value

## para finalizar la práctica deshabilitamos el pin

echo 21 > /sys/class/gpio/unexport

2- Usando la librería WiringPI

Escribir directamente en los ficheros del sistema puede crear problemas, una forma más eficiente de acceder a los GPIO es mediante librerías. Usaremos la librería WiringPi que hemos descargado previamente y su comando gpio

Hay que tener en cuenta que la numeración de pines es diferente, pero podemos forzar a que use la numeración de los pines del sistema con la opción -g

## Elegir el modo del pin in o out

gpio -g mode 21 out

##Escribir en el pin un 0 o un 1

gpio -g write 21 0

gpio -g write 21 1

Podemos usar directamente los pines WiringPi sin usar la opción -g, simplemente buscaremos en la tabla de correspondencia el valor al que corresponde

gpio mode 29 out

##Escribir en el pin un 0 o un 1

gpio write 29 0

gpio write 29 1

Comentarios