Visión general GPIO

Feliz puente a todos! pinout Antes de empezar a conectar sensores y actuadores a la raspberry PI me gustaría escribir esta entrada explicando a través de qué elementos los vamos a controlar y cómo funcionan  (librerías, lenguaje..etc). Estos elementos son los llamados GPIO (General Purpose Input Output) que son esos pines colocados en dos filas que tiene la raspberry PI al lado del conector RCA. Vamos a ello!! Lo primero comentar que son y para qué sirven, estos pines son pines digitales , por lo que su lógica es binaria, es decir, ceros o unos. (Tipo matrix 010001100101001100100000111) Cuando el pin se encuentra en el estado 0 implica FALSE o NO. Cuando el pin se encuentra en el estado 1 implica TRUE o SI. ¿Cómo hace Raspberry para colocar un 1 o un 0? Existen dos tipos de familias lógicas para implementar circuitos digitales, la familia TTL y la familia CMOS. La familia TTL (Transistor-Transistor Logic) emplea una diferencia de potencial de 5V para indicar un “1” lógico y una diferencia de potencial de 0V para indicar el estado lógico “0”. La familia CMOS (Complementary Metal Oxid Semiconductor) emplea diferentes voltajes para indicar el “1” y el “0” lógico de tal forma que dependiendo del circuito esto lo indicará un voltaje de 3.3V, 5V (estaríamos funcionando de manera equivalente a un TTL +o-…), 5V , 9V, 12V… Raspberry PI utiliza la lógica CMOS a 3.3 V. En la siguiente imagen se muestra un ejemplo de lo que comento, se ve el circuito más básico jamás visto :P, consistente en una resistencia y un LED, para que esto funcione deberá circular una corriente por el circuito, por tanto, conectamos un extremo a un pin configurado como salida digital y el otro extremo al “0” llamado tierra o ground. Así se genera una diferencia de potencial y se creará una corriente que circulará por el circuito.(La resistencia es para no quemar al LED). ejemplo   Para ilustrar esto se puede hacer analogía con la presión, de tal forma que dos globos conectados por un tubo, estando un globo hinchado y el otro no, generarían una diferencia de presiones (potencial) que haría que por el tubo pasara una corriente del globo de mayor presión al globo de menor presión. Por tanto al colocar el pin en el estado lógico 1, se generan 3,3 Voltios en el pin y 0 Voltios en el ground, lo que generará la corriente que hará que el LED se encienda. De lo contrario, si colocamos en sistema en el estado lógico 0, se generan 0 Voltios en el pin salida, y como siempre, 0 V en el ground, lo que no genera corriente y por tanto no se encenderá el LED. Entonces….una vez sabido todo esto… ¿Cómo modificamos el estado de los pines en Raspberry? Hay muuuuuchas maneras de hacerlo, la más conocida es wiringPI que es una librería de acceso al GPIO compatible con programación en C y en Python. Los pasos para instalar esta librería son los siguientes: Instalamos el gestor de actualizaciones y control de versiones GIT sudo apt-get install git-core Actualizamos el programa de instalación de programas: sudo apt-get update sudo apt-get upgrade Instalamos wiringPi desde GIT git clone git://git.drogon.net/wiringPi Actualizamos WiringPi a su última versión cd wiringPi git pull origin Compilamos la librería en Raspberry cd wiringPi ./build Ahora para hacerla efectiva en el lenguaje de programación Python descargamos la segunda versión: git clone https://github.com/Gadgetoid/WiringPi2-Python.git cd WiringPi2-Python sudo python setup.py install   Y ya tenemos wiring Pi instalado, para comprobarlo hacemos:
gpio –v
deberá reportar la versión
gpio readall
nos devuelve el estado de los pines. Hay que tener en cuenta que los pines en Rasberry no se llaman igual que los pines en la librería WiringPi por lo que es importante conocer los nombres, vamos allá:   nombre   Se observa que hay 3 tipos de nomenclatura, la de la placa, la del chip de raspberry (BCM Broadcom), y la de la librería Wiring Pi. Por tanto en función de desde donde los llamemos, hay que llamarlos de una manera o de otra. A grandes rasgos, y para lo que nos ocupa en este post tenemos los siguientes tipos de pines:
  • 5 V : Proporcionará 5V continuos
  • 3.3 V: Proporcionará 3.3V continuos
  • GPIO: Pines digitales
  • 0 V: Pines dedicados a servir de referencia de potencial, ground, tierra.
En el próximo post veremos un ejemplo del uso de los GPIO de manera sencilla para afianzar estos conocimientos. Este post es un poco coñazo, pero es necesario para entender que es lo que haremos a partir de ahora 😛 Entonces….¿Que es, finalmente, lo que podemos hacer con estos pines? ……………………………………………………..Continuará  😉 ………………………………………………………………

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>