domingo, 6 de enero de 2013

Controlar un LED con los GPIOs de la Raspberry Pi

Hello World


El probable equivalente del "Hello World" de la programación común cuando trabajas con interfaces de hardware es el "LED blink", y es esto precisamente lo que tendremos listo al terminar estos pasos.

¿GPIOs? ¿cuales son? ¿como funcionan?


¡Advertencia!
Lo primero que debemos de entender es que son los GPIOs, cuales son y como funcionan antes de comenzar a usarlos, pues muchos de estos pines exponen directamente conexiones al SoC, por lo que un corto o un voltaje inducido de manera incorrecta puede causar un daño permanente a tu Raspberry Pi y de ninguna manera tomare responsabilidad por cualquier daño que sea causado inmediatamente o en el largo plazo por cualquier información publicada en este sitio.

Ahora si, GPIO son las siglas en ingles de General Purpose Inputs and Ouputs que significa Entradas y Salidas de Propósito General. Si tomamos la Raspberry Pi con los conectores USB del lado derecho y el lector de SD del lado izquierdo, encontraremos dos filas de 13 pines en la esquina superior izquierda, con el pin mas cercano al borde de la tarjeta en la fila de abajo marcado como P1. Esos 26 pines tienen funciones definidas para SPI o I2C, sin embargo, nosotros los podemos reconfigurar para que todos sean puertos digitales de entrada/salida. Nosotros podremos utilizar 17 de estos pines y configurar cada uno de ellos ya sea como puerto de entrada o de salida.

¿Que sucede con los 9 pines restantes? pues bien, son pines que entregan voltaje ya sea a 3.3V (2 pines), 5V (2 pines) o conexión a tierra (5 pines).

Para identificar los pines cuando programamos con la libreria RPi.GPIO necesitamos identificar su índice, y para esto hay dos maneras, una identificada como BCM y la otra llamada BOARD. El número que identifica al pin en el modo BCM es el que esta después de la palabra GPIO en los siguientes diagramas, el índice para identificar los pines en modo BOARD son los que están dentro del circulo. Es importante mencionar que la identificación de los pines en modo BCM cambio entre la revisión 1 y la revisión 2 del hardware.

Cabe destacar que los pines en blanco, originalmente fueron identificados como DNC (Do Not Connect) o No Conectar, pues se reservaban el derecho de cambiarlos de uso, sin embargo, cuando la revisión 2 del Modelo B de la Raspberry Pi fue distribuida al público, se confirmo y documento oficialmente la función de estos pines. Mas información al respecto en http://elinux.org/RPi_BCM2835_GPIOs en inglés.

Identificación de los GPIOs en modo BCM y BOARD en la revisión 1 del hardware


Identificación de los GPIOs en modo BCM y BOARD en la revisión 2 del hardware

Proto Board

Mi sugerencia aqui es preparar un cable plano de 26 vias de una longitud adecuada a tus necesidades, poner un conector IDC-26 hembra en uno de los extremos y en el otro separa cada uno de los hilos y soldar cuidadosamente un pin para despues recubrirlo con thermo-fit, de tal manera que se puedan conectar individualmente en el protoboard.


El Código


#!/usr/bin/env python

# Import required libraries
import time
import RPi.GPIO as GPIO

# Set up the GPIO mode
GPIO.setmode(GPIO.BCM)

# Set up header pin 6 as an input
print "Setup Pin 0"
GPIO.setup(0, GPIO.OUT)

var=1
print "Start loop"
while var==1 :
 print "Set Output False"
 GPIO.output(0, False)
 time.sleep(1)
 print "Set Output True"
 GPIO.output(0, True)
 time.sleep(1)


¿Como conectar el LED?

Como se puede ver en el código, estamos utilizando el modo BCM para la identificación de los pines individuales, por lo que el pin 0 que estamos configurando como salida es el pin que se encuentra inmediatamente a la derecha del marcado como P1 en la Raspberry Pi.

El Resultado


Creditos

Los gráficos de los GPIOs fueron tomadas de http://www.raspberrypi-spy.co.uk/2012/06/simple-guide-to-the-rpi-gpio-header-and-pins/ 

No hay comentarios.:

Publicar un comentario