25 de abril de 2013

Raspberry PI: GPIO con Python



Ya conocemos el potencial de Raspberry PI como PC de bolsillo, pero aun no hemos visto su potencial en proyectos relacionados con la electrónica y la comunicación con otros dispositivos.

La Raspberry Pi posee unos pins integrados y de fácil acceso, son patillas de alimentación ( +5 y +3.3 V) , masa, y entradas/salidas capaces de implementar diferentes protocolos.



Según la versión de nuestra RPi tendrás los pins distribuidos de una forma u otra. Aquí tienes toda la información necesaria para conocer el GPIO.

GPIO Raspberry Pi

Para controlar estos pines desde un programa en python usaremos la librería RPi.GPIOEsta librería no es la ideal para aplicaciones que requieran ejecutarse en tiempo real o en las que haya tiempos críticos. Esto es debido a la recolección de basura de Python, no se puede predecir cuando va a estar ocupado. Además se ejecuta bajo el kernel de Linux que no es adecuado para el tiempo real ya que Linux es multitarea y otros procesos podrían tener prioridad para uso de la CPU. Además esta librería no soporta I2C, SPI, PWM ni tampoco funcionalidad en serie. Para  proyectos donde el tiempo real sea fundamental deberemos usar un arduino como controladora o programar la aplicación con otro lenguaje.

Aún así es una buena forma de practicar con el GPIO de una forma sencilla y obtener resultado rápidamente.

Instalarla en Raspbian es muy fácil:

sudo apt-get install python-rpi.gpio

En esta URL la información que necesitamos para usar la librería.

Primero cargaremos a librería,  con un nombre más corto para que nos sea más fácil de usar: 

import RPi.GPIO as GPIO

Ahora debemos indicar como vamos a referirnos a los pines, por su orden en la placa o por su nombre GPIO.

GPIO.setmode(GPIO.BOARD)  ## posición en la placa
GPIO.setmode(GPIO.BCM) ## nombre GPIO



Vamos a configurar como queremos que se comporten los pines, de entrada o de salida:


GPIO.setup(23, GPIO.IN) ## Entrada
GPIO.setup(23, GPIO.OUT) ## Salida
Ahora ya conocemos como preparar nuestro programa para que trabaje con los pines de nuestra RPi. Sólo nos falta escribir o recoger datos de esos pines. Son pines digitales por lo que dispondremos de dos estados verdadero o falso, encendido o apagado.

Modificamos el estado del pin 23:

GPIO.output(23, True)   ## activa del pin 
GPIO.output(23, False) ## desactiva el pin

recogemos el estado del pin 23:

estado = GPIO.input(23)

Con estas poquitas lineas podremos controlar estos pines dentro de nuestros programas en python.  Puede ser necesario ejecutar los scripts con permisos de administrador para tener acceso al GPIO.





No hay comentarios: