domingo, 6 de noviembre de 2016

Conector GPIO, principios básicos

Con este post voy a iniciar una serie dedicada a los conectores GPIO y el uso que podemos darles todos los post de programación y GPIO los encontraréis en el apartado Programación/GPIO del blog. Pero antes de empezar a usarlos es importante tener claros unos conceptos clave para no estropear vuestra RaspberryPi.

1. Conceptos generales

Para los no iniciados, los conectores GPIO (General-purpose input/putput) presentes en la RaspberryPi nos permiten conectar dispositivos electrónicos y controlarlos desde la RaspberryPi. Estos conectores son conexiones digitales que se pueden usar como entradas (input) o salidas (output) y que funcionan a 3,3 V. 

Los puertos GPIO al igual que la RaspberryPi han evolucionado, en los primeros modelos disponíamos de 26 conectores que posteriormente pasaron a 40. Cada uno de estos conectores se identifica mediante un número, cada uno de ellos tiene asignada una función predeterminada como por ejemplo los puertos TXD y RXD que se utilizan para conectar la RaspberryPi a otro PC mediante un cable de consola y poder acceder de forma remota.
Es importante saber el modelo de RaspberryPi que tenemos ya que algunos puertos tienen funciones diferentes y es muy importante no equivocarse ya que hay puertos con 3,3 V otros con 5 V a veces un error podría acabar con nuestro dispositivo.

1.1 Distribución puertos GPIO

Aquí tenéis unas imágenes de la distribución de los GPIO de algunos modelos. Fijaos que en las imágenes tenemos los pines numerados del 1 al 26 o del 1 al 40 según el modelo esta es la numeración BOARD de los pines (numeración que depende de la posición en la que están fijados en la placa). Pero además en los laterales tenemos unas etiquetas, estas corresponden al sistema BCM, en este caso no todos los pines tienen números, esta identificación es en base a la función por defecto que tiene cada pin GPIO.

RaspberryPi 1 Modelo B revisión 1.0



RaspberryPi 1 Modelo A/B revisión 2.0


RaspberryPi 1 Model B+


RaspberryPi 1 Model A+


RaspberryPi 2 Model B


RaspberryPi 3 Model B


Para localizar los pines debéis colocar la RaspberryPi en la posición que os muestro a continuación (modelo RaspberryPi B+)


Los pines están en la parte superior del dispositivo, en el lado izquierdo inferior tenemos el pin 1 y en el izquierdo superior el 2. Existen por internet plantillas y dispositivos que se pueden sobreponer o añadir a la RaspberryPi y poder identificar los puertos de forma fácil, por ejemplo los adaptadores cobler (unas pequeñas placas que pueden ser de muchas formas diferentes con el identificador de los pines) que junto a una faja de cables conectada a la RaspberryPi nos permiten identificar los diferentes pines, aunque no es algo imprescindible ayuda a agilizar el trabajo, aquí tenéis una imagen de una Raspberry que en los GPIO tiene una faja de conexión con un adaptador cobler y una placa de pruebas (protoboard).

Tened en cuenta que si compráis un adaptador cobler sea el que corresponde a vuestro modelo de RaspberryPi, un error en la identificación de los pines GPIO podría quemar nuestros dispositivos.

2. Riesgos de los puertos GPIO

Nuestra RaspberryPi es un dispositivo electrónico y para no dañarlo tenemos que tener cuidado al conectarle otros dispositivos electrónicos ya que podrían quemar la placa. Es importante tener en cuenta estos principios.

2.1 No manipular los conectores GPIO con un destornillador o otro objeto metálico mientras la RaspberryPi está encendida. Esto puede provocar un puente entre los pines y podríamos estropearla. La manipulación de los conectores se debe hacer con la RaspberryPi apagada y desconectada de la corriente.

2.2 No debemos conectar la RaspberryPi a una toma de corriente que supere los 5 V.

2.3 No hay que conectar a los puertos GPIO ningún dispositivo que pueda introducir más de 3,3 V al conector.

2.4 No debemos conectar ningún dispositivo a los puertos GPIO, que demande más de 3 mA por conector.

2.5 En total no podemos demandar a los puertos GPIO de 3,3 V más de 50 mA.

2.6 En total no podemos demandar a los puertos GPIO de 5 V más de 250 mA.

Cada vez que queramos conectar otros dispositivos deberíamos comprobar estos principios básicos, no seguirlos significaría acortar la vida de la RaspberryPi (en el mejor de los casos) o quemarla.

Para más información aquí os dejo un link

http://www.thebox.myzen.co.uk/Raspberry/Understanding_Outputs.html


3. Librerías para utilizar los conectores GPIO  con Python

Para poder interactuar con los conectores GPIO es necesario configurarlos en función del lenguaje que vamos a utilizar. En mi caso utilizo las librerías del lenguaje Python RPi.GPIO. Tenéis una serie de posts sobre Python en este mismo blog para aprender a utilizar este lenguaje en el apartado Programación
Para asegurarnos que las tenéis instaladas y actualizadas, desde la RaspberryPi abrid una pantalla de terminal y introducid la orden

sudo apt-get install python-dev

presionamos Intro en el teclado y esperamos a que se instale. Luego introducid esta orden

sudo apt-get install python-rpi.gpio

presionamos Intro en el teclado y esperamos a que se instale, en el caso de que ya estén instaladas las librerías, sencillamente se actualizarán a la última versión.
Existen alternativas a la biblioteca RPi.GPIO, como por ejemplo wiringpi o gpiozero, sin embargo creo que la RPi.GPIO es más completa y nos otorga más control. Por otro lado si aprendéis a usar la RPi.GPIO más adelante podréis utilizar wiringpi o gpiozero sin ningún tipo de problema.


4. Complementos recomendados

Para seguir adelante, aunque no es imprescindible, os recomiendo que dispongáis de los siguientes elementos (o parecidos) para poder trabajar de manera ágil.

4.1 Placa de pruebas (protoboard)


las hay de varios tamaños, os recomiendo una de tamaño grande, son económicas, facilitan el trabajo (evita que tengamos que hacer soldaduras) y ayudan a organizar los circuitos. A ambos lados tenemos una serie de conexiones interconectadas entre sí verticalmente (las que están junto a la línea roja se suelen usar para el polo positivo, y las que están junto a la línea azul para el negativo o tierra). Los conectores de la parte central se dividen en dos grupos, las conexiones de cada grupo están conectadas entre sí de forma horizontal. En la siguiente imagen podéis ver como están conectadas




4.2 Cables hembra-macho, macho-macho

si disponéis de cables para la protoboard mejor, aquí os dejo una imágen de cables, macho-macho


y aquí una de un cable macho-hembra


Estos cables nos facilitan el trabajo vienen en packs de distintos tamaños y colores y son económicos, si los tenéis que comprar os recomiendo que sean de estos dos tipos.

4.3 Resistencias

Uno de los elementos más importantes son las resistencias, que pueden ser de muchos tipos. Estos elementos en nuestro caso sirven principalmente para controlar la intensidad eléctrica y evitar quemar los dispositivos que estemos usando. Para entenderlo fácilmente, nuestra RaspberryPi a través de los GPIO puede emitir más de 1,7 voltios, si por ejemplo conectáramos directamente un led podemos provocar que se queme el led y la RaspberryPi, para limitar la intensidad de la corriente usaremos las resistencias, según el dispositivo que conectemos a la RaspberryPi necesitaremos más o menos intensidad de manera que tendremos que usar resistencias de mayor o menor capacidad. El aspecto de las resistencias es este (en nuestro caso veréis que son bastante pequeñas)



en algunos casos es posible que necesitéis calcular la capacidad de impedancia de una resistencia, esto se hace a partir de las franjas de colores que poseen, aquí os dejo un excelente link para facilitaros las cosas (tiene una calculadora para resistencias de 4, 5 i 6 bandas)

http://www.digikey.com/es/resources/conversion-calculators/conversion-calculator-resistor-color-code-4-band


4.4 LED o ligth-emitting diode

Los leds son otro dispositivo que vamos a usar, los hay de diferentes colores, algunos incluso pueden emitir diferentes colores. Los más básicos tienen dos pines de conexión uno positivo y otro negativo y emiten un solo color. Aquí tenéis una imagen



generalmente la conexión más larga corresponde al polo positivo, en el caso de que sean iguales, a veces hay una marca en el led que indica el polo positivo. Si no lo podéis identificar no hay problema, si está bien conectado se iluminará, en caso contrario simplemente no funcionará, solo tenéis que cambiar la conexión y listo


4.5 Otros dispositivos o complementos

A parte de los complementos básicos que os he ido indicando en el post evidentemente necesitaremos otros elementos para poder interactuar con nuestra placa. Existen muchos packs de iniciación para RaspberryPi, con leds, resistencias, cables, sensores, pantallas etc. Són bastante económicos. En los próximos posts iremos aprendiendo como usarlos con nuestra RaspberryPi.