Gpio Raspberrypi2
Gpio Raspberrypi2
Gpio Raspberrypi2
utilizarlos nos abre un mundo de posibilidades. De eso trata este artculo, de abrirte las
puertas de este mundo e introducirte en la programacin y presentarte las posibilidades de
los GPIO. En prximos post tambin te ensearemos a conectar Arduino y la Raspberry Pi
mediante estos pines para conseguir grandes proyectos uniendo el poder de ambas
plataformas.
ndice [Ocultar]
5.4 BASIC
En las siguientes imgenes podemos apreciar los distintos layouts de los modelos
existentes por el momento:
Como puedes comprobar, existen tres esquemas bsicos. Los de la revisin 1.0
del modelo B, los incluidos en la revisin 2.0 del modelo A y B, y los modernos A+,
B+ y 2 que comparten el mismo esquema de conexiones.
En cambio, los HATs son similares a los shields o escudos de Arduino. Es decir,
placas de expansin que se pueden conectar a los GPIO para agregar
funcionalidades a la placa. Si te fijas en el nombre, coincide con la palabra inglesa
sombrero y que hace referencia a la forma en que se conectan con la Raspi.
Al ser un complemento nuevo, stos solo son compatible con los modelos de
Raspberry Pi que comparten el mismo esquema de conexiones. Si recuerdas el
apartado anterior, stos son el A+, B+ y la nueva versin 2 de la placa SBC. Pero
en el mercado podrs encontrar diferentes fabricantes que suministran este tipo de
HATs para Raspberry Pi. Uno de ellos es AdaFruit, que vende tarjetas de expansin
denominadas HatADay y que contienen pantallas TFT, GPS, servomecanismos,
complementos para robtica, etc
Al igual que Arduino emplea su entorno Arduino IDE para crear sketchs o cdigos
fuente para programar los proyectos, la Raspberry Pi permite tambin programar
sus GPIO, pero con mayor flexibilidad. Se puede realizardesde tu
distribucin utilizando multitud de herramientas con diversos lenguajes de
programacin (Python, Java, C,), o desde la consola utilizando sencillos scripts y
comandos.
Por lo general, la Raspberry Pi utiliza distribuciones Linux. Como buen UNIX, el
sistema operativo tratar a todos los elementos, incluido el hardware, como un
fichero. Ya sabes que en Windows existen unidades (C:, D:,) o dispositivos
hardware. Pero en un *nix todo son ficheros, como por ejemplo el disco duro
(/dev/sda), la unidad de DVD (/dev/dvd), tarjetas SD (/dev/mmcblk0), etc
Pues bien, los puertos GPIO tambin sern tratados como un fichero ms, aunque
no se encuentren en el dierctorio /dev, y por tanto podrs emplear los comandos
bsicos de la consola para gestionar ficheros. Por ejemplo, si queremos controlar
un LED, podramos entrar en la consola (para nuestros ejemplos hemos empleado
Raspbian) y escribir lo siguiente:
Con esta lnea crearamos un fichero con la estructura del GPIO correspondiente
para que pueda ser manipulado. Luego se debera de configurar como entrada o
salida, segn lo que quieras. En nuestro caso como salida, puesto que queremos
alimentar al LED para encenderlo:
echo out > /sys/class/gpio/gpio17/direction
Ahora se podra encender o apagar. Para ello le podemos dar valores a la salida
que hemos creado. Si le damos valor 1 se encender y con valor 0 se apagar:
echo 1 > /sys/class/gpio/gpio17/value
echo 0 > /sys/class/gpio/gpio17/value
Una vez termines el experimento, puedes borrar la entrada para realizar otro
ejercicio en el mismo pin o en otro diferente:
echo 17 > /sys/class/gpio/unexport
Tambin puedes crear scripts para Bash (o el intrprete que utilices). Por ejemplo,
continuando con el ejemplo del LED, se puede crear un script que podamos ejecutar
en cualquier momento sin tener que poner los comandos uno a uno. Para ello, abre
un fichero de texto y escribe el siguiente contenido:
#!/bin/bash
source gpio
gpio mode 17 out
while true; do
gpio write 17 1
sleep 1.3
gpio write 17 0
sleep 1.3
done
C y wiringPi
Una de las mejores maneras de crear programas en lenguaje de programacin
C es utilizando la biblioteca wiringPI (si tu distro no la tiene instalada, lo primero que
debes hacer es descargarla e instalarla, al igual que el compilador gcc u otro que
prefieras). Yo utilizar gcc y la librera wiringPI. Para crear nuestro cdigo fuente
debemos enlazar la biblioteca.
Si no los tienes instalados, instala GCC:
sudo apt-get install gcc
Si por ejemplo queremos seguir con nuestro ejemplo de LED que titila, y lo
denominamos LED.c. En un editor de texto que prefieras, como por ejemplo gedit,
puedes escribir el cdigo fuente y luego guardarlo con el nombre que hemos
elegido. El contenido de nuestro programa en C contendr las siguientes lneas:
/*Cdigo fuente para hacer titilar un LED desde los GPIO*/
#include <stdio.h>
#include <wiringPi.h>
int main (void)
{
printf (Titilando LED\N);
if (wiringPiSetup () == -1)
return 1;
pinMode (0, OUTPUT); //0 es el correspondiente del chip al pin 17
for (;;)
{
Python
Python es el lenguaje preferido para programar los GPIO. Las bibliotecas
anteriormente citadas, tambin pueden ser empleadas con Python. Raspbian ya
incluye un mdulo denominado RPI.GPIO para poder crear scripts en Python, pero
te recomiendo que utilices e instales pigpio, ya que stos scripts pueden ser
ejecutados tanto en Windows, Mac OS X como en Linux. Solo se necesitan los
demonios corriendo en la mquina donde quieras ejecutar el cdigo.
Instlalo as:
sudo apt-get install python-dev python-rpi.gpio
Lo debes guardar con el nombre LED y la extensin .py y para ejecutarlo, teclea
en el terminal:
sudo pigpiod
./LED.py
Scratch y GPIO
Para usar Scratch con los GPIO podemos utilizar diferentes mtodos, como con
el resto de lenguajes de programacin. Uno es emplear ScratchGPIO,
RpiScratchIO, etc Pero lo primero, si ya tienes Scratch y as ser si ests
utilizando Raspbian, es instalar el complemento ScratchGPIO:
sudo wget http://goo.gl/Pthh62 -O in stall_scratchgpio5.sh
sudo bash install_scratchgpio5.sh
BASIC
Si ests acostumbrado a programar en BASIC o ya eres usuario de placas de
desarrollo de Parallax BASIC Stamp (que emplea PBASIC para programar los
microcontroladores), te resultar ms sencillo programar los pines GPIO en lenguaje
BASIC.
Una de las posibilidades es usar RTB (Return to Basic), para instalarlo (en este
caso es la versin 2.20):
cd /tmp
wget http://unicorn.drogon.net/rtb-2.20-1.deb
sudo dpkg -i rtb-2.20-1.deb
sudo apt-get -f install
Para ejecutarlo, solo tienes que teclear rtb en el terminal. Y con l teclear el
siguiente cdigo fuente renovado, aunque con reminiscencias del BASIC clsico y
guardarlo como LED.rtb:
//Titilar LED
PinMode (17, 1) //Pin 17 como salida
CYCLE
DigitalWrite (17, 1) //Pin ON
WAIT (1.3) //Esperamos 1.3 segundos
DigtialWRite (17, 0) //Pin OFF
WAIT (1.3)
REPEAT
END
Espero que te haya servido de ayuda. Cualquier duda u opinin, deja tus
comentarios!