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
Publicar un comentario